Déploiement du code chaîne à l'aide de la CLI
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éployer le code chaîne sur un réseau Hyperledger Fabric local
Une fois le projet de code chaîne créé, vous pouvez le déployer sur un réseau Hyperledger Fabric local. Ce réseau de test à canal unique est créé pour vous lorsque vous installez Blockchain App Builder.
La commande Blockchain App Builder ochain run
démarre le réseau Hyperledger Fabric et d'autres services, et installe et déploie le code chaîne pour vous.
my-mac:GOProject myname$ ochain run -h
Usage: run [options] [...args]
Run chaincode project locally in debug mode.
Arguments :
[...args] (optional) Chaincode instantiate arguments. Arguments should be space separated.
Options:
-h, --help output command usage information
-D, --debug enable debug logging
-P, --debug-port (optional) specify debug process port
-b, --build (optional) rebuild runtime if already exists
-p, --project (optional) Path to Chaincode project to run. If not specified, it defaults to current directory.
Examples :
$> ochain run
Projets avec jeton
ochain run
:
ochain run <adminList array>
adminList
est un tableau d'informations qui spécifie les administrateurs de jeton. La baie adminList
est un paramètre obligatoire lorsque vous déployez un projet de code chaîne de jeton pour la première fois. Si vous déployez à nouveau le projet, vous pouvez transmettre 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
. Les informations de paramètre sont différentes pour les jetons fongibles et les jetons non fongibles :
- Pour les jetons fongibles qui utilisent la norme de structure de taxonomie de jeton, les paramètres sont
org_id
etuser_id
. - Pour tous les jetons qui utilisent la norme ERC-1155, les paramètres sont
orgId
etuserId
. - Pour les jetons non fongibles qui utilisent la norme ERC-721 et un projet TypeScript, les paramètres sont
orgId
etuserId
. - Pour les jetons non fongibles qui utilisent la norme ERC-721 et un projet Go, les paramètres sont
OrgId
etUserId
.
Les exemples suivants concernent les jetons non fongibles.
adminList
pour TypeScript sur Mac OSX et Linux :'[{"userId":"userid", "orgId":"OrgMSPId"}]'
adminList
pour Go sous Mac OSX et Linux :'[{"UserId":"userid", "OrgId":"OrgMSPId"}]'
adminList
pour TypeScript sous Microsoft Windows :"[{\"userId\":\"userid\", \"orgId\":\"OrgMSPId\"}]"
adminList
pour Go sous Microsoft Windows :"[{\"UserId\":\"userid\", \"OrgId\":\"OrgMSPId\"}]"
Pour le réseau Hyperledger Fabric local, le champ OrgMSPId
est fixé à la valeur Org1MSP
.
Si vous souhaitez voir les journaux de débogage, vous pouvez transmettre l'option --debug
à la commande. Sous Windows, utilisez l'invite de commande au lieu de PowerShell si vous spécifiez l'option --debug
. Vous pouvez exécuter le réseau de base et déployer le code chaîne sur un port différent du port par défaut en transmettant l'option --port
à la commande.
Vérification
Les journaux suivants indiquent que le code chaîne a été installé et déployé.
my-mac:TSProject myname$ ochain run
Recreating orderer.example.com ... done
Recreating ca.example.com ... done
Recreating peer0.org1.example.com ... done
[2020-09-23T18: 04:09.132] [INFO] default -
============ Started Install Chaincode ============
[2020-09-23T18:04:09.193] [INFO] default Chaincode TSProject:l not installed.
[2020-09-23T18:04:09.317] [INFO] default - Successfully sent install Proposal and received ProposalResponse
[2020-09-23T18:04:09.317] [INFO] default - Successfully installed chaincode TSProject
[2020-09-23T18:04:09.317] [INFO] default -
============ Finished Install Chaincode ============
[2020-09-23T18:04:09.317] [INFO] default - Successfully installed chaincode TSProject
[2020-09-23T18:04:09.318] [INFO] default -
============ started instantiate Chaincode ============
[2020-09-23T18:04:09.366] [INFO] default - Successfully sent Proposal and received ProposalResponse
[2020-09-23T18:04:11.434] [INFO] default - The chaincode instantiate transaction has been committed on peer localhost:7051
[2020-09-23T18:04:11.434] [INFO] default - The chaincode instantiate transaction was valid.
[2020-09-23T18:04:11.435] [INFO] default - Successfully sent transaction to the orderer.
[2020-09-23T18:04:11.435] [INFO] default - Successfully instantiated chaincode TSProject on channel mychannel
[2020-09-23T18:04:11.435] [INFO] default -
============ Finished instantiate Chaincode ============
[2020-09-23T18:04:11.4351 INFO] default - Successfully instantiated chaincode TSProject on channel mychannel
INFO (Runtime): Chaincode TSProject installed and ready:
INFO (RunCommand): Chaincode TSProject deployed
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 :
My-Mac:GoProj myname$ ochain run Starting ca.example.com ... done Starting orderer.example.com ... done Starting peer0.orgl.example.com ... done 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 Stopping peer0.orgl.exmple.com ... done Stopping ca.example.com ... done Stopping orderer.example.con ... done
- 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
- Recréation d'environnement requise
- Recréez votre environnement si une erreur channel not found ou une erreur similaire au texte suivant s'affiche :
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
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.
Déployer le code chaîne
Syntaxe : ochain deploy [options] [...args]
Vous pouvez utiliser les arguments et les options avec la commande ochain deploy
:
my-mac:TSProject myname$ ochain deploy -h
Usage: deploy [options] [...args]
Deploy chaincode project to Oracle Blockchain Platform
Arguments:
[...args] (optional) Chaincode instantiate arguments. Arguments should be space separated.
Options :
-h, --help output command usage information
-D, --debug enable debug logging
-P, --project <project> (optional) Path to Chaincode project to deploy. If not specified, it defaults to current directory.
-c, --channel <channel> (optional) Blockchain Channel to deploy chaincode to. If not specified, it defaults to the 'default' channel.
-u, --username <username> (required) A user name that has install chaincode privileges. Contact your administrator for more details.
-v, --userversion <userversion> (optional) A user-specified chaincode version.
If a version isn't specified, for a new chaincode it will start at v1 and then increment to v2, v3, and so on.
For an existing chaincode, v1.a will increment to v1.a1, v1 will increment to v2, and v1.0 will increment to v1.1.
-s --sign <password> (required) Password to authenticate user.
-r --url <url> (required) URL of the remote OBP instance. Example: https://<blockchain-instance-url>:7443/
Examples:
$> ochain deploy -u <username> -s <password> -r <url of the remote OBP instance> -c <name of the channel>
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 plus d'informations sur les utilisateurs et les rôles, reportez-vous à Configuration des utilisateurs et des rôles d'application.
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.
- 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, appelez à nouveau la commande ochain deploy
, qui mettra automatiquement à niveau le projet pour vous. Lorsque vous réexécutez la commande ochain deploy
, indiquez un tableau vide pour le paramètre adminList
ou utilisez 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
.
- 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.
Syntaxe : ochain package
La commande 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.
En raison des modifications apportées aux prérequis logiciels, lorsque vous exécutez la commande ochain 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.
my-mac:~ myname$ ochain package -h
Usage: package [options]
Package and archive an Ochain chaincode project
Options :
-h, --help output command usage information
-D, --debug enable debug logging
-p, --project <path> Path to the Ochain chaincode project to be packaged. If not specified, it defaults to current directory.
-o, --out <path> Path to the generated chaincode archive file. If not specified, it defaults to current directory.
About:
This CLI command packages and archives an existing chaincode project
Examples:
$> ochain package --project <Path to the Ochain chaicode project> —out <Path to the generated chaincode archive file>
Une fois la commande terminée, l'emplacement du package est renvoyé.
--project
Cette option définit l'emplacement du projet de code chaîne Blockchain App Builder à packager. S'il n'est pas spécifié, l'emplacement est par défaut le répertoire en cours.
--out
Cette option peut être utilisée pour indiquer le chemin de sortie du fichier d'archive généré. S'il n'est pas spécifié, il désigne par défaut le répertoire en cours.
ochain package -p /Blockchain/DevTools/bp1/CC -o /Blockchain/DevTools/bp1/output
"Your chaincode project has been packaged at /Blockchain/DevTools/bp1/output/CC.zip"