Une application NodeJS pour communiquer avec une blockchain Hyperledger Fabric

0

Après une partie 1 sur la mise en place de la bockchain et une partie 2 sur le déploiement d’un chaincode, il faut maintenant pouvoir communiquer avec notre chaine de blocs pour qu’elle devienne pleinement utile (sans devoir lancer les commandes peer à chaque fois comme nous l’avons fait à l’étape 6 du premier tutorial) , c’est ce que nous allons faire dans cette troisième partie grâce à une application réalisée en NodeJS, ce qui nous permettra de bien comprendre comment Fabric permet de communiquer avec une blockchain.

L’objectif de l’application sera donc de réaliser toutes les commandes pour utiliser notre chaincode :

  • Initialiser les données de la blockchain
  • Lire des données sur les actifs (les assets du smart contrat) sur la blockchain
  • Créer des nouveaux actifs
  • Modifier des actifs existants et faire des transfert de propriété

En réutilisant l’installation faite à la partie 1, on se place dans le dossier fabric-samples/test-network puis on lance la commande pour initialiser le network (avec le channel mychannel) :

./network.sh up createChannel -c mychannel -ca

On voit qu’on a ajouté l’option -ca ce qui nous permettra d’utiliser l’autorité de certification (nous y reviendrons plus tard en détail).

Si vous souhaitez voir le code de l’application avant de démarrer (mais nous l’expliquerons ensuite), il se trouve dans le dossier asset-transfer-basic/application-javascript (ou Go/java/typescript si vous préférez ces langages, mais nous détaillerons ici javascript comme nous l’avons fait dans les étapes précédentes).

Commençons par déployer notre chaincode, pour éviter de toute refaire manuellement comme dans la partie 2, nous allons utiliser le script pour automatiser le processus de création du package, installation, validation et déploiement du smart contract :

./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-javascript/ -ccl javascript

Comme l’application est réalisée avec NodeJs, il faut commencer par installer les dépendances en se rendant dans son répertoire :

cd asset-transfer-basic/application-javascript
npm install

Maintenant que tout est prêt, nous allons tout simplement lancer celle-ci pour expliquer les étapes importantes :

node app.js

La première partie du code sera alors exécuté :

La première étape consiste à vérifier les certificats et à définir un administrateur, sans oublier le chemin du wallet, c’est à dire l’endroit ou se trouve les clés privés des utilisateurs. Rappelons qu’Hyperledger étant par nature une blockchain privée, le rôle de chacun doit être défini et tous les échanges sont sécurisés grâce à des clés privées, qui sont concrètement les fichiers textes qui viennent d’être créés dans le répertoire wallet, contenant le certificat et la clé privé associée :

Une fois l’administrateur créé, l’application peut enregistrer un utilisateur ce qui va donner lieu à la création d’un deuxième fichier dans le répertoire wallet.(avec le certificat de l’utilisateur).

La seconde partie du code s’exécute ensuite :

L’application commence par se connecter (gateway.connect) , puis établit la connexion avec le channel (getNetwork), puis récupère le contrat grâce à son nom (getContract).

Toutes ces commandes, et nous les expliquons pour cette raison, proviennent du Hyperledger Fabric SDK for Node.js (sa documentation complète est disponible ici).

Celui-ci permet aussi de lancer des commandes sur le chaincode grâce la commande submitTransaction, qui va ici appeler la fonction InitLedger de notre chaincode. submitTransaction doit être utilisée lorsque des modifications sont apportées à la blockchain (c’est le cas ici puisque le ledger est créé avec toutes ses valeurs d’origines)

Pour simplement lire des données, il faut utiliser la commande evaluateTransaction , ce que fait ici l’application pour exécuter la fonction GetAllAssets du smart contract.

Le reste de l’application (je vous invite à parcourir le code) va consister à exécuter ces deux commandes pour créer une nouvelle transaction (CreateAsset), puis lire la blockchain en donnant l’ID de la transaction nouvellement créé ('ReadAsset', 'asset13'), mais aussi modifier le propriétaire d’un asset (UpdateAsset…).

C’est terminé, on voit donc qu’il est possible de communiquer avec une blockchain Hyperledger Fabric, car il existe des SDK pour plusieurs langages de programmation (Java, Javascript, TypeScript, Go..), ce qui donne la possibilité à de nombreux développeurs de créer des contrats intelligents compatibles sans apprendre un nouveau langage.

LAISSER UN COMMENTAIRE

Please enter your comment!
Please enter your name here

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.