I. Présentation générale▲
I-A. Aperçu▲
Blockchain est une technologie sécurisée, distribuée et ouverte qui permet de réduire les coûts, d'accélérer les processus et de bâtir un nouveau niveau de confiance dans les applications transactionnelles.
Ce modèle de code de développeur vous permettra de commencer avec blockchain en vous montrant comment construire un réseau de blockchain en utilisant IBM Blockchain Platform Extension for Visual Studio Code et IBM Blockchain Platform V2.0 sur IBM Cloud.
Note : Ce code pattern (motif de développement) est le premier d'une série de motifs conçus pour vous permettre de commencer avec la blockchain. Pour une vue d'ensemble de la série, voir construisez votre première application Blockchain.
Le terme « contrat intelligent » sera utilisé pour désigner le « Smart Contract ».
Quand quelque chose d'aussi gros qu'une blockchain émerge, les développeurs qui comprennent et peuvent mettre en œuvre la technologie sont aux commandes de l'entreprise. Mais vous devez d'abord l'apprendre. Dans ce modèle de développement, le premier d'une série de modèles de blockchain « hello world », vous allez apprendre comment construire un réseau de blockchain en utilisant Hyperledger Fabric. Vous créerez un contrat intelligent qui définit les participants, les actifs négociables et les transactions admissibles. Vous déployez ensuite le contrat packagé sur un Hyperledger Network configuré sur IBM Hyperledger Platform V2.0 sur IBM Cloud.
Lorsque vous aurez terminé ce modèle de code, vous comprendrez comment :
- regrouper vos contrats intelligents blockchain à l'aide d'IBM Blockchain Platform Extension for Visual Studio Code ;
- mettre en place un réseau Hyperledger Fabric sur IBM Blockchain Platform 2.0 ;
- installer et instancier un package de contrat intelligent via IBM Blockchain Platform 2.0 ;
- tester votre réseau en exécutant une application Node.js avec le SDK Hyperledger Fabric pour interagir avec le réseau déployé en émettant des transactions.
Dans ce tutoriel, vous allez découvrir à quel point il est facile de mettre en place et de configurer un réseau de base qui comprend un pair, un orderer, un canal et une autorité de certification.
Reportez-vous à l'aperçu des composants de la chaîne de blocs pour en savoir plus sur ces composants importants d'une blockchain. Les réseaux d'affaires comprennent également les participants qui interagissent avec eux, chacun d'eux pouvant être associé à une identité unique, à travers plusieurs réseaux d'affaires. C'est votre chance de monter dans le train en bloc et de développer les compétences dont chaque entreprise aura besoin.
Il faudra compléter ce modèle de développement et surveiller les futurs modèles de chaînes de blocs.
I-B. Démarche à adopter▲
Le flux de la réalisation de ce projet suit les étapes suivantes :
D’une façon générale, les étapes à suivre se présentent comme suit :
- Le développeur développe un contrat intelligent en utilisant Node.js ;
- Regrouper le contrat intelligent à l'aide d'IBM Blockchain Platform Extension for Visual Studio Code ;
- Mettre en place et lancer le service IBM Blockchain Platform 2.0 ;
- IBM Blockchain Platform 2.0 permet la création d'un réseau sur un service IBM Kubernetes, permettant l'installation et l'instanciation du contrat intelligent sur le réseau ;
- L'application Node.js utilise le Fabric SDK pour interagir avec le réseau déployé sur IBM Blockchain Platform 2.0 et émettre des transactions.
II. Exploitation du modèle composite Hyperledger Composer ▲
II-A. Principe de base▲
Le modèle composite Hyperledger Composer se concentre sur la façon dont vous créez un contrat intelligent.
Le contrat intelligent est au cœur d'un réseau en chaîne de blocs. Il permet à un participant de modifier l'état d'une immobilisation.
Dans ce cas d'utilisation, les actifs sont les matières premières et les négociants et le participant est en mesure d'exécuter les transactions ou contrat intelligent suivants : Trade ou CheckQuantity. IBM Blockchain Platform Extension for Visual Studio Code permet de créer et de tester très facilement des contrats intelligents.
Lorsque vous aurez terminé ce modèle de code, vous comprendrez comment utiliser IBM Blockchain Platform Extension for Visual Studio Code pour :
- créer un contrat intelligent ;
- construire le package du contrat intelligent ;
- installer et instancier un ensemble de contrats intelligents ;
- tester les contrats intelligents.
II-B. Flux d’architecture▲
Le flux d’architecture se présente comme suit :
Le processus suit la logique :
- Installation et lancement de la plate-forme Visual Studio Code ;
- Développement un contrat intelligent en utilisant Node.js ;
- Démarrage d'une instance locale d'un réseau Fabric Network dans la plate-forme Visual Studio Code Platform ;
- Installation et instanciation du contrat intelligent ;
- Test les transactions du contrat intelligent.
II-C. Technologies et composants▲
Les différents composants de la solution sont :
- IBM Blockchain Platform Extension for Visual Studio Code est conçu pour aider les utilisateurs à développer, tester et déployer des contrats intelligents, y compris la connexion aux environnements Hyperledger Fabric ;
- Hyperledger Fabric v1.4 est une plate-forme pour les solutions de gestion de grands livres distribués, soutenue par une architecture modulaire qui offre un haut degré de confidentialité, de résilience, de flexibilité et d'évolutivité ;
- Node.js est un environnement d'exécution JavaScript open source et multiplate-forme qui exécute du code JavaScript côté serveur.
III. Exécution de l’application▲
III-A. Conditions préalables▲
Pour réussir ces travaux pratiques, vous devez avoir à disposition les éléments suivants :
- Node v8.x ou supérieur et npm v5.x ou supérieur ;
- Visual Studio Code version 1.26 ou supérieure ;
- IBM Blockchain Platform Extension pour Visual Studio Code ;
- Yeoman.
Les différentes étapes du processus pour configurer et exécuter ce modèle de code sont :
- Installer les prérequisInstaller les prérequis ;
- Cloner la repoCloner la repo ;
- Modifier le fichier json du packageModifier le fichier json du package ;
- Créer le contrat intelligentCréez le contrat intelligent ;
- Construire le package du contrat intelligentConstruire le package du contrat intelligent ;
- Démarrer le réseau localDémarrer le réseau local ;
- Installation et instanciation du contrat intelligentInstallation et installation du contrat intelligent ;
- Tester les transactionsTester les transactions.
III-B. Installer les prérequis▲
Assurez-vous d'avoir installé ce qui suit
- Code visuel d'atelier ;
- Extension Visual Studio Code ;
- Accédez à la page du marché de l'extension Visual Studio Code Extension ;
- Cliquez sur Installer ;
- Redémarrez Visual Studio Code pour terminer l'installation de l'extension.
Si vous utilisez Windows, vous devez également vous assurer de ce qui suit :
- votre version de Windows supporte Hyper-V et Docker : Windows 10 Enterprise, Pro ou Education avec 1607 Anniversary Update ou version ultérieure ;
- Docker pour Windows est configuré pour utiliser les conteneurs Linux (c'est la valeur par défaut) ;
- Vous avez installé les outils de construction C++ pour Windows à partir des outils de construction de fenêtres ;
- Vous avez installé OpenSSL v1.0.2 à partir de Win32 OpenSSL ;
- Installez la version normale, pas la version marquée « light » ;
- Installez la version Win32 dans C:\OpenSSL-Win32 sur les systèmes 32-bit ;
- Installez la version Win64 dans C:\OpenSSL-Win64 sur les systèmes 64 bits.
Vous pouvez vérifier les versions installées en exécutant les commandes suivantes à partir d'un terminal :
- node --version
- npm --version
- yo --version
- docker --version
- docker-compose –version
Une fois que vous avez installé Visual Studio Code, la première chose à faire est d'installer l'extension IBM Blockchain Platform Visual Studio Code. Pour ce faire, vous devez installer la dernière version de Visual Studio Code ; pour voir si vous avez la dernière extension Visual Studio Code, allez dans Code > Check for Updates. Si Visual Studio Code plante à ce stade, cela signifie probablement que vous n'avez pas la dernière version. Mettez à jour votre Visual Studio Code, et une fois que vous avez terminé, cliquez sur les extensions dans la barre latérale sur le côté gauche de votre écran. En haut de la page, recherchez IBM Blockchain Platform sur le marché de l'extension. Cliquez sur Installer, puis cliquez sur Recharger. Maintenant vous devriez être prêt à utiliser l'extension !
III-C. Cloner la repo▲
Cloner ce référentiel dans un dossier de votre choix :
git clone https://github.com/IBM/SmartContractTrading-wFabric1-4-Visual Studio CodeExt.git
III-D. Modifier le fichier json du package▲
La première chose à faire est d'éditer le fichier Package.json. Dans ce fichier, vous devrez indiquer le nom du contrat intelligent. Dans ce cas, nous l'appellerons « la vente aux enchères ».
Vous pouvez également fournir une description.
III-E. Créez le contrat intelligent▲
Rappelons dans l'introduction que le contrat intelligent définit l'état différent d'un objet ou d'une ressource. De plus, il régit les processus ou les transactions qui peuvent se produire et qui déplacent l'objet entre différents états. Les développeurs utilisent des contrats intelligents pour définir les processus d'affaires clés et les données qui peuvent être partagées entre les organisations au sein d'un réseau à chaînes multiples.
La tâche suivante consiste à modifier le contrat intelligent fourni et à coder les transactions X. Une copie du contrat intelligent de ce motif est contenue dans \contract\lib\auction.js. Jetez-y un coup d'œil plus en détail. Vous verrez qu'en haut de la page, il y a l'exigence de l'API du contrat de tissu et nous étendons la classe du contrat :
class Auction extends Contract {}
La première fonction appelée lorsque le contrat intelligent est instancié s'appelle Instantiate. Parfois, vous verrez les développeurs l'appeler init.
C’est la fonction CreateAssetsandMembers qui va réellement écrire des données dans le réseau fabric.
Dans cette fonction, nous créons deux instances de l'actif Commodity (Gold & WonderDrug) et deux instances d'un participant Trader (SI1 et RT2). Notez l'exemple de la création d'une immobilisation :
var commKey =
'GOLD'
;
var commodity =
{
docType
:
'commodity'
,
description
:
'Yellow Bars'
,
mainExchange
:
'London'
,
quantity
:
100
,
owner
:
'SI1'
};
Les données en cours d'écriture dans le ledger sont créées sous forme d'objets JSON qui sont ensuite « stringifiés » avec cette commande :
await ctx.
stub.putState
(
commKey,
JSON.stringify
(
commodity));
Nous ajouterons une fonction queryQuantity à interroger ou à lire sur le réseau. Nous utiliserons la méthode getState
(
) du contexte du contrat intelligent pour lire les données et ensuite passer la sortie dans un objet JSON. Cette fonction de transaction utilisera le contexte Hyperledger Fabric et un argument, commKey, qui identifie la marchandise contre laquelle la transaction doit être traitée.
let commodityBytes =
await ctx.
stub.getState
(
commKey);
La dernière chose que nous allons faire est d'exécuter une transaction où un nouveau propriétaire se voit attribuer une nouvelle marchandise. La logique exige que vous lisiez d'abord les données du ledger, que vous les validiez, puis qu'un nouveau bloc au ledger affecte un nouveau propriétaire à la marchandise. En supposant que tout est valide, nous ferons la mise à jour en utilisant la méthode putState.
await ctx.
stub.putState
(
commKey,
JSON.stringify
(
commodity));
Voilà, vous avez terminé la rédaction du contrat intelligent.
III-F. Construire le package du contrat intelligent▲
Maintenant que votre contrat intelligent est écrit, nous devons l'ajouter dans Visual Studio Code en utilisant la plate-forme IBM Blockchain Platform Visual Studio Code Extension.
-
Si vous n'avez pas créé le code dans Visual Studio Code, vous devrez ajouter le dossier du contrat dans l'outil. Vous verrez ceci :
Note : c'est important - si vous obtenez une erreur à propos de la non-reconnaissance du langage de programmation, assurez-vous que vous avez seulement chargé le répertoire des contrats et non tout votre répertoire github.
-
Cliquez sur le bouton d'extension IBM Blockchain Platform (il ressemble à un carré en bas de la barre latérale gauche). Ceci montrera les contrats packagés en haut et les connexions de la chaîne de blocs en bas.
- Ensuite, cliquez sur les trois points et sélectionnez Package a Smart Contract Project. Vous verrez ce qui suit une fois que votre projet aura été empaqueté.
III-G. Démarrer le réseau local▲
Vous êtes maintenant prêt à vous déployer sur le réseau de tissu local. Avant de pouvoir installer le contrat intelligent sur le réseau, vous devez d'abord vous connecter à un réseau. Le réseau fourni avec l'extension Visual Studio Code est parfait pour le développement, il offre les ressources minimales pour développer et tester votre contrat. Les conteneurs Docker suivants sont démarrés sur votre machine locale, chacun ayant un rôle différent dans le réseau : Orderer, Certificate Authority, CouchDB, and Peer.
Cliquez sur l'extension, vous devriez voir LOCAL FABRIC OPS sur le côté gauche de l'éditeur. À droite de LOCAL FABRIC OPS, vous devriez voir un symbole à trois points. Cliquez dessus, puis cliquez sur Démarrer Fabric Runtime.
Votre extension va maintenant provisionner les conteneurs Docker qui agiront comme des nœuds dans votre réseau. Une fois l'approvisionnement terminé, vous devriez voir une section Smart Contracts sous LOCAL FABRIC OPS.
Lorsque le réseau sera opérationnel, vous le verrez en Visual Studio Code :
III-H. Installation et instanciation du contrat intelligent▲
Maintenant que le réseau Fabric fonctionne, nous devons installer notre contrat intelligent sur le pair.
III-H-1. Installation▲
-
Dans la section Local Fabric Ops près du bas, cliquez sur Installer. Vous verrez une fenêtre pop-up similaire au graphique ci-dessous. Sélectionnez peer0
.
org1.
example.
com - Sélectionnez ensuite le contrat packagé : auction@
0
.
0
.
1
Packaged .
Note La 0.0.1 provient de votre ligne package.
json : « version » : « 0.0.1 »
Une fois l'installation terminée, vous devriez obtenir un message Successfully installé sur peer peer0.
org1.
example.
com. Vous devriez également voir que le contrat est répertorié sous Installed sous Local Fabric Ops.
III-H-2. Instanciation▲
L’instanciation suit les étapes suivantes :
- à partir du canal en cliquant sur
+
Instantiate et choisissez mychannel. Sélectionnez auction@0
.
0
.
1
Installé ; - sous Contrats intelligents, vous verrez une section qui indique Instantané. Cliquez sur
+
Installer ; - l'extension vous demandera alors sur quel canal instancié, le contrat intelligent doit être instancié. Choisissez mychannel ;
- l'extension vous demandera alors quel contrat et quelle version instancier. Choisissez auction@
0
.
0
.
1
; - l'extension vous demandera alors quelle fonction appeler. Tapez instanciate ;
- ensuite, il vous demandera les arguments. Il n'y en a pas, alors appuyez simplement sur Entrée.
Vous devriez obtenir le message Contrat intelligent instancié avec succès et voir auction@0.0.1 sous Instantiated sous Local Fabric Ops.
III-I. Tester les transactions▲
Vous pouvez tester les transactions directement dans la plate-forme Visual Studio Code. Si vous cliquez sur Admin@org1.example.com, puis sur mychannel, puis sur auction@0.0.1, développez-le pour afficher ce qui suit :
Notez que toutes les transactions que vous avez créées dans le fichier auction.
js sont listées. Si vous cliquez avec le bouton droit de la souris sur la transaction CreateAssetsandMembers puis sélectionnez submit
transaction, une fenêtre contextuelle s'affiche. Si vous cliquez sur Retour (n'entrez aucune option), vous devriez obtenir une réponse indiquant que la transaction a été soumise avec succès.
À ce stade, vous aurez créé les deux instances de matières premières et les deux instances de traders.
Soumettons maintenant la transaction checkQuantity. Similairement, cliquez à droite sur la case à cocherQuantité. Cette fois-ci, vous devez saisir une option. Saisissez GOLD comme paramètre. Vous devriez voir la réponse suivante dans votre fenêtre de sortie :
Maintenant, soumettons la transaction commerciale. Entrer GOLD, RT2 comme paramètres. Vous devriez voir la réponse suivante dans votre fenêtre de sortie :
III-J. Licence d’utilisation▲
Ce modèle de code est sous licence Apache Software License, Version 2. Les objets de code tiers distincts invoqués dans le cadre de ce modèle de code sont autorisés par leurs fournisseurs respectifs en vertu de leurs propres licences distinctes. Les contributions sont soumises au Certificat d'origine du développeur, version 1.1 (DCO) et à la Licence de logiciel Apache, version 2.
Vous trouverez d’autres informations sur la FAQ sur les licences logicielles Apache (ASL).
IV. Extension du modèle de code▲
Vous avez appris à créer, empaqueter, installer, instancier et invoquer un contrat intelligent à l'aide de la Visual Studio Code Platform qui supporte IBM Blockchain Platform. Si vous voulez étendre ce modèle :
- vous pouvez exploiter un réseau instancié à l'aide du service IBM Blockchain Platform V2.0 Servicealong avec IBM Cloud Kubernetes Service sur IBM Cloud ;
- vous pouvez écrire une application autonome qui exécute les transactions. Vous pouvez en apprendre plus sur ces extensions dans le troisième modèle de cette série pour émettre des événements à partir de Blockchain Platform 2.0 ;
- créez un portefeuille pour chaque membre et utilisez le portefeuille du membre pour interagir avec l'application ;
- Ajoutez une application d'interface utilisateur à la place de l'application du nœud invoke.js pour exécuter les transactions.
V. Autres liens utiles▲
Vous trouverez d’autres documentations approfondies sur les liens suivants :
VI. Remerciements Developpez.com▲
Developpez.com remercie IBM pour l’autorisation de publication de ce tutoriel. Tous les remerciements aussi à Guillaume SIGUI pour la mise au gabarit et Claude Leloup pour la relecture orthographique.