Come creare un'applicazione su blockchain usando Hyperledger

Foto di Sasha su Unsplash

Costruiremo una banca digitale usando Hyperledger Composer. Avrà clienti e account. Alla fine, sarai in grado di trasferire fondi e registrare tutte le transazioni su blockchain. Esporremo un'API RESTful per lo stesso, in modo che anche una persona che non abbia idea di cosa sia la blockchain possa creare una bella interfaccia utente (UI) attorno ad essa. Creeremo anche l'interfaccia utente di questa applicazione in angolare.

Sono molto entusiasta di condividere questa guida passo-passo con te. Quindi iniziamo subito!

Fonte: https://giphy.com/explore/excited

Quando stavo scrivendo questo codice per la prima volta, mi sono imbattuto in errori. Molti e molti. Ma penso che sia buono, perché mi ha fatto imparare molte cose. Gli errori sono essenziali. Sono arrivato al punto in cui ho sentito che accenderlo e spegnerlo avrebbe migliorato le cose. Mi ha quasi fatto perdere la testa, ma è parte integrante della vita di ogni hacker.

Prima di iniziare, devi assicurarti che la macchina che stai utilizzando sia dotata delle configurazioni richieste. Potrebbe essere necessario scaricare determinati prerequisiti e configurare un ambiente di sviluppo di base. Di seguito sono riportati i collegamenti per farlo. Segui questi passaggi prima di iniziare a sviluppare un'applicazione, altrimenti ti imbatterai sicuramente in errori stupidi.

Prima installa il compositore Hyperledger. Quindi installare l'ambiente di sviluppo.

Non è necessario avviare Playground durante l'installazione dell'ambiente.

Assicurati che la finestra mobile sia in esecuzione e quando esegui ./startFabric.sh ci vorranno un paio di minuti. Quindi sii paziente.

Ora che la tua macchina è pronta, possiamo iniziare a scrivere codice!

Fonte: http://www.forthebrokenhearted.net/170254395/4208888/posting/

Passaggio 1: delinea la tua rete aziendale

La nostra Business Network Definition (BND) è costituita dal modello di dati, dalla logica delle transazioni e dalle regole di controllo degli accessi. Il modello di dati e le regole di controllo degli accessi sono codificati in un linguaggio specifico del dominio (che è molto semplice da recuperare). La logica della transazione sarà codificata in JavaScript.

Per creare un BND, dobbiamo creare una struttura di progetto adatta su disco. Creeremo una rete aziendale scheletrica usando Yeoman. Per creare una struttura di progetto, apri il tuo terminale ed esegui il seguente comando:

$ yo hyperledger-compositore

Questo risolverà una serie di domande come segue. Ti verrà richiesto di utilizzare i tasti freccia per spostarti tra le risposte.

Apri questo progetto nel tuo editor di testo preferito. Sto usando Visual Code. Ecco come sarà la struttura del file:

Elimina il contenuto di test / logic.js. Non lo useremo al momento.

Passaggio 2.1: codifica della nostra rete aziendale (modelli / test.cto)

Innanzitutto, definiremo modelli / test.cto. Contiene le definizioni di classe per tutte le risorse, i partecipanti e le transazioni nella rete aziendale. Questo file è scritto in Hyperledger Composer Modeling Language.

test dello spazio dei nomi
asset account identificato da accountId {
o String accountId
-> Proprietario del cliente
o Doppio saldo
}
cliente partecipante identificato da customerId {
o String customerId
o Nome stringa
o String lastName
}
transazione AccountTransfer {
-> Account da
-> Conto a
o Doppio importo
}

Account è un asset identificato in modo univoco con accountId. Ogni account è collegato al cliente che è il proprietario dell'account. Il conto ha una proprietà di saldo che indica quanti soldi detiene il conto in qualsiasi momento.

Il cliente è un partecipante identificato in modo univoco con customerId. Ogni cliente ha nome e cognome.

AccountTransfer è una transazione che può avvenire da e verso un Conto. E la quantità di denaro da trasferire viene memorizzata in quantità.

Passaggio 2.2: codifica della rete aziendale (lib / logic.js)

In questo file, aggiungeremo la logica di transazione in JavaScript.

/ **
* Transazione di esempio
* @param {test.AccountTransfer} accountTransfer
* @transaction
* /
funzione accountTransfer (accountTransfer) {
if (accountTransfer.from.balance 
accountTransfer.from.balance - = accountTransfer.amount;
accountTransfer.to.balance + = accountTransfer.amount;
return getAssetRegistry ('test.Account')
.then (function (assetRegistry) {
return assetRegistry.update (accountTransfer.from);
})
.then (function () {
return getAssetRegistry ('test.Account');
})
.then (function (assetRegistry) {
return assetRegistry.update (accountTransfer.to);
});
}

@param {test.AccountTransfer} accountTransfer è il decoratore che mettiamo nella parte superiore del file per collegare la transazione con la nostra funzione JavaScript. Quindi convalidiamo se l'account in cui sono presenti fondi ha abbastanza denaro. Altrimenti, verrà generato un errore. Quindi eseguiamo l'aggiunta e la sottrazione di base sul saldo del conto.

A questo punto, il passaggio più importante è aggiornare questo sulla blockchain. Per fare questo chiamiamo getAssetRegistry API delle nostre risorse che è Account. Quindi aggiorniamo l'assetRegistry recuperato sia per l'account che distribuisce i fondi sia per l'account che riceve i fondi.

Passaggio 3: generare Business Network Archive (BNA)

Ora che la rete aziendale è stata definita, deve essere impacchettata in un file di archivio di rete aziendale distribuibile (.bna).

Passaggio 3.1: accedere all'app del banco di prova nel terminale.

Passaggio 3.2: eseguire il comando seguente:

$ compositore archivio create -t ​​dir -n.

Questo crea un file .bna nella cartella del banco di prova.

Passaggio 4: distribuire il file di archivio della rete aziendale sul Fabric

Passaggio 4.1: installare il runtime del compositore

$ composer runtime install --card PeerAdmin @ hlfv1 --businessNetworkName test-bank

Passaggio 4.2: distribuire la rete aziendale

$ composer network start --card PeerAdmin @ hlfv1 --networkAdmin admin --networkAdminEnrollSecret adminpw --archiveFile test-bank@0.0.1.bna --file networkadmin.card

(Assicurati di essere nella cartella del banco di prova).

Passaggio 4.3: importare l'identità dell'amministratore di rete come una scheda di rete aziendale utilizzabile

$ composit card import --file networkadmin.card

Passaggio 4.4: per verificare che la rete aziendale sia stata distribuita correttamente, eseguire il comando seguente per eseguire il ping della rete:

$ compositore ping ping --card admin @ test-bank

PASSAGGIO 5: esporre un'API RESTful

Per creare un'API RESTful dalla riga di comando, eseguire il comando seguente:

$ composer-rest-server

Questo farà molte domande.

Ora punta il tuo browser su http: // localhost: 3000 / explorer.

Vedrai la tua bellissima API blockchain.

Ora aggiungiamo due clienti.

Pugno, aggiungiamo un cliente di nome Niharika Singh:

Riceviamo un codice di 200 risposte.

Ora aggiungeremo il cliente di nome Tvesha Singh in modo simile.

Per verificare se li hai aggiunti correttamente, OTTIENI.

Vedrai due clienti nel corpo della risposta.

Ora aggiungiamo 2 account collegati a questi due clienti.

Aggiungi account in questo modo. Ora, FARLI per controllare se li hai aggiunti correttamente.

Ora trasferiamo 75 da Niharika a Tvesha.

Controlliamo se il saldo viene aggiornato ottenendo le informazioni sull'account.

Viola! Funziona. Niharika ne ha ora 25 e Tvesha ne ha 125.

Step 6: Frontale angolare

Per creare automaticamente impalcature angolari, eseguire il comando seguente nella cartella banco di prova:

$ yo

Questo farà più domande.

E ci vorranno un paio di minuti.

Passa all'app della banca.

$ npm inizio

Questo avvia il server angolare.

La struttura del file angolare viene creata come segue:

Punta il tuo browser su http: // localhost: 4200. Ecco dove sta accadendo la magia! Vedrai questa schermata:

Ora vai su Risorse nell'angolo in alto a destra e fai clic su Account.

Questi sono gli account esatti che abbiamo creato.

Quindi ora puoi giocare con questo.

Hai il tuo front-end e il tuo back-end pronti!

Tutte le transazioni che avvengono su localhost: 3000 si riflettono su localhost: 4200 e viceversa. E questo è tutto su blockchain.

Fonte: https://giphy.com/explore/thats-how-its-done

Di recente ho scritto un articolo sui casi d'uso della blockchain. Ho elencato e spiegato circa 20 idee. Si possono trovare qui:

Se hai un'idea imprenditoriale e vuoi concretizzarla con tecnologia e dettagli architettonici, non esitare a contattarmi a niharika.3297@gmail.com