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

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

Déploiement du code chaîne sur un réseau Hyperledger Fabric local

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

Lorsque vous installez l'extension Blockchain App Builder pour VS Code, elle crée automatiquement un réseau Hyperledger Fabric avec un seul canal. Elle sera répertoriée en tant que Local Environment dans le panneau Environnements. Vous ne pouvez pas supprimer ou modifier cet environnement. Vous pouvez simplement y déployer des codes chaîne et le reconstruire s'il ne fonctionne plus correctement.

Le déploiement de code chaîne Blockchain App Builder démarre le réseau de base Hyperledger Fabric, d'autres services, et installe et déploie le code chaîne pour vous.

  1. Dans le panneau Détails du code chaîne, sélectionnez Déployer.
  2. Dans l'assistant de déploiement :
    • Assurez-vous que le nom de code chaîne correct est sélectionné.
    • Sélectionnez votre environnement cible : pour un déploiement local, choisissez Environnement local.
    • Sélectionnez le canal vers lequel vous souhaitez effectuer le déploiement. Un canal nommé "mychannel" est créé par défaut avec l'installation de l'extension et peut être utilisé à des fins de test.
    • Saisissez éventuellement les paramètres initiaux 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 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 déployeurs qui ne sont pas le premier déployeur doivent fournir un tableau vide pour le paramètre adminList. Pour ce faire, ouvrez la liste des paramètres Init dans le panneau de déploiement, puis cliquez sur le bouton du signe moins (-) en regard du paramètre adminList, qui sélectionnera un tableau vide.
  3. Cliquez sur Déployer.

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

Dépannage

Les problèmes suivants peuvent survenir lors de l'exécution de votre projet de code chaîne sur un réseau local.

Autorisations Go manquantes
Lors de l'installation du projet de code chaîne Go sur le réseau local, une erreur semblable à la suivante peut s'afficher dans la console de 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
Ceci est dû à des autorisations manquantes pour Go. Cette erreur n'a été détectée que sur Mac OS. Il s'agit d'un problème connu:
Solution : modifiez les droits d'accès de votre instance $GOROOT et réessayez le déploiement :
sudo chmod -R 777 /usr/local/go
Echec du déploiement
En raison d'un échec de déploiement, d'un déploiement endommagé, d'un conteneur homologue Docker plein ou d'un homologue Docker arrêté dans le réseau local, une erreur semblable à la suivante peut s'afficher :
============ 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 homologue ne peut pas redémarrer correctement.
Solution : recréez votre environnement d'exécution en sélectionnant votre environnement local dans le panneau Environnements, en cliquant avec le bouton droit de la souris et en sélectionnant Recréer l'environnement local. Essayez de déployer à nouveau.
Recréation d'environnement requise
Une erreur semblable à la suivante peut s'afficher :
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 panneau 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 chaîne sur un réseau Oracle Blockchain Platform distant

Une fois que vous avez déployé et testé votre projet de code chaîne sur un réseau local pour vous assurer qu'il fonctionne comme prévu, vous pouvez le déployer vers Oracle Blockchain Platform.

Création d'une configuration de connexion à une instance Oracle Blockchain Platform

Vous devez disposer d'une instance Blockchain Platform en cours d'exécution pour effectuer cette étape.

  1. Dans le panneau Environnements de code Visual Studio, cliquez sur l'icône Créer un environnement.
  2. Dans l'assistant Détails d'environnement :
    • 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 utilisateur et le mot de passe Oracle Identity Cloud Service d'un utilisateur Oracle Blockchain Platform doté des rôles ADMIN ou REST_CLIENT. Pour appeler le code chaîne, seul le rôle REST_CLIENT est nécessaire. Pour déployer ou mettre à niveau le code chaîne, le rôle ADMIN doit également être affecté à l'utilisateur IDCS. Pour plus d'informations sur les utilisateurs et les rôles, reportez-vous à Configuration 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 saisir à nouveau le nom d'utilisateur et le mot de passe.

Déployer le code chaîne

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

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

Mise à niveau du projet de code chaîne

La mise à niveau du code chaîne est gérée automatiquement par Blockchain App Builder. Une fois que vous avez apporté des modifications au code chaîne, il vous suffit de le déployer à nouveau, ce 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 déployeur, vous devez fournir un tableau vide pour le paramètre adminList. Pour transmettre un tableau vide pour le paramètre adminList, ouvrez la liste des paramètres Init dans le panneau de déploiement, puis cliquez sur le bouton du signe moins (-) en regard 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 Oracle Blockchain Platform ont été extraits.
  • La liste des pairs a été extraite.
  • Une vérification a été effectuée pour déterminer si le projet de code chaîne est déjà installé. Si tel est le cas, la version a été extraite.
  • La version du code chaîne a été mise à niveau (par exemple, de la version 1.0 à la version 2.0).

Dans un environnement comportant plusieurs organisations, pour mettre à niveau le code chaîne, utiliser la console et approuver manuellement le code chaîne à partir des participants.

Packagez votre projet de code chaîne pour un déploiement manuel vers Oracle Blockchain Platform

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

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

  1. Sélectionnez votre projet de code chaîne dans le panneau Codes chaîne.
  2. Cliquez avec le bouton droit de la souris et sélectionnez Package.
  3. Sélectionnez l'emplacement d'enregistrement du package, puis cliquez sur Sélectionner un dossier de sortie.

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

Une fois la commande terminée, l'emplacement du package est renvoyé.