Distribuisci il codice concatenato utilizzando Visual Studio Code
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.
Distribuire il codice concatenato in una rete Hyperledger Fabric locale
Dopo aver creato il progetto con codice concatenato, è possibile testarlo in una rete di base Hyperledger Fabric locale.
Quando si installa l'estensione Blockchain App Builder per VS Code, viene creata automaticamente una rete Hyperledger Fabric con un singolo canale. Verrà visualizzato come Local Environment
nel riquadro Ambienti. Impossibile eliminare o modificare questo ambiente. È possibile distribuirvi codici concatenati e ricrearlo se non funziona più correttamente.
La distribuzione del codice concatenato di Blockchain App Builder avvia la rete di base Hyperledger Fabric, altri servizi e installa e distribuisce automaticamente il codice concatenato.
- Nel riquadro Dettagli codice di connessione selezionare Distribuisci.
- Nella distribuzione guidata:
- Assicurarsi che sia selezionato il nome del codice concatenato corretto.
- Selezionare l'ambiente di destinazione. Per la distribuzione locale, scegliere Ambiente locale.
- Selezionare il canale in cui eseguire la distribuzione. Un canale denominato "
mychannel
" viene creato per impostazione predefinita con l'installazione dell'estensione e può essere utilizzato per i test. - Facoltativamente, immettere i parametri iniziali che potrebbero essere obbligatori.
- Per i progetti token, la prima volta che si distribuisce è necessario immettere una lista di amministratori token come parametro. La lista è un array di informazioni
{user_id, org_id}
che specifica gli amministratori di token. Per la rete Hyperledger Fabric locale, utilizzare il valoreOrg1MSP
per il campoorg_id
. Per i codici concatenati NFT, le chiavi per il parametroadminList
sonouserId
eorgId
per TypeScript eUserId
eOrgId
per Go. Dopo la prima distribuzione, è possibile fornire un array vuoto per il parametroadminList
oppure utilizzare il parametroadminList
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 parametroadminList
. A tale scopo, aprire l'elenco dei parametriInit
nel riquadro di distribuzione, quindi fare clic sul pulsante con il segno meno (-) accanto al parametroadminList
, che selezionerà un array vuoto.
- Fare clic su Distribuisci.
Al termine della distribuzione del codice concatenato, la console Output verificherà che sia stato installato e distribuito correttamente sul canale specificato.
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, nella console Output potrebbe essere visualizzato un errore simile al seguente:
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
- Errore di distribuzione
- A causa di un errore di distribuzione, di una distribuzione danneggiata, di un contenitore peer Docker pieno o di un peer Docker in fase di interruzione 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
- È possibile che venga visualizzato un errore simile al 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.
Creare una configurazione di connessione a un'istanza di Oracle Blockchain Platform
Per completare questo passo, è necessario disporre di un'istanza di Blockchain Platform attiva e in esecuzione.
- Nel riquadro Ambienti di Visual Studio Code fare clic sull'icona Crea ambiente.
- Nella procedura guidata Dettagli ambienti:
- Immettere il nome dell'ambiente remoto.
- Immettere una descrizione.
- In URL remoto, immettere l'URL dell'istanza remota di Oracle Blockchain Platform.
- Immettere il nome utente e la password di Oracle Identity Cloud Service per un utente di Oracle Blockchain Platform con i ruoli
ADMIN
oREST_CLIENT
. Per richiamare il codice concatenato, è necessario solo il ruoloREST_CLIENT
. Per distribuire o aggiornare il codice concatenato, all'utente IDCS deve essere assegnato anche il ruoloADMIN
. Per ulteriori informazioni sugli utenti e i ruoli, vedere Impostazione di utenti e ruoli applicazione.
- Fare clic su Crea per salvare l'ambiente. Il nome utente e la password vengono salvati temporaneamente nella sessione locale di Visual Studio Code. Se si chiude Visual Studio Code e si avvia una nuova sessione di Visual Studio Code, è necessario immettere di nuovo il nome utente e la password.
Distribuisci il codice concatenato
- Selezionare il progetto con codice concatenato che si desidera distribuire nel riquadro Codici di catena.
- Nel riquadro Dettagli codice di connessione selezionare Distribuisci.
- Nella distribuzione guidata, il nome del progetto con codice concatenato deve essere precompilato.
- Selezionare l'ambiente di destinazione. Per la distribuzione remota, scegliere l'ambiente Oracle Blockchain Platform impostato in precedenza.
- Immettere il nome del canale in cui si desidera eseguire la distribuzione.
- È possibile impostare i parametri iniziali obbligatori.
- Fare clic su Distribuisci.
- 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 modifiche al codice concatenato, rieseguire la distribuzione, che aggiornerà automaticamente il progetto. Quando si esegue il processo di aggiornamento, è possibile passare un array vuoto per il parametro adminList
o 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
. Per passare un array vuoto per il parametro adminList
, aprire l'elenco dei parametri Init
nel riquadro di distribuzione, quindi fare clic sul pulsante con il segno meno (-) accanto al parametro adminList
, che selezionerà un array vuoto.
- 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.
La funzione Pacchetto crea un file di archivio che contiene solo i file di build e 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.
- Selezionare il progetto con codice concatenato nel riquadro Codici di catena.
- Fare clic con il pulsante destro del mouse e selezionare Pacchetto.
- Selezionare una posizione in cui salvare il pacchetto, quindi fare clic su Seleziona cartella di output.
A causa delle modifiche ai prerequisiti software, quando si esegue la funzione 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.
Quando il comando viene completato correttamente, viene restituita la posizione del pacchetto.