Express uPort como javascript: establezca el hash IPFS en el contrato de registro

uPort es un proyecto famoso de Ethereum. En mi opinión, uPort es la plataforma de identidad autónoma más exitosa en blockchain. Por eso, creo que comprender su estrategia es útil para nuestra carrera.

Expreso contratos uPort e IPFS u otros objetos como javascript. Luego simulo cómo funciona uPort. Honestamente, no estoy seguro de que mi comprensión sea correcta a pesar de que me cuidé de ser exacto el mayor tiempo posible al referirme al documento técnico, a Github y a los documentos oficiales. Consulte los documentos para obtener información precisa.

Esta vez, me concentro en el proceso de cómo crear un contrato de proxy o hash de IPFS y establecer el hash en el contrato de registro.

Código en Github: uport-contract-js

Siguiente publicación: Express uPort como javascript – Transmitir transacción a Dapp de terceros

Divídalo en seis pasos

Divido todo el proceso en 6 pasos.

1. Crear objeto de usuario.

Al principio, creo un objeto de usuario que es definido por mí (no uPort). El objeto de usuario contiene el objeto Proxy y la clave privada y los sujetos de JWT (identificación de JWT).

2.Crear Proxy como identidad

Proxy es un contrato de identidad en uPort. Cada individuo tiene un contrato de apoderado. El proxy es creado por el contrato del controlador cuyo nombre es IdentityManager. El usuario envía la transacción a este contrato.

Dentro de IdentityManager, se generó el contrato de proxy. Tenga en cuenta que el remitente de la transacción (msg.sender) para la generación de proxy es IdentityManager, por lo que el propietario de Proxy es IdentityManager.

3. Generar JWT

JWT (Json Web Token) se usa comúnmente como autenticación de identidad como OpenID. uPort usa JWT para lograr la verificación fuera de la cadena.

Desde el principio, defino el formato JWT de la siguiente manera. Este formato es un poco diferente al papel blanco. Primero, cambio los nombres de propiedades como “Asunto” a “sub”, porque JWT RFC define así para reducir el tamaño del token. En segundo lugar, cambio el contenido dentro de la carga útil para simplificarlo.

Pase al proceso de generación. Primero, el usuario define un sujeto único para distinguir los tokens creados. Luego, use crear carga útil como el formato anterior. A continuación, el usuario genera una clave privada para firmar JWT. Tenga en cuenta que debemos utilizar la curva “secp256r1” de ECDSA, en lugar de “secp256k1”. Ya mencioné esto en otra publicación de blog.

4. Agregar atestación a IPFS

La atestación contiene JWT y una clave pública; lo que es más importante, la atestación está alojada en IPFS para que cualquiera pueda acceder a través de Internet. Los terceros verifican JWT recuperando la clave pública de la atestación.

El formato de certificación es el siguiente.

Continúe con el proceso de adición. Primero, cree una clave pública comprimida y compile una atestación siguiendo el formato anterior. Luego, agréguelo al objeto IPFS.

5. Registre el hash IPFS en el contrato UportRegistry

UportRegistry es un contrato que se utiliza como registro para almacenar hashes IPFS. Los terceros acceden a este contrato y obtienen un hash que se corresponde con la carga útil de JWT. Tenga en cuenta que el usuario no se registra directamente, sino que se registra a través de IdentityManager. Además, IdentityManger reenvía la transacción al proxy del usuario para que el msg.sender final sea el proxy.

En la función de reenvío dentro del contrato de proxy, defino el nombre de la clase y el nombre de la función como argumentos para distinguir qué función debe ejecutarse.

Finalmente, se llama a la función Set del contrato UportRegistry. Tenga en cuenta que el hash de IPFS se almacena dentro del registro como esta estructura.

registry[IdentigyManager.address][Proxy.address][Subject]

6. Verificar JWT por un tercero

Permítame explicarle cómo verificar el uso de JWT por parte de un tercero. Al principio, un tercero decodifica JWT y recupera la carga útil. Luego, obtenga el hash correspondiente.

A continuación, obtenga la clave pública de IPFS. Ahora, un tercero puede verificar JWT.

Obtenga las mejores ofertas de software directamente en su bandeja de entrada