Distribuisci il tuo codice concatenato utilizzando l'interfaccia CLI
Una volta creato il progetto con codice concatenato, puoi distribuirlo localmente sulla rete Hyperledger Fabric generata automaticamente o in remoto su Oracle Blockchain Platform Cloud o Enterprise Edition. È inoltre possibile creare package del progetto con codice concatenato per la distribuzione manuale in Oracle Blockchain Platform.
Distribuisci il tuo codice concatenato su una rete Hyperledger Fabric locale
Dopo aver creato il progetto chaincode, è possibile distribuirlo in una rete Hyperledger Fabric locale. Questa rete di test a canale singolo viene creata automaticamente quando si installa Blockchain App Builder.
Il comando ochain run
di Blockchain App Builder avvia la rete Hyperledger Fabric, altri servizi e installa e distribuisce automaticamente il codice concatenato.
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
Progetti token
ochain run
:
ochain run <adminList array>
adminList
è un array di informazioni che specifica gli amministratori di token. L'array adminList
è un parametro obbligatorio quando si distribuisce per la prima volta un progetto codice concatenato di token. Se si distribuisce di nuovo il progetto, è possibile passare un array vuoto per il parametro adminList
oppure utilizzare il parametro adminList
per aggiungere amministratori di token. Gli altri programmi di distribuzione che non sono il primo programma di distribuzione devono fornire un array vuoto per il parametro adminList
. Le informazioni sui parametri sono diverse per i token fungibili e i token non fungibili:
- Per i token fungibili che utilizzano lo standard Token Taxonomy Framework, i parametri sono
org_id
euser_id
. - Per tutti i token che utilizzano lo standard ERC-1155, i parametri sono
orgId
euserId
. - Per i token non fungibili che utilizzano lo standard ERC-721 e un progetto TypeScript, i parametri sono
orgId
euserId
. - Per i token non fungibili che utilizzano lo standard ERC-721 e un progetto Go, i parametri sono
OrgId
eUserId
.
Gli esempi seguenti si riferiscono ai token non fungibili.
adminList
per TypeScript su Mac OSX e Linux:'[{"userId":"userid", "orgId":"OrgMSPId"}]'
adminList
per Go su Mac OSX e Linux:'[{"UserId":"userid", "OrgId":"OrgMSPId"}]'
adminList
per TypeScript in Microsoft Windows:"[{\"userId\":\"userid\", \"orgId\":\"OrgMSPId\"}]"
adminList
per Go on Microsoft Windows:"[{\"UserId\":\"userid\", \"OrgId\":\"OrgMSPId\"}]"
Per la rete Hyperledger Fabric locale, il campo OrgMSPId
viene impostato sul valore Org1MSP
.
Per visualizzare i log di debug, è possibile passare l'opzione --debug
al comando. In Windows, utilizzare Prompt dei comandi anziché PowerShell se si specifica l'opzione --debug
. È possibile eseguire la rete di base e distribuire il codice concatenato su una porta diversa da quella predefinita passando l'opzione --port
al comando.
Verifica
I log riportati di seguito mostrano che il codice concatenato è stato installato e distribuito correttamente.
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
Risoluzione dei problemi
È possibile che si verifichino i seguenti problemi durante l'esecuzione del progetto con codice concatenato su una rete locale.
- Autorizzazioni Go mancanti
- Durante l'installazione del progetto Go chaincode nella rete locale, potrebbe essere visualizzato un errore simile al seguente:
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
- Errore di distribuzione
- A causa di un errore di distribuzione, una distribuzione danneggiata, un contenitore peer Docker pieno o il peer Docker è stato interrotto nella rete locale, potrebbe verificarsi un errore simile al seguente:
============ 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
- Ricreazione dell'ambiente richiesta
- Ricreare l'ambiente se viene visualizzato un errore di canale non trovato o un errore simile al testo seguente:
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
Distribuisci il tuo codice concatenato su una rete Oracle Blockchain Platform remota
Dopo aver distribuito e testato il progetto con codice concatenato su una rete locale per assicurarsi che funzioni secondo la progettazione, è possibile distribuirlo in Oracle Blockchain Platform.
Distribuisci il codice concatenato
Sintassi: ochain deploy [options] [...args]
Con il comando ochain deploy
è possibile usare i seguenti argomenti e opzioni:
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>
Immettere il nome utente e la password di Oracle Identity Cloud Service per un utente di Oracle Blockchain Platform con i ruoli ADMIN
o REST_CLIENT
. Per ulteriori informazioni sugli utenti e i ruoli, vedere Impostazione di utenti e ruoli applicazione.
Per richiamare il codice concatenato, è necessario solo il ruolo REST_CLIENT
. Per distribuire o aggiornare il codice concatenato, all'utente IDCS deve essere assegnato anche il ruolo ADMIN
.
- Recupero dei dettagli di Oracle Blockchain Platform riuscito.
- Recupero della lista di pari livello riuscito.
- Installazione del progetto codice concatenato riuscita.
- Approvazione e commit del progetto con codice concatenato riusciti.
- Distribuzione del codice concatenato su ogni peer e canale riuscita.
In un ambiente con più organizzazioni, per ridistribuire il codice concatenato sullo stesso canale tramite un'istanza partecipante, utilizzare la console per distribuire il codice concatenato.
Aggiornamento del progetto Chaincode
L'aggiornamento del codice concatenato viene gestito automaticamente da Blockchain App Builder. Dopo aver apportato le modifiche al codice concatenato, richiamare nuovamente il comando ochain deploy
, che aggiornerà automaticamente il progetto. Quando si esegue di nuovo il comando ochain deploy
, specificare un array vuoto per il parametro adminList
oppure utilizzare il parametro adminList
per aggiungere amministratori di token. Se non si è il primo programma di distribuzione, è necessario fornire un array vuoto per il parametro adminList
.
- Recupero dei dettagli di Oracle Blockchain Platform riuscito.
- Recupero della lista di pari livello riuscito.
- È stato effettuato un controllo per determinare se il progetto codice concatenato è già installato e, in caso affermativo, la versione è stata recuperata.
- La versione del codice concatenato è stata aggiornata (ad esempio, dalla versione 1.0 alla 2.0).
In un ambiente con più organizzazioni, per aggiornare il codice concatenato, utilizzare la console e approvare manualmente il codice concatenato dai partecipanti.
Crea un package per il tuo progetto Chaincode per la distribuzione manuale in Oracle Blockchain Platform
È possibile creare package per i progetti con codice concatenato per la distribuzione manuale in Oracle Blockchain Platform Cloud o Enterprise Edition.
Sintassi: ochain package
Il comando package
crea un file di archivio che contiene solo i file di build e di distribuzione. Le cartelle binary
, libs
, node_modules
e test
del progetto codice concatenato non sono incluse. Questo file di archivio può essere caricato manualmente in Oracle Blockchain Platform per la distribuzione.
A causa delle modifiche ai prerequisiti software, quando si esegue il comando ochain package
per il codice concatenato TypeScript, viene richiesta la data di provisioning dell'istanza di Oracle Blockchain Platform per la quale si desidera creare il package. Il codice concatenato TypeScript creato in Blockchain App Builder non è compatibile con le versioni precedenti di Oracle Blockchain Platform senza modifiche all'infrastruttura di base. Blockchain App Builder esegue il package dell'infrastruttura del codice concatenato in base alla selezione effettuata.
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>
Quando il comando viene completato correttamente, viene restituita la posizione del pacchetto.
--project
Questa opzione definisce la posizione del progetto codice concatenato di Blockchain App Builder da creare nel package. Se non viene specificato, per impostazione predefinita viene utilizzata la directory corrente.
--out
Questa opzione può essere utilizzata per fornire il percorso di output del file di archivio generato. Se questa operazione non viene specificata, verrà usata automaticamente la directory corrente.
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"