Rejoignez-Nous sur

Construire une application PoC Blockchain en utilisant Hyperledger Fabric

News

Construire une application PoC Blockchain en utilisant Hyperledger Fabric

Cet article traite de mon expérience dans la création d’une application de chaîne de caractères blockchain pour l’enregistrement de terres et de titres sur blockchain, en tirant parti de la plateforme blockchain de Hyperledger Fabric (HF). Il peut être avantageux pour ceux qui viennent juste de commencer ou qui ont l’intention de l’apprendre et pour ceux qui ont déjà de l’expérience dans le domaine de la santé, il peut offrir une autre solution tout aussi viable.

Cet article traite de mon expérience dans la création d’une application de chaîne de caractères blockchain pour l’enregistrement de terres et de titres sur blockchain, en tirant parti de la plateforme blockchain de Hyperledger Fabric (HF). Cela peut être bénéfique pour ceux qui viennent de commencer l’utilisation d’HF ou qui ont l’intention de l’apprendre. Pour ceux qui ont déjà une expérience en HF, cela peut offrir une autre option tout aussi viable.

Définissons d'abord notre objectif et voyons ensuite comment nous pouvons l'atteindre.

Ici, notre objectif est de créer une application Web permettant d’enregistrer les transactions des maisons (achat et vente de maisons) sur une petite chaîne de blocs autorisée et de pouvoir les rechercher. Et nous avons décidé d’utiliser la plateforme Hyperledger Fabric pour faire le travail.

À la fin de la journée, nous voulons que cette application ressemble à celle ci-dessous (avec une explication laconique à moins que ce ne soit explicite).

Notre premier écran est la page de connexion de l’application Web avec l’arrière-plan de la sortie de débogage du service api de Hyperledger Fabric:

0*N0c1 cSgFbjLomE4

L’écran suivant est la page de connexion de l’application Web (suite). La connexion utilise un processus d’authentification à deux facteurs.

0*Dg7

L’écran suivant est l’écran principal de l’application, qui répertorie deux fonctions principales «Ajouter une transaction» et «Rechercher».

0*Uj2Ypnqs1tGcAnjV

L'écran suivant fournit un formulaire pour enregistrer la transaction maison sur la chaîne de blocs:

0*YQ3ktJpVWgKP9c4y

L'écran suivant entre une transaction maison dans le formulaire:

0*qvY1hqgSi6FE24cp

L’écran suivant enregistre la transaction maison dans la chaîne de blocs et interroge la chaîne pour la récupérer (pour confirmer l’enregistrement réussi de la transaction):

0*k ugc6tO1ARtG67a

L’écran suivant capture l’état lorsque vous cliquez sur le lien Télécharger (contrat):

0*imkEKEBPJZUvWhSo

L’écran suivant entre une requête de recherche de transaction maison (requête maison par apn):

0*ckRiZkw8zDl97gPM

L'écran suivant renvoie les résultats de la requête de transaction:

0*Ohv9R3ZNWE4gxJ 4

Comme nous pouvons le constater, ce qui précède est une application entièrement fonctionnelle de la chaîne de blocs PoC. On l'appelle PoC car nous n'avons pas remplacé le nom de domaine «exemple.com» et les sous-domaines associés par un domaine de production et quelques autres éléments.

Voyons maintenant comment nous l’avons fait.

Pour commencer, nous avons besoin de clarté conceptuelle et d’une architecture.

Hyperledger Fabric a une architecture à 3 niveaux. Plus précisément, son réseau blockchain pour les infrastructures, son code de chaîne pour les règles et la logique commerciales, ainsi que pour les applications Web et / ou mobiles permettant aux utilisateurs finaux d’exercer des fonctions commerciales.

Les diviser en trois niveaux ou composants faciliterait la résolution de problèmes lors de la création d’une application blockchain.

L'image suivante décrit une telle architecture et la laisse nous guider dans notre effort de développement d'applications de type blockchain:

0*wZ5yKgY9WVsj6guo

Première partie – Infrastructure réseau Hyperledger Fabric

Cette partie implique de travailler avec les parties prenantes en tant que participants au réseau ou nœuds / homologues distribués, en cours de route, pour créer et / ou configurer des règles et des stratégies. Utiliser des outils cryptographiques pour créer des clés, des identités sécurisées, des rôles, etc. Utiliser un service spécial appelé donneur d'ordre pour faciliter la communication entre homologues et le traitement des transactions de données. Et beaucoup plus…

Pour ce niveau, une expérience informatique étendue incluant des compétences en Unix / Linux / Ubuntu, Docker (conteneurisation), etc. est nécessaire. C’est complexe et pourtant peu de programmation est nécessaire.

Possibilité de configurer un réseau blockchain avec des comptes Fabric pour ce niveau. Une partie essentielle est le ou les fichiers yaml tels que le fichier docker-compose.yaml. Ce ou ces fichiers de configuration définissent la topologie globale du réseau. Vous n’avez pas besoin d’acquérir une capacité complète de manière linéaire dans un court laps de temps, mais plutôt bon serait un bon début.

Etant donné qu’il s’agit d’un processus important et complexe, j’ai créé un document distinct de 45 pages, spécifiquement consacré à la connaissance des principes fondamentaux de l’infrastructure réseau Hyperledger Fabric, qui traite également du code de chaîne et aborde brièvement les applications Web, étape par étape. à ce document pour la première partie si vous ne le connaissez pas déjà (contactez-moi pour plus de détails).

Deuxième partie – Chaincode en tissu Hyperledger

Le terme "code de chaîne" est équivalent à "Smart Contract" pour Ethereum. Chaincode peut être écrit dans l’une des trois langues, à savoir Node.js, Go (Golang) et Java (personnellement, je suis dans le camp Node.js). La maîtrise de l'un d'entre eux est attendue.

Pour cette partie, il serait très important d’acquérir la capacité de connaître les méthodes autour de Fabric, telles que l’utilisation efficace des commandes CLI et du menu fixe. Certaines commandes critiques de docker incluent «docker ps» pour afficher les processus en cours d'exécution (programmes et / ou conteneurs). “Docker exec -it cli bash” ferait apparaître l'invite de commande CLI. “Docker run…” consiste à lancer / exécuter le service d’un conteneur… “docker rm -f $ (docker ps -qa)” pour tuer tous les processus / conteneurs en cours d’exécution. En cours de route, certaines compétences essentielles unix / linux / ubuntu sont indispensables, par exemple, "ls" pour répertorier les fichiers dans un répertoire, "cp" pour copier, "mv" pour déplacer ou renommer, puis quelques connaissances avancées pourraient être utiles. de même, par exemple, «chmod a + r monfichier» permettrait à «monfichier» d'être lisible par les trois rôles utilisateur / groupe / tout le monde (global).

En ce qui concerne la gestion des codes chaincodes, le code chaincode a deux catégories principales, l’une est appelée «code chaincode système» qui interagit avec le blockchain donné et l’autre catégorie, et l’autre catégorie est appelée «code chaincode utilisateur», qui sont le chaincode créé par nos développeurs / programmeurs.

Le code de chaîne de l'utilisateur a quatre cycles de vie: «Installer», «Instantiate», «Invoke» et «Query».

"Installer" mappe essentiellement l’emplacement / le chemin du chaincode, ainsi, lorsque le besoin s’en fait sentir, il peut être trouvé et utilisé.

"Instantiate" créerait une image de conteneur pour prendre en charge tous les futurs besoins d’invocation et de requête du chaincode particulier, et c’est pourquoi "instancier" prend plus de temps.

Invoquez, écrivez des données ou placez-les dans la blockchain.

«Requête», simplement, obtenir des données ou récupérer des données de la blockchain.

“Installer” et “Instancier” au-delà de l'essentiel

À mon avis, dans un environnement de production, l’installation et l’instanciation des chaincodes sont généralement des processus uniques. Une fois qu’un chaincode particulier est installé et instancié, il sera «toujours» présent pour une utilisation future, par exemple pour «invoke» et / ou « question". Savoir installer et instancier est primordial.

Il existe au moins 3 méthodes pour installer et instancier un code de chaîne.

  • (a) via la commande "peer" à l'invite de commande CLI et c'est une bonne méthode.
  • (b) via un appel à un serveur api Fabric REST, cette méthode est très bien aussi
  • © via Hyperledger Composer et cela introduit un paradigme totalement nouveau. Bien que j'ai le plus grand respect pour les personnes travaillant sur le projet Hyperledger, j'ai un problème avec son intégration à l'architecture globale de Fabric, en demandant à Composer de recréer un réseau Fabric, etc., il semble aller dans de nombreuses directions / en introduisant des processus supplémentaires inutiles, alors, personnellement, j'évite cette option. Voir la note suivante et l’URL pour plus de détails sur les perspectives futures de cette option, “Au nom de mon équipe de XYZ, nous sommes tous extrêmement fiers de ce que nous avons apporté à Composer au cours des deux dernières années. Nous sommes reconnaissants à la communauté pour tous vos commentaires et contributions. Cependant, chez XYZ, nous pensons que l’architecture et la conception de Composer, comme c’est le cas aujourd’hui, nous ont obligés à reconsidérer notre orientation et nos projets futurs.", https://lists.hyperledger.org/g/composer/message/125

En ce qui concerne la méthode (a), pour l'essayer, vous pouvez d'abord afficher le "premier réseau", puis accéder à l'invite de commande CLI (docker exec -it cli bash). Vous pouvez maintenant installer et instancier le code de chaîne à l'aide de "mycc". a déjà été installé, vous pouvez installer «fabcar», recherchez son chemin pour l’installation «mycc» à partir de l’écran «./byfn.sh up» lorsque vous avez lancé le réseau Fabric.

Une fois installé, vous pouvez vérifier s'il est vraiment installé à l'aide de la commande «peer chaincode list – installed», puis instancier le chaincode «fabcar» en observant la procédure utilisée pour le chaincode «mycc» (et assurez-vous que vous êtes EN LIGNE, il faut une référence npm). Cela peut prendre plusieurs minutes. Une fois l’opération terminée, utilisez la «liste de chaincodes des pairs – mychannel – instanciée» pour vérifier si elle est vraiment instanciée.

Ainsi, une fois encore, il est important d’obtenir la capacité à effectuer le cycle de vie des codes de chaîne, comme mentionné ci-dessus, à installer, instancier, appeler et interroger.

En ce qui concerne le codage en chaîne, un excellent moyen d’apprendre consiste à lire et à comprendre un exemple de chaîne. Les exemples d'application «Balance-Transfer» et «Fabcar» en sont de bons exemples. L'important est de vouloir expérimenter ou de modifier quelque chose avec eux, ce qui nous permettrait d'acquérir une nouvelle compréhension ou même une sorte de découverte. Par exemple, pour l'exemple d'application «First-Network», «Instantiate» écrit en fait des données dans la chaîne, contrairement à «Instantiate» pour l'exemple d'application «Fabcar». Ainsi, nous savons que «Instantiate» peut être écrit de manière à mieux répondre à nos besoins qu’il doit faire ceci ou cela.

Nous allons maintenant mapper tous les apprentissages génériques ci-dessus sur le chaincode dans l'application blockchain de House Transaction. Dans ce cas, les deux fonctionnalités clés sont «addTransaction» et «queryTransaction». Depuis, j'utilise Node.js pour le chaincode, une source node.js. fichier de code peut les adresser tous les deux et une fois cela fait, nous créons le fichier de configuration package.json pour refléter ce fichier de code source node.js. Et puis, nous sommes prêts pour le cycle de vie des chaincodes décrit ci-dessus.

Nous avons donc créé un réseau de chaînes de blocs utilisant la plate-forme Hyperledger Fabric et créé des codes de chaîne pour cette application blockchain de House Transaction, mais nos utilisateurs finaux auraient besoin d’y accéder via Internet ou leur téléphone mobile.

Naturellement, en développant une interface Web et / ou mobile dans la chaîne, cette application étant destinée aux entreprises, je commencerai par une application Web. Alors maintenant, cela nous amène à la partie suivante.

Troisième partie – Application Web et / ou mobile au sommet de la Blockchain

La toute première question est maintenant de savoir comment connecter le code de chaîne à la base de données d’État et au registre de la chaîne, puis comment connecter le code de chaîne à l’application Web, de sorte que le code de chaîne se trouve au milieu. Une api est une façon de faire les connexions pour les deux bouts. Ensuite, api-sage, nous avons Fabric api et Composer api. Comme indiqué ci-dessus, je suis un partisan du principe Razor d’Occam, qui résout les problèmes efficacement (par opposition à toute méthode compliquée, peu importe), c’est pourquoi j’ai éliminé Composer api, ce qui veut dire que Fabric api est mon choix.

En résumé, le serveur Fabric API fonctionne comme ceci: côté chaincode, il exploite une api de bas niveau pour communiquer avec chaincode, cette api de bas niveau est appelée "shim", également appelée "fabric-shim", puis, à la site Web, un script côté serveur appelle l’API Fabric pour l’action chaîne de données.

Maintenant, développons ce qui précède, nous exécutons d’abord le serveur d’API Fabric, puis nous configurons un serveur Web, créons un code côté serveur pour appeler le serveur d’API pour différents types de besoins de transaction en chaîne, tels que «installer», «instancier». ”,“ Invoke ”et“ query ”.

Et maintenant, passons au point conceptuel du paragraphe ci-dessus dans cette application House Transaction. Pour le code côté serveur, nous aurions besoin d’un code pour la page de connexion (le FORM) et d’un code pour intégrer la logique de sécurité / d’authentification, puis créons html FORM. pour accepter les données de transaction maison, un code pour accepter cette transaction et écrire des données dans la chaîne, puis un peu plus de code pour accepter une requête de transaction, et un code pour traiter une telle requête / recherche, extraire des données de la chaîne puis présenter le utilisateur avec de tels résultats ou aucun s'il n'est pas trouvé.

Nous disposons à présent de plusieurs terminaux / fenêtres pour le type d’entreprise à chaîne de code Fabric, tels que l’exécution du serveur Fabric api, pour la vérification des processus en cours / des conteneurs / programmes montés, l’exécution d’un serveur Web et éventuellement un autre pour la vérification des fichiers; Nous avons ensuite ouvert un navigateur Web Firefox pour les applications Web. et un éditeur de texte pour la création et l'édition de fichiers / codes… Jetez un coup d'œil à la capture d'écran suivante, une sorte de gâchis, mais NICE gâchis à mon avis:

0*jwH0EyhGCCqsUhW8

Résumé

La technologie blockchain est complexe. Nos antécédents et notre corps enseignant auraient une incidence sur la façon dont nous apprenons et à quelle vitesse nous apprenons. En attendant, nous nous efforcerons de rechercher la clarté avant même de commencer, la clarté technique de la feuille de route, quelles connaissances clés nous devons acquérir, comment chaque composant / pièce se connecte avec un autre et s’harmonise-t-il, ce qui commence et ce qui doit suivre, quelle est notre priorité sont tous importants. Et nous ne devrions jamais sous-estimer la valeur de la volonté d'expérimenter avec la raison.

Pour mettre ce qui précède en perspective, nous pouvons les résumer en trois ensembles de compétences de base pour un professionnel compétent de Hyperledger Fabric. (1) Connaissance et compétences du réseau Fabric Blockchain ou de l’infrastructure réseau; (2) Capacité d'écrire et de déployer un code de chaîne sur le réseau; (3) Possibilité d'écrire un script côté serveur pour l'interface Web dans le code de chaîne via le serveur API Fabric. Et en tant que praticien, nous devons nous rappeler le principe de Razor d’Occam, selon lequel l’efficacité est supérieure à toute conception et / ou architecture compliquée.

Et tout aussi important, nous devons continuellement trouver des personnes de qualité, compétentes et expérimentées tout au long de notre voyage. Elles peuvent non seulement enrichir nos connaissances, mais également nous apporter un sentiment de communauté.

A l'instar des autres plates-formes blockchain, la technologie Hyperledger Fabric est encore balbutiante, mais l'avantage est qu'elle semble en constante évolution.

Merci de votre lecture et je me réjouis de votre contribution.

P.S. Actuellement, cette application PoC est destinée à une organisation avec deux nœuds et j'ai l'intention d'ajouter quelques nœuds / homologues d'une autre organisation au réseau (il suffit de modifier le fichier de configuration docker-compose.yaml et de modifier certains paramètres de chaîne, redémarrez le réseau et faire des tests…).

Don Chunshen Li est un architecte / consultant / développeur d’applications Fabric Fabric pour la Blockchain.

Le contributeur a partagé ses points de vue et opinions personnels dans l'article. Blockchain Magazine exhorte les lecteurs à mener leurs propres recherches avec une diligence raisonnable sur la société, le produit ou le service mentionné dans le contenu ci-dessus.



Traduction de l’article de Editor’s Desk : Article Original

BlockBlog

Le Meilleur de l'Actualité Blockchain Francophone & Internationale | News, Guides, Avis & Tutoriels pour s'informer et démarrer facilement avec Bitcoin, les Crypto-Monnaies et le Blockchain. En Savoir Plus sur L'Équipe BlockBlog

Commenter cet Article

Commenter cet Article

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Plus dans News

Les Plus Populaires

Acheter des Bitcoin

Acheter des Alt-Coins

Sécuriser vos Cryptos

Vêtements et Produits Dérivés

Top
eget consequat. ut vulputate, venenatis Praesent suscipit ut