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

Après avoir créé un projet de code de chaîne, vous pouvez le déployer localement dans le réseau Hyperledger Fabric généré automatiquement ou à distance dans Oracle Blockchain Platform Cloud ou Enterprise Edition. Vous pouvez également encapsuler le projet de code de chaîne pour un déploiement manuel dans Oracle Blockchain Platform.

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

Après avoir 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 Visual Studio Code, elle crée automatiquement un réseau Hyperledger Fabric avec un seul canal. Cette valeur est indiquée en tant que Local Environment dans le volet Environnements. Vous ne pouvez pas supprimer ni modifier cet environnement. Vous pouvez simplement y déployer des codes de chaîne et les recréer s'il cesse de fonctionner correctement.

Le réseau de test créé lors de l'installation du générateur d'applications Blockchain exécute Hyperledger Fabric v2.5.7 et Hyperledger Fabric CA v1.5.9.

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

  1. Dans le volet Détails du code de chaîne, sélectionnez Déployer.
  2. Dans l'assistant de déploiement :
    • Assurez-vous que le nom de code de chaîne approprié est sélectionné.
    • Sélectionnez votre environnement cible. Pour un déploiement local, sélectionnez Environnement local.
    • Sélectionnez le canal vers lequel vous souhaitez effectuer le déploiement. Un canal nommé "mychannel" est créé par défaut lorsque l'extension est installée et peut être utilisé pour les tests.
    • Au besoin, entrez tous 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 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 vous pouvez utiliser le paramètre adminList pour ajouter des administrateurs de jeton. Les autres programmeurs de déploiement qui ne sont pas le premier programme de déploiement doivent fournir un tableau vide pour le paramètre adminList. Pour ce faire, ouvrez la liste des 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.

Une fois le déploiement du code de chaîne terminé, la console de sortie montre que le code de chaîne a été installé et déployé sur le canal indiqué.

Dépannage

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

Autorisations Go manquantes
Lors de l'installation du projet de code de chaîne Go dans le réseau local, une erreur similaire au texte suivant 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 n'a été vue que sous Mac OS. Il s'agit d'un problème connu.
Solution : Exécutez la commande suivante pour modifier les autorisations de votre $GOROOT, puis réessayez le déploiement.
sudo chmod -R 777 /usr/local/go
Échec du déploiement
En raison d'une défaillance du déploiement, d'un déploiement corrompu, d'un conteneur pair Docker plein ou d'un pair Docker arrêté dans le réseau local, une erreur similaire au texte suivant 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û à un conteneur pair qui ne peut pas redémarrer correctement.
Solution : Recréez votre environnement d'exécution en sélectionnant votre environnement local dans le volet Environnements, 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 de l'environnement requise
Une erreur similaire au texte suivant 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 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

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

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

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

  1. Dans le volet Environnements 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 du mandataire REST, entrez l'URL du mandataire REST de l'instance Oracle Blockchain Platform distante.
    • Entrez le nom d'utilisateur et le mot de passe Oracle Identity Cloud Service pour un utilisateur 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 Identity Cloud Service. Pour plus d'informations sur les utilisateurs et les rôles, voir Configurer les utilisateurs et les rôles d'application dans Administration d'Oracle Blockchain Platform.
  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 et que vous 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 code de chaîne à déployer dans le volet Codes de chaîne.
  2. Dans le volet Détails du code de chaîne, sélectionnez Déployer.
  3. Dans l'assistant de déploiement, le nom du projet de chaîne est déjà spécifié.
    • Sélectionnez votre environnement cible. Pour un déploiement à distance, sélectionnez 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é dans l'instance distante d'Oracle Blockchain Platform, le journal de la console montre que les événements suivants ont eu lieu :
  • Les détails d'Oracle Blockchain Platform ont été extraits.
  • La liste des 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é avec succès sur chaque pair et sur le canal.

Dans un environnement avec plusieurs organisations, pour déployer de nouveau le code de chaîne sur le même canal au moyen d'une instance de participant, utiliser 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 Blockchain App Builder. Après avoir apporté des modifications à votre code de chaîne, lorsque vous déployez de nouveau, le projet est automatiquement mis à niveau. 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 programme de 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 des 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.

Si votre 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 des 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, dans l'affirmative, la version a été extraite.
  • La version du code de chaîne a été mise à niveau (par exemple, de la version 1.0 à 2.0).

Dans un environnement avec plusieurs organisations, pour mettre à niveau le code de chaîne, utiliser la console et approuver manuellement le code de chaîne par les participants.

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

Vous pouvez encapsuler 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 qui contient 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 votre projet de code de chaîne dans le volet Codes de chaîne.
  2. Cliquez avec le droit et sélectionnez Ensemble.
  3. Sélectionnez un 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 de chaîne 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 Blockchain 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 Blockchain package l'infrastructure de code de chaîne en conséquence en fonction de votre sélection.

Lorsque la commande est exécutée avec succès, l'emplacement du package est retourné.