Distribuire il codice concatenato utilizzando Visual Studio Code
Dopo aver creato un progetto con codice concatenato, è possibile distribuirlo localmente nella rete Hyperledger Fabric generata automaticamente o in remoto in Oracle Blockchain Platform Cloud o Enterprise Edition. È inoltre possibile raggruppare il progetto del 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 eseguirne il test in una rete di base Hyperledger Fabric locale.
Quando si installa l'estensione Blockchain App Builder per Visual Studio Code, viene creata automaticamente una rete Hyperledger Fabric con un singolo canale. Viene elencato come Local Environment
nel riquadro Ambienti. Non è possibile eliminare o modificare questo ambiente; è sufficiente distribuire i codici concatenati e ricrearli se non funziona correttamente.
La rete di test creata quando si installa Blockchain App Builder esegue Hyperledger Fabric v2.5.7 e Hyperledger Fabric CA v1.5.9.
La distribuzione del codice concatenato di Blockchain App Builder avvia la rete di base di Hyperledger Fabric, altri servizi e installa e distribuisce il codice concatenato per te.
- Nel riquadro Dettagli codice cat. selezionare Distribuisci.
- Nella procedura guidata di distribuzione:
- 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 si desidera distribuire. Un canale denominato "
mychannel
" viene creato per impostazione predefinita quando l'estensione è installata e può essere utilizzato per il test. - Facoltativamente, immettere i parametri iniziali obbligatori.
- Per i progetti token, la prima volta che si esegue la distribuzione è necessario immettere un elenco di amministratori di token come parametro. L'elenco è un array di informazioni
{user_id, org_id}
che specifica gli amministratori dei token. Per la rete locale Hyperledger Fabric 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 implementatori che non sono il primo implementatore 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 mostrerà che il codice concatenato è stato installato e distribuito correttamente sul canale specificato.
Risoluzione dei problemi
Durante l'esecuzione del progetto con codice concatenato in una rete locale, potrebbero verificarsi i seguenti problemi.
- Autorizzazioni Go mancanti
- Durante l'installazione del progetto Go chaincode nella rete locale, è possibile che venga visualizzato un errore simile al testo seguente nella console Output:
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 arrestato nella rete locale, è possibile che venga visualizzato un errore simile al testo 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 obbligatoria
- È possibile che venga visualizzato 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
Distribuire il codice concatenato in una rete Oracle Blockchain Platform remota
Dopo aver distribuito e testato il tuo progetto di codice concatenato su una rete locale per garantire che funzioni come progettato, puoi distribuirlo su 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 Oracle 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 proxy REST immettere l'URL proxy REST 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 chiamare il codice concatenato, è necessario solo il ruoloREST_CLIENT
. Per distribuire o aggiornare il codice concatenato, all'utente di Identity Cloud Service deve essere assegnato anche il ruoloADMIN
. Per ulteriori informazioni su utenti e ruoli, vedere Impostazione di utenti e ruoli applicazione in Amministrazione di Oracle Blockchain Platform.
- 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 tuo Chaincode
- Selezionare il progetto codice concatenato che si desidera distribuire nel riquadro Codici concatenati.
- Nel riquadro Dettagli codice cat. selezionare Distribuisci.
- Nella procedura guidata di distribuzione, il nome del progetto codice concatenato è già specificato.
- 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 distribuire.
- Facoltativamente, impostare eventuali parametri iniziali obbligatori.
- Fare clic su Distribuisci.
- Recupero dei dettagli di Oracle Blockchain Platform riuscito.
- Recupero della lista di peer riuscito.
- Il progetto chaincode è stato installato correttamente.
- Approvazione e commit del progetto codice concatenato riusciti.
- Distribuzione del codice concatenato su ciascun peer e canale riuscita.
In un ambiente con più organizzazioni, per distribuire nuovamente 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, quando si esegue di nuovo la distribuzione il progetto viene aggiornato automaticamente. Quando si esegue il processo di aggiornamento, è possibile passare 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
. Per passare un array vuoto per il parametro adminList
, aprire l'elenco dei parametri Init
nel riquadro di distribuzione, quindi fare clic sul pulsante del segno meno (–) accanto al parametro adminList
, che selezionerà un array vuoto.
- Recupero dei dettagli di Oracle Blockchain Platform riuscito.
- Recupero della lista di peer riuscito.
- È stato effettuato un controllo per determinare se il progetto con codice concatenato è già installato e, in tal caso, la versione è stata recuperata.
- Aggiornamento della versione del codice concatenato riuscito (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.
Inserisci in package il tuo progetto Chaincode per la distribuzione manuale in Oracle Blockchain Platform
Puoi raggruppare i tuoi progetti di codice concatenato per la distribuzione manuale in Oracle Blockchain Platform Cloud o Enterprise Edition.
La funzione Package 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 codice concatenato nel riquadro Codici concatenati.
- Fare clic con il pulsante destro del mouse, quindi selezionare Pacchetto.
- Selezionare una posizione in cui salvare il package, quindi fare clic su Seleziona cartella di output.
A causa delle modifiche apportate 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 sottostante. Blockchain App Builder distribuisce l'infrastruttura del codice concatenato in base alla selezione effettuata.
Una volta completato correttamente il comando, viene restituita la posizione del pacchetto.