(per ottenere gli script contattaci oppure attendi la pubblicazione sul nostro profilo github)
Hyperledger Aries
Hyperledger Aries è un infrastruttura peer-to-peer, distribuita, per la creazione, salvataggio e gestione di credenziali digitali verificabili.
Hyperledger Aries utilizza sia Hyperledger Ursa che Hyperledger Indy.
Ursa è una libreria crittografica mentre Indy permette di implementare una blockchain per la storicizzazione delle credenziali decentralizzate.
In questo esempio vedremo come servirci del framework in un caso d’uso locale:
Strumenti utilizzati :
- Docker
- Von-Network Project
- Aries Cloud Agent (versione Python ACA-PY)
- PostgresDB
Docker
Utilizzeremo Docker per poter virtualizzare in locale la von-network, gli agenti Aries e un Database Postgres.
maggiori informazioni: Docker Docs
Von-Network
Von-network è un progetto opensource che permette in modo semplice, veloce e portabile, di avviare un’istanza di Indy.
Per poterlo fare bisogna clonarsi il progetto von-network da GitHub
cd von-network
Solamente la prima volta lanciare il comando dalla cartella principale del progetto, questo comando serve per scaricarsi le immagini docker necessarie
./manage build
Successivamente si può avviare la propria network in locale lanciando il comando
./manage start
Aggiungendo il tag --logs
si avrà maggiore visibilità sui logs dei peers appena avviati.
Sarà possibile accedere alla ui dello stato della network dal seguente link:
dal web server puoi:
- Controllare lo stato dei nodi della network
- Vedere i genesis file della network
- Creare un DID
- Controllare i 3 ledger che compongono la rete Indy:
- The Domain ledger, dove i DIDs, schema, etc. risiedono.
- The Pool ledger, dove i nodi della rete vengono tracciati.
- The Config ledger, dove i cambi di configurazione della rete vengono tracciati.
dalla interfaccia web sarà necessario tramite un seed a propria scelta (esempio : d_000000000000000000000000Issuer
) creare il DID pubblico che servirà per creare una connessione tra i due agenti Aries
Per fermare la blockchain invece utilizzare
./manage stop
Dopo averla stoppata basterà lanciare il comando di start visto in precedenza per riavviare nuovamente i peer della network
Aries Cloud Agent ACA-PY
ACA-Py integra e supporta la maggior parte delle funzionalità del framework Aries, come il rilascio, la verifica e il salvataggio delle credenziali usando sia Indy AnonCred che lo standard di credenziali verificabili W3C
Nel nostro caso abbiamo creato un server NestJS che comunica con ACA-Py, al quale manda richieste HTTP e riceverà delle notifiche di risposta in forma di webhooks
Aries Cloud Agent quindi è un software tool in Python per l’integrazione e l’implementazione di agenti Aries e controllers.
PostgresDB
Occorre avere un istanza di un container docker con postgres 11. Gli agenti aries al momento del provisioning creeranno un nuovo database ciascuno.
maggiori informazioni: PostgresSQL
Setup & Starting
Nel nostro caso avremo due Agenti Aries, l’Holder e l’Issuer, quest’ultimo avrà anche il ruolo di Verifier.
Avremo bisogno di 4 file configurazione yaml per le variabili d’ambiente degli agenti, due per ogni agente, uno per il provisioning e uno per lo starting. Degli esempi sono sotto la cartella ./poc_args_file
- holder_provision.yaml
- holder_start.yaml
- issuer_provision.yaml
- issuer_start.yaml
Quindi eseguire lo script bash run_all.sh
per avviare tutto.
cd ./scripts
./run_all.sh
Questo script esegue 3 step principali :
- esegue o inizializza il container docker con PostgresDB
- controlla se sono già stati fatti i provisioning dei due agenti, se no li esegue.
- esegue i due agenti
quindi avremo 3 container docker in running, ovvero quello postgres e i due agenti.
A questo punto per verificare il corretto avvio dei due agenti occorre accedere alla rispettive pagine SwaggerUI, raggiungibili dai due seguenti link:
- http:localhost:8021/api/doc
- http:localhost:8031/api/doc
mentre si può utilizzare qualsiasi client per PostgresSQL per analizzare il database, per esempio: DBeaver
- localhost:5432
Ogni volta quindi che si vuole restartare la propria rete Aries semplicemente occorrerà avviare questo script. Automaticamente verranno controllati i dati precedentemente creati sulla propria macchina
SchemaBuilder
Software in Java 11 composto da:
- CreateConnection
- creazione e inizializzazione della connessione tra agenti aries
- CreateCredential
- creazione di uno schema di credenziali
- CreateProofRequest
- creazione di una prova di richiesta di credenziali
- IssueCredential
- rilascio delle credenziali
- VerifyCredential
- verifica delle credenziali
compilando ed eseguendo queste classi Java è possibile in modo semplice creare una connessione e creare un nuovo schema di credenziali. Successivamente sono predisposte le chiamate per il rilascio e la verifica di una credenziale aries.
CONCLUSIONI
Questa suite di script e configurazioni è stata creata per poter avviare e riavviare (senza perdita di dati), in locale, in modo semplice e veloce un istanza di una blockchain Indy che comunica con gli agenti Aries. In più lasciamo a disposizione una serie di classi Java per poter inizializzare le connessioni e le credenziali. Tutto ciò permette di poter testare e sviluppare nuove funzionalità in base alle proprie necessità utilizzando il Framework Hyperledger Aries.
Authors: Luca Peano, Filippo Piscitelli