Déployer le code de chaîne à l'aide de Visual Studio Code

Une fois le projet de code de chaîne créé, vous pouvez le déployer localement sur le réseau Hyperledger Fabric généré automatiquement, ou à distance sur votre plate-forme Oracle Blockchain Platform Cloud ou Enterprise Edition. Vous pouvez également encapsuler le projet de code de chaîne pour un déploiement manuel sur Oracle Blockchain Platform.

Déployer le code de chaîne sur un réseau Hyperledger Fabric local

Une fois que vous avez créé votre projet de code de chaîne, vous pouvez le tester dans un réseau de base Hyperledger Fabric local.

Lorsque vous installez l'extension Blockchain App Builder pour VS Code, il crée automatiquement un réseau Hyperledger Fabric avec un seul canal. La valeur Local Environment sera indiquée dans le volet Environnement. Vous ne pouvez pas supprimer ni modifier cet environnement; vous pouvez simplement y déployer des codes de chaîne et le recréer s'il cesse de fonctionner correctement.

Le déploiement de code de chaîne du générateur d'applications de chaîne de blocs démarre le réseau de base Hyperledger Fabric, d'autres services, et installe et déploie le code de chaîne pour vous.

  1. Dans le volet Détails de la chaîne, sélectionnez Déployer.
  2. Dans l'assistant de déploiement :
    • Assurez-vous que le nom de code de chaîne correct est sélectionné.
    • Sélectionnez l'environnement cible. Pour le déploiement local, sélectionnez Environnement local.
    • Sélectionnez le canal vers lequel effectuer le déploiement. Un canal nommé "mychannel" est créé par défaut avec l'installation de l'extension et peut être utilisé pour les tests.
    • Facultativement, entrez tous les paramètres initiaux qui peuvent être requis.
    • Pour les projets de jeton, la première fois que vous déployez, vous devez entrer une liste d'administrateurs de jeton en tant que paramètre. La liste est un tableau d'informations {user_id, org_id} qui spécifie les administrateurs de jeton. Pour le réseau Hyperledger Fabric local, utilisez la valeur Org1MSP pour le champ org_id. Pour les codes de chaîne NFT, les clés du paramètre adminList sont userId et orgId pour TypeScript et UserId et OrgId pour Go. Après le premier déploiement, vous pouvez fournir un tableau vide pour le paramètre adminList ou utiliser le paramètre adminList pour ajouter des administrateurs de jeton. Les autres responsables du déploiement qui ne sont pas le premier responsable du déploiement doivent fournir un tableau vide pour le paramètre adminList. Pour ce faire, ouvrez la liste de paramètres Init dans le volet de déploiement, puis cliquez sur le bouton (-) à côté du paramètre adminList, qui sélectionnera un tableau vide.
  3. Cliquez sur Déployer.

Lorsque le déploiement du code de chaîne est terminé, la console de sortie indique qu'il a été installé et déployé sur le canal indiqué.

Dépannage

Vous pouvez rencontrer les problèmes suivants lors de l'exécution de votre projet de code de chaîne sur un réseau local.

Autorisations d'accès manquantes
Lors de l'installation du projet de code de chaîne Go dans le réseau local, une erreur similaire à celle qui suit peut s'afficher dans la console Sortie :
INFO (Runtime): 2020/06/22 22:57:09 build started

INFO (Runtime): Building ....

INFO (Runtime): go build runtime/cgo: copying /Users/myname/Library/Caches/go-build/f8/.….….d: open /usr/local/go/pkg/darwin_amd64/runtine/ 
cgo.a: permission denied

ERROR (Runtime): go build runtine/cgo: copying /Users/myname/Library/Caches/go-build/f8/.….….d: open /usr/local/go/pkg/darwin_amd64/runtime/
cgo.a: permission denied

INFO (Runtime): An error occurred while building: exit status 1
Cela est dû à des autorisations manquantes pour Go. Cette erreur a été observée uniquement sous Mac OS. Il s'agit d'un problème connu :
Solution : Modifiez les autorisations de votre $GOROOT et réessayez le déploiement :
sudo chmod -R 777 /usr/local/go
Échec du déploiement
En raison d'un échec de déploiement, d'un déploiement corrompu, d'un conteneur pair Docker plein ou d'un pair Docker tué dans le réseau local, une erreur peut se produire comme suit :
============ Started instantiate Chaincode ============
[2028-19-01T19:25:lO.372] [ERROR] default - Error instantiating Chaincode GollGl on channel mychannel, detailed 
error: Error: error starting container: error starting container: Failed to generate platform-specific docker 
build: Failed to pull hyperledger/fabric-ccenv:latest : API error (404): manifest for hyperledger/ 
fabric-ccenv:latest not found: manifest unknown: manifest unknown [2020-19-01T19:25:10.372] (INFO) default -
============ Finished instantiate Chaincode ============
[2020-19-01119:25:10.372] [ERROR] default - Error: Error instantiating Chaincode Goll01 on channel mychannel, 
detailed error: Error: error starting container: error starting container: Failed to generate platfom-specific 
docker build: Failed to pull hyperledger/fabric-ccenv: latest : API error (404): manifest for hyperledger/ 
fabric-ccenv:lalest not found: manifest unknown: manifest unknown exited: signal: terminated 
INFO: exited: signal: terminated

ERROR: Error in Chaincode deployment
Cela est dû au fait qu'un conteneur pair ne peut pas redémarrer correctement.
Solution : Recréez votre environnement d'exécution en sélectionnant votre environnement local dans le volet Environnement, en cliquant avec le bouton droit de la souris et en sélectionnant Recréer l'environnement local. Tentative de déploiement à nouveau.
Recréation d'environnement requise
Vous pouvez voir une erreur similaire à :
Starting ca.example.com ... 
Starting orderer.example.com ... 
Starting orderer.example.com ... error
ERROR: for orderer.example.com  
Cannot start service orderer.example.com: 
error while creating mount source path '/host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0/node_modules/@oracle/ochain-cli/runtime/network/basic-network/config': mkdir /host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0: operation not permitted
Starting ca.example.com... error
ERROR: for ca.example.com  
Cannot start service ca.example.com: error while creating mount source path '/host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0/node_modules/@oracle/ochain-cli/runtime/network/basic-network/crypto-config/peerOrganizations/org1.example.com/ca': mkdir /host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0: operation not permitted
ERROR: for orderer.example.com  
Cannot start service orderer.example.com: error while creating mount source path '/host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0/node_modules/@oracle/ochain-cli/runtime/network/basic-network/config': mkdir /host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0: operation not permitted
ERROR: for ca.example.com  
Cannot start service ca.example.com: error while creating mount source path '/host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0/node_modules/@oracle/ochain-cli/runtime/network/basic-network/crypto-config/peerOrganizations/org1.example.com/ca': mkdir /host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0: operation not permitted
Encountered errors while bringing up the project.
ERROR: Starting ca.example.com ... 
Starting orderer.example.com ... 
Starting orderer.example.com ... error
ERROR: for orderer.example.com  
Cannot start service orderer.example.com: error while creating mount source path '/host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0/node_modules/@oracle/ochain-cli/runtime/network/basic-network/config': mkdir /host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0: operation not permitted
Starting ca.example.com ... error
ERROR: for ca.example.com  
Cannot start service ca.example.com: error while creating mount source path '/host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0/node_modules/@oracle/ochain-cli/runtime/network/basic-network/crypto-config/peerOrganizations/org1.example.com/ca': mkdir /host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0: operation not permitted
ERROR: for orderer.example.com  
Cannot start service orderer.example.com: error while creating mount source path '/host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0/node_modules/@oracle/ochain-cli/runtime/network/basic-network/config': mkdir /host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0: operation not permitted
ERROR: for ca.example.com  
Cannot start service ca.example.com: error while creating mount source path '/host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0/node_modules/@oracle/ochain-cli/runtime/network/basic-network/crypto-config/peerOrganizations/org1.example.com/ca': mkdir /host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0: operation not permitted
Encountered errors while bringing up the project.
ERROR: Error in Chaincode deployment
Vous devez reconstruire votre environnement local. Dans le volet Environnements du générateur d'applications, cliquez avec le bouton droit de la souris sur votre environnement local et sélectionnez Recréer l'environnement local.

Déployer le code de chaîne sur un réseau Oracle Blockchain Platform distant

Après avoir déployé et testé votre projet de code de chaîne sur un réseau local pour s'assurer qu'il fonctionne comme prévu, vous pouvez le déployer sur Oracle Blockchain Platform.

Créer une configuration de connexion à une instance Oracle Blockchain Platform

Pour terminer cette étape, vous devez disposer d'une instance Blockchain Platform en cours d'exécution.

  1. Dans le volet Environments de Visual Studio Code, cliquez sur l'icône Créer un environnement.
  2. Dans l'assistant Détails des environnements :
    • Entrez le nom de votre environnement distant.
    • Entrez une description.
    • Dans URL distante, entrez l'URL de l'instance Oracle Blockchain Platform distante.
    • Entrez le nom d'utilisateur et le mot de passe d'Oracle Identity Cloud Service pour un utilisateur d'Oracle Blockchain Platform doté des rôles ADMIN ou REST_CLIENT. Pour appeler le code de chaîne, seul le rôle REST_CLIENT est nécessaire. Pour déployer ou mettre à niveau le code de chaîne, le rôle ADMIN doit également être affecté à l'utilisateur IDCS. Pour plus d'informations sur les utilisateurs et les rôles, voir Configurer des utilisateurs et des rôles d'application.
  3. Cliquez sur Créer pour enregistrer l'environnement. Le nom d'utilisateur et le mot de passe sont enregistrés temporairement dans la session Visual Studio Code locale. Si vous fermez Visual Studio Code, puis démarrez une nouvelle session Visual Studio Code, vous devez entrer à nouveau le nom d'utilisateur et le mot de passe.

Déployer le code de chaîne

  1. Sélectionnez le projet de chaîne de code à déployer dans le volet Code de chaîne.
  2. Dans le volet Détails de la chaîne, sélectionnez Déployer.
  3. Dans l'assistant de déploiement, le nom du projet de code de chaîne doit être prérempli.
    • Sélectionnez l'environnement cible. Pour un déploiement à distance, choisissez l'environnement Oracle Blockchain Platform que vous avez configuré précédemment.
    • Entrez le nom du canal vers lequel effectuer le déploiement.
    • Définissez éventuellement les paramètres initiaux requis.
  4. Cliquez sur Déployer.
Une fois le code de chaîne déployé sur la plate-forme Oracle Blockchain Platform distante, le journal de la console affiche les événements suivants :
  • Les détails d'Oracle Blockchain Platform ont été extraits.
  • La liste de pairs a été extraite.
  • Le projet de code de chaîne a été installé.
  • Le projet de code de chaîne a été approuvé et validé.
  • Le code de chaîne a été déployé sur chaque pair et sur le canal.

Dans un environnement comportant plusieurs organisations, pour redéployer le code de chaîne sur le même canal au moyen d'une instance de participant, utilisez la console pour déployer le code de chaîne.

Mise à niveau du projet de code de chaîne

La mise à niveau du code de chaîne est gérée automatiquement par le générateur d'applications de chaîne de blocs. Après avoir apporté des modifications à votre code de chaîne, il suffit de le déployer de nouveau, qui mettra automatiquement à niveau le projet pour vous. Lorsque vous exécutez le processus de mise à niveau, vous pouvez transmettre un tableau vide pour le paramètre adminList ou utiliser le paramètre adminList pour ajouter des administrateurs de jeton. Si vous n'êtes pas le premier responsable du déploiement, vous devez fournir un tableau vide pour le paramètre adminList. Pour transmettre un tableau vide pour le paramètre adminList, ouvrez la liste de paramètres Init dans le volet de déploiement, puis cliquez sur le bouton moins (-) à côté du paramètre adminList, qui sélectionnera un tableau vide.

Si la mise à niveau réussit, le journal indique que les événements suivants se sont produits :
  • Les détails d'Oracle Blockchain Platform ont été extraits.
  • La liste de pairs a été extraite.
  • Une vérification a été effectuée pour déterminer si le projet de code de chaîne est déjà installé et, le cas échéant, si la version a été extraite.
  • La version du code de chaîne a été mise à niveau (par exemple, de la version 1.0 à la version 2.0).

Dans un environnement avec plusieurs organisations, pour mettre à niveau le code de chaîne, utilisez la console et approuvez manuellement le code de chaîne des participants.

Encapsuler le projet de code de chaîne pour un déploiement manuel sur Oracle Blockchain Platform

Vous pouvez emballer vos projets de code de chaîne pour un déploiement manuel dans Oracle Blockchain Platform Cloud ou Enterprise Edition.

La fonction Ensemble crée un fichier d'archive contenant uniquement les fichiers de compilation et de distribution. Les dossiers binary, libs, node_modules et test de votre projet de code de chaîne ne sont pas inclus. Ce fichier d'archives peut être chargé manuellement dans Oracle Blockchain Platform pour déploiement.

  1. Sélectionnez le projet de chaîne de blocs dans le volet Code de chaîne.
  2. Cliquez avec le bouton droit et sélectionnez Ensemble.
  3. Sélectionnez l'emplacement dans lequel enregistrer l'ensemble, puis cliquez sur Sélectionner un dossier de sortie.

En raison des modifications apportées aux préalables logiciels, lorsque vous exécutez la fonction Ensemble pour le code de chaîne TypeScript, vous êtes invité à indiquer la date de provisionnement de l'instance Oracle Blockchain Platform pour laquelle vous voulez créer l'ensemble. Le code de chaîne TypeScript créé dans le générateur d'applications de chaîne de blocs n'est pas compatible avec les versions précédentes d'Oracle Blockchain Platform sans modification de l'infrastructure sous-jacente. Le générateur d'applications de chaîne de blocs regroupe l'infrastructure de code de chaîne en conséquence en fonction de votre sélection.

Lorsque la commande se termine avec succès, l'emplacement du package est retourné.