12/04/2024 - Meeting Notes Libs

Asistentes:

  • @Garcia-Alvarez Roberto

  • @Juan Tavira

  • @Alejandro Alfonso

  • @Pablo Vela

  • @Astor Ayllon Lazaro

PUNTOS DEL DÍA:

  • @Garcia-Alvarez Roberto explica la situación del estado de la versión 2.2 del modelo de identidad Alastria ID. @Alejandro Alfonso comenta que a lo mejor pueden dedicar algún tiempo a acometer las tareas que faltan para cerrar la versión 2.2.

  • @Garcia-Alvarez Roberto se da cuenta de un fallo en los smart contracts, concretamente en la función de creación de identidad https://github.com/alastria/alastriaID-hardhat-contracts/blob/v2.2/contracts/identity/AlastriaIdentityManager.sol#L74C1-L96C6 ya que, la nueva versión de la función CreateAlastriaIdentity debería de recibir como parámetro un hash de la clave pública ya que es lo que espera la función del PublicKeyRegistry. Como se puede visualizar en el código mostrado a continuación, la función createAlastriaIdentity espera un string, mientras que la función addPublicKey espera un bytes32, y no se realiza ningún tipo de conversión internamente. De hecho, en el encode del parámetro se indica que el parámetro es de tipo string ("addPublicKey(string, uin256)", publicKey, format). Por lo que es necesario actualizar el smart contract para corregir la función createAlastriaIdentity del AlastriaIdentityManager.

    FUNCIÓN DEL SMART CONTRACT DEL IDENTITY MANAGER QUE LLAMA A LA FUNCIÓN DEL PUBLIC KEY REGISTRY /** * @dev Creates a new AlastriaProxy contract for an owner and recovery and allows an initial forward call which would be to set the registry in our case * @param publicKey to be encoded in PublicKeyRegistry call from IdentityManager */ function createAlastriaIdentity(string memory publicKey, uint256 format) public validAddress(msg.sender) isPendingAndOnTime(msg.sender) { AlastriaProxy identity = new AlastriaProxy(); identityKeys[msg.sender] = address(identity); pendingIDs[msg.sender] = 0; bytes memory addPublicKeyCallData = abi.encodeWithSignature("addPublicKey(string, uin256)", publicKey, format); identity.forward(address(alastriaPublicKeyRegistry), 0, addPublicKeyCallData);//must be alastria registry call } ------------------------------------------------------------------------ FUNCIÓN DEL SMART CONTRACT DEL PUBLIC KEY REGISTRY function addPublicKey(bytes32 publicKeyHash) public { require(!publicKeyRegistry[msg.sender][publicKeyHash].exists); uint changeDate = block.timestamp; publicKeyRegistry[msg.sender][publicKeyHash] = PublicKey( true, Status.Valid, changeDate, 0 ); }
  • @Juan Tavira muestra una ppt donde explica el Identity Model Overview incluyendo las mejoras y puntos fuertes que incluye la solución de EPIC.

  • @Astor Ayllon Lazaro comenta que quieren iniciarse e implementar una solución utilizando el modelo de identidad de Alastria y pregunta al equipo por donde empezar. @Juan Tavira comenta que hay unos videos de otras sesiones donde se explica todo el modelo y que intenta recuperarlos para compartirlos. Además comenta que si tienen cualquier duda que siempre se puede montar una reunión para resolver dichas dudas. Por otro lado, @Garcia-Alvarez Roberto comenta que lo esencial primero es entender bien el modelo en cuanto a roles, artefactos y objetos, y luego ya entrar a ver el código de los smart contracts, de las librerías y examples. Por último comparte los siguientes enlaces, recordando que la lib y examples no están tirando a la versión 2.2, están tirando a la versión 2.1: