Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Transaction has been reverted by the EVM en exampleFirstEntity #107

Closed
jcarovestigia opened this issue Nov 3, 2020 · 12 comments
Closed
Assignees
Labels
documentation Improvements or additions to documentation

Comments

@jcarovestigia
Copy link

Buenas noches. Intento sin éxito montar un sistema de identidad Alastria. Entiendo que debo comenzar por crear una primera entidad emisora de identidades, y he supuesto que debo ejecutar los scripts del ejemplo "exampleFirstEntity". Me encuentro, sin embargo, con que la EVM me tira (revert) los intentos de ejecutar prepareAlastriaID, ejecutado por la dirección "owner" (dirección con la que he desplegado los contratos, con el script 2.deployUpdateContracts.js) con otra dirección "entity1" como parámetro. Deduzco que se debe a que la dirección owner no está lógicamente en el mapping identityKeys (identityKeys[owner]==address(0)). ¿Cómo se hace? ¿Debo hacer operaciones previas? Las direcciones de contratos y cuentas, así como los ficheros UTC y claves están modificados aparentemente correctamente en los ficheros de configuración correspondientes.

@jcarovestigia
Copy link
Author

Acabo de caer en la cuenta: no se deben desplegar nuevos contratos, sino usar los existentes ¿no? De todas formas ¿cómo se haría, partiendo de cero? ¿Cómo se registraría la dirección owner en identityKeys?

@VictorNS69 VictorNS69 self-assigned this Nov 4, 2020
@VictorNS69 VictorNS69 added the documentation Improvements or additions to documentation label Nov 4, 2020
@VictorNS69
Copy link
Contributor

VictorNS69 commented Nov 4, 2020

Entiendo que estás hablándome de la rama master, ¿no?

Hola, la verdad es que este fallo que estás teniendo es porque no está bien documentado. Para la siguiente versión de contratos, se hará automaticamente todo.

El problema es que la cuenta con la que has desplegado no es issuer (su proxy). En los contratos de master, no se hace automáticamente.

Para hacer la cuenta de despliegue issuer, tienes que lanzar un script después de desplegar. El script lo puedes encontrar en esta PR alastria/alastria-identity#125, pero tienes que cambiar ciertos datos (en tx1, tx2 y tx3). Este script se ejecuta con truffle exec setAdminProxy.js --network <red en el truffle.config>

@jcarovestigia
Copy link
Author

Muchas gracias, pero no me funciona. Sigue dando el mismo error. Probablemente estoy configurando mal los tx_, aunque no me da fallo el script. ¿Crees que sería mejor que usara los contratos de la rama develop?

@VictorNS69
Copy link
Contributor

De momento usa rama Master, ya que Develop está en desarrollo ahora mismo. Tendría ya que mirar más en detalle lo que has montado. No sé si mejor hablarlo por slack o similar.

Si no, podemos continuar por aquí con capturas de pantalla

@jcarovestigia
Copy link
Author

Espera, ya veo el problema. El script alastria/alastria-identity#125 hace "IdentityIssuer" a la dirección del proxy de la cuenta admin, no a la dirección de admin (esto es necesario porque transactionFactory llama a prepareAlastriaID a través del proxy, con una llamada no delegada, y esta llamada exige que el solicitante (el proxy) sea IdentityIssuer). ¡Pero yo no tengo la dirección del proxy de admin!! ¿De dónde la saco?

@VictorNS69
Copy link
Contributor

Exacto, lo vas pillando. Con tx1 y tx2 se crea el proxy. Una vez creado, tienes que mirar el contrato (usando remix-ide o por código) el mapping identityKeys que le pasas el address (del keystore) de la cuenta (admin en este caso) y te devuelve su proxy address.

De nuevo perdona que falte documentación sobre todo este tema 😞

@jcarovestigia
Copy link
Author

jcarovestigia commented Nov 6, 2020

No sé cómo verlo con remix ¿Puedo añadir una funcion view al contrato https://github.com/alastria/alastria-identity/blob/master/contracts/identityManager/AlastriaIdentityManager.sol que me la dé? por ejemplo:
function myIdentity() public view returns(address mine){ mine=address(identityKeys[msg.sender]); }
¿O eso comprometería de alguna forma la privacidad de los datos o el modelo de Alastria ID?

@VictorNS69
Copy link
Contributor

No hay necesidad de eso que pides. En el contrato, el mapping que necesitas consumir es público, es decir, cualquiera puede leerlo.
https://github.com/alastria/alastria-identity/blob/da37badfc1a8d7f6ef52cb5261d25b8d55622cd4/contracts/identityManager/AlastriaIdentityManager.sol#L19

Si no conoces remix-ide, puedes leer documentación aquí. Es fácil de utilizar. https://remix-ide.readthedocs.io/en/latest/create_deploy.html

Si no, solo tienes que llamar (hacer una call) al mapping que te comento, al igual que llamas a otra función.

@jcarovestigia
Copy link
Author

Funcionó al fin. Muchas gracias.

@VictorNS69
Copy link
Contributor

Perfecto, cierro el issue.

@rosdec
Copy link

rosdec commented Nov 17, 2020

Hi @jcarovestigia it seems you've succeded in what we are currently trying to do, deploying Alastria Identity smart contracts on a private blockchain starting from scratch. Would you mind to share with me which the correct sequence of scripts to be called to happily deploy the smart contracts?

Thank you in advance

@jcarovestigia
Copy link
Author

Gladly. But actually I didn't deploy it on a private blockchain, but in Alastria Telsius blockchain.
If that's your case, start downgrading your nodejs to 10.23.0. Clone https://github.com/alastria/alastria-identity.git and install with npm install, as recommended. Create an "admin" account in the blockchain. Modify "config.json": "nodeURLAlastria", "addressPwdAlastria" and "addressPosition" as appropriate (be sure you get the correct index of your admin account in eth.accounts). Deploy contracts with node 1.flattenContracts.js, then node 2.deployUpdateContracts.js. Now you should get the contracts addresses. Tell me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Projects
None yet
Development

No branches or pull requests

3 participants