Aries Dev Network

(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:

http://localhost:9000

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