14/06/2024 - Meeting Notes Libs
Asistentes:
@Garcia-Alvarez Roberto
@Juan Tavira
@Daniel de la Sota Blanchart
@Juan Luis Gozalo
@Alejandro Alfonso
@Alejandro Nieto Gallego
@Francisco Cardeñoso Perez
@Iraia Olabarrieta Eduardoest
PUNTOS DEL DÍA:
Sesión extraordinaria, convocada por @Garcia-Alvarez Roberto ya que detectó un error en la versión 2.2.1 de los smart contracts de Alastria.
Error en el Smart Contract Alastria Name Service: Debido a los
AdminUpgradeabilityProxy
de openzeppelin, los smart contracts no se pueden inicializar. Este smart contract recibe en el constructor un parámetro, que es una address de la entidad que se debería dar de alta como entidad en el smart contract. Debido a que no se puede inicializar, y por tanto no hay ninguna entidad dada de alta en el smart contract, este queda inutilizado ya que, ninguna entidad esta dada de alta, y el smart contract tiene un modifier que impide dar de alta entidades, si quien da de alta no es entidad.Se crea la siguiente tarjeta para dejar reflejado el error encontrado: Initialization Alastria Name Service · Issue #13 · alastria/alastriaID-hardhat-contracts
Para solucionar este problema existen diferentes alternativas:
Eliminar el proxy del Alastria Name Service. Esta opción se ha probado por @Garcia-Alvarez Roberto y por @Daniel de la Sota Blanchart , pero aún hay que cubrir otra casuística, y es el address que hay que pasar como parámetro es el Alastria Proxy de la entidad y no el EOA. Para poder hacer esto, es necesario hacer una consulta al identityKeys del Alastria Identity Manager, para en base al EOA obtener el Alastria Proxy y así poder pasar por parámetro ese valor. Para este segundo problema habría que cambiar el despliegue y meterlo dentro de la función de inicialización, para poder consultar al identityKeys. Queda pendiente realizar esta prueba.
Otra solución es cambiar el constructor por una función de inicialización como en el resto de smart contracts, con la salvedad de que el Alastria Name Service necesita un address para inicializar dicho smart contract y no un número de la versión del smart contract. Si la alternativa anterior no hubiera surtido efecto, habría que estudiar la viabilidad de esta alternativa.
Por ultimo, otra posible solución es quitar el modificador de la función addEntity, para que cualquiera pueda dar de alta una entidad, y a lo mejor cambiarlo por el modificador onlyOwner. Esta alternativa a priori se descarta debido a que o deja el smart contract sin seguridad o incluye una seguridad muy restrictiva.