Descripción para la implementación de multiblockchain en DIDI
Descripción para la implementación de multiblockchain en DIDI
Networks soportadas
- rsk
- lacchain
- bfa
- ethereum (opcional)
Funcionalidades
Alta y delegación
- El Issuer indica por variable de entorno la blockchain (URL y address de SC) elegida.
- El Issuer se da de alta en DIDI,donde su did va acompañado por el prefijo que indica la blockchain elegida. Además envía el nombre con el que DIDI va a identificarlo (y que aparecerá en las credenciales) que DIDI mostrará a terceros.
- DIDI almacena en su base de datos el DID del Issuer, el nombre, y el estado de la transacción sobre la blockchain.
- DIDI genera una transacción (addDelegate) que lo agrega como delegate válido (basado en el did pasado por el issuer)
- DIDI modifica el estado de la transacción para ese issuer.
Revocación
Existe una forma de revocación de un issuer, que se realiza on-chain.
Para ello:
- DIDI realiza llama a la función revokeDelegate del SC de uPort.
- DIDI marca a dicho issuer como revocado.
Validación de la delegación on-chain
Con el did almacenado en la DB ejecuto una función del BlockchainService.
Archivos afectados por el refactor
Principales
- DIDI-SSI-Issuer-Module/issuer-back/services/BlockchainService.js
- DIDI-SSI-Server/services/BlockchainService.js
Secundarios
- DIDI-SSI-Server/services/MouroService.js
- DIDI-SSI-Server/routes/IssuerRoutes.js
- DIDI-SSI-Server/constants/Constants.js
- DIDI-SSI-mouro_didi/src/lib/schemaMgr.ts
- DIDI-SSI-mouro_didi/src/lib/blockChainMgr.ts
- DIDI-SSI-Issuer-Module/issuer-back/services/MouroService.js
Tareas
- Debe crease un modelo en DIDI para los issuers dados de alta (name - did - status).
- Crear un DIDI-SSI-BlockchainManager (con código actual de DIDI, Issuer y Mouro).
- Pensar la arquitectura e interfaz de ese nuevo repositorio para que soporte, de forma abstracta, multiblochain
- Se crearán distintos servicios específicos de cómo pedir gas, etc., para cada blockchain soportada.
- El usuario del BlockchainManager eligirá qué modulo específico utilizará.
- El default será la actual testnet de RSK.
- Debe solucionarse el actual problema de los recorridos sobre eventos on-chain.