Chaincode mit Visual Studio Code bereitstellen
Nachdem Ihr Chaincode-Projekt erstellt wurde, können Sie es lokal im automatisch generierten Hyperledger Fabric-Netzwerk oder remote in Ihrer Oracle Blockchain Platform Cloud oder Enterprise Edition bereitstellen. Sie können das Chaincode-Projekt auch für das manuelle Deployment in Oracle Blockchain Platform verpacken.
Chaincode in einem lokalen Hyperledger Fabric-Netzwerk bereitstellen
Nachdem Sie Ihr Chaincode-Projekt erstellt haben, können Sie es in einem lokalen Hyperledger Fabric-Basisnetzwerk testen.
Wenn Sie die Blockchain App Builder-Erweiterung für VS Code installieren, wird automatisch ein Hyperledger Fabric-Netzwerk mit einem einzigen Kanal erstellt. Dies wird im Bereich Umgebungen als Local Environment
aufgeführt. Sie können diese Umgebung nicht löschen oder ändern. Sie können Chaincodes einfach darin bereitstellen und neu erstellen, wenn sie nicht mehr ordnungsgemäß funktioniert.
Blockchain App Builder Chaincode-Bereitstellung startet das grundlegende Hyperledger Fabric-Netzwerk und andere Services und installiert und stellt den Chaincode für Sie bereit.
- Wählen Sie im Bereich Chaincode-Details die Option Bereitstellen aus.
- Im Deployment Wizard:
- Stellen Sie sicher, dass der korrekte Chaincode-Name ausgewählt ist.
- Wählen Sie die Zielumgebung aus. Wählen Sie für das lokale Deployment die Option Lokale Umgebung aus.
- Wählen Sie den Kanal aus, in dem Sie bereitstellen möchten. Ein Kanal namens "
mychannel
" wird standardmäßig mit der Installation der Erweiterung erstellt und kann zum Testen verwendet werden. - Geben Sie optional alle erforderlichen Ausgangsparameter ein.
- Bei Tokenprojekten müssen Sie beim ersten Deployment eine Liste der Tokenadministratoren als Parameter eingeben. Die Liste ist ein Array mit
{user_id, org_id}
-Informationen, das die Tokenadministratoren angibt. Verwenden Sie für das lokale Hyperledger Fabric-Netzwerk den WertOrg1MSP
für das Feldorg_id
. Bei NFT-Kettencodes sind die Schlüssel für den ParameteradminList
userId
undorgId
für TypeScript undUserId
undOrgId
für Go. Nach dem ersten Deployment können Sie ein leeres Array für den ParameteradminList
angeben oder den ParameteradminList
verwenden, um Tokenadministratoren hinzuzufügen. Andere Deployer, die nicht der erste Deployer sind, müssen ein leeres Array für den ParameteradminList
angeben. Öffnen Sie dazu die ParameterlisteInit
im Deployment-Bereich, und klicken Sie auf das Minuszeichen (-) neben dem ParameteradminList
. Dadurch wird ein leeres Array ausgewählt.
- Klicken Sie auf Bereitstellen.
Wenn das Deployment des Chaincodes abgeschlossen ist, gibt die Ausgabekonsole an, dass der Chaincode erfolgreich installiert und auf dem angegebenen Kanal bereitgestellt wurde.
Problembehandlung
Beim Ausführen des Chaincode-Projekts in einem lokalen Netzwerk können folgende Probleme auftreten.
- Fehlende Go-Berechtigungen
- Bei der Installation des Go Chaincode-Projekts im lokalen Netzwerk wird möglicherweise ein Fehler wie der Folgende in der Ausgabekonsole angezeigt:
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
- Deployment-Fehler
- Aufgrund eines Deployment-Fehlers, eines beschädigten Deployments, eines vollen Docker-Peercontainers oder eines abgebrochenen Docker-Peers im lokalen Netzwerk wird möglicherweise ein Fehler wie der folgende angezeigt:
============ 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
- Umgebungsneuerstellung erforderlich
- Möglicherweise wird ein Fehler wie folgt angezeigt:
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
Stellen Sie Ihren Chaincode in einem Remote-Oracle Blockchain Platform-Netzwerk bereit
Nachdem Sie Ihr Chaincode-Projekt in einem lokalen Netzwerk bereitgestellt und getestet haben, um sicherzustellen, dass es wie geplant funktioniert, können Sie es in Oracle Blockchain Platform bereitstellen.
Verbindungskonfiguration zu einer Oracle Blockchain Platform-Instanz erstellen
Sie müssen eine Blockchain Platform-Instanz hochgefahren und gestartet haben, um diesen Schritt abzuschließen.
- Klicken Sie im Visual Studio-Codebereich Umgebungen auf das Symbol Umgebung erstellen.
- Führen Sie im Assistenten Umgebungsdetails folgende Schritte aus:
- Geben Sie den Namen für die Remoteumgebung ein.
- Geben Sie eine Beschreibung ein.
- Geben Sie unter Remote-URL die URL der Remote-Oracle Blockchain Platform-Instanz ein.
- Geben Sie den Benutzernamen und das Kennwort für Oracle Identity Cloud Service für einen Oracle Blockchain Platform-Benutzer mit den Rollen
ADMIN
oderREST_CLIENT
ein. Um den Chaincode aufzurufen, ist nur die RolleREST_CLIENT
erforderlich. Um den Chaincode bereitzustellen oder zu aktualisieren, muss dem IDCS-Benutzer auch die RolleADMIN
zugewiesen werden. Weitere Informationen zu Benutzern und Rollen finden Sie in Setup von Benutzern und Anwendungsrollen.
- Klicken Sie auf Create, um die Umgebung zu speichern. Der Benutzername und das Kennwort werden vorübergehend in der lokalen Visual Studio Code-Sitzung gespeichert. Wenn Sie Visual Studio Code schließen und dann eine neue Visual Studio Code-Sitzung starten, müssen Sie den Benutzernamen und das Kennwort erneut eingeben.
Stellen Sie Ihren Chaincode bereit
- Wählen Sie das Chaincode-Projekt, das Sie bereitstellen möchten, im Bereich Chaincodes aus.
- Wählen Sie im Bereich Chaincode-Details die Option Bereitstellen aus.
- Im Deployment-Assistenten muss der Name des Chaincode-Projekts vorab ausgefüllt werden.
- Wählen Sie Ihre Zielumgebung aus. Wählen Sie für das Remote-Deployment die zuvor eingerichtete Oracle Blockchain Platform-Umgebung aus.
- Geben Sie den Namen des Kanals ein, in dem Sie bereitstellen möchten.
- Legen Sie optional alle erforderlichen Anfangsparameter fest.
- Klicken Sie auf Bereitstellen.
- Die Oracle Blockchain Platform-Details wurden erfolgreich abgerufen.
- Die Liste der Peers wurde erfolgreich abgerufen.
- Das Chaincode-Projekt wurde erfolgreich installiert.
- Das Chaincode-Projekt wurde erfolgreich genehmigt und festgeschrieben.
- Der Chaincode wurde erfolgreich auf jedem Peer und Kanal bereitgestellt.
Um den Chaincode in einer Umgebung mit mehreren Organisationen über eine Teilnehmerinstanz auf demselben Kanal erneut bereitzustellen, verwenden Sie die Konsole, um den Chaincode bereitzustellen.
Chaincode-Projekt aktualisieren
Das Upgrade des Chaincodes wird automatisch von Blockchain App Builder durchgeführt. Nachdem Sie Änderungen an Ihrem Chaincode vorgenommen haben, stellen Sie ihn einfach erneut bereit. Dadurch wird das Projekt automatisch für Sie aktualisiert. Wenn Sie den Upgradeprozess ausführen, können Sie ein leeres Array für den Parameter adminList
übergeben oder den Parameter adminList
verwenden, um Tokenadministratoren hinzuzufügen. Wenn Sie nicht der erste Deployer sind, müssen Sie ein leeres Array für den Parameter adminList
angeben. Um ein leeres Array für den Parameter adminList
zu übergeben, öffnen Sie die Parameterliste Init
im Deployment-Bereich, und klicken Sie dann auf die Schaltfläche mit dem Minuszeichen (-) neben dem Parameter adminList
. Dadurch wird ein leeres Array ausgewählt.
- Die Oracle Blockchain Platform-Details wurden erfolgreich abgerufen.
- Die Liste der Peers wurde erfolgreich abgerufen.
- Es wurde geprüft, ob das Chaincode-Projekt bereits installiert ist. Wenn ja, wurde die Version abgerufen.
- Die Chaincode-Version wurde erfolgreich upgegradet (z.B. von Version 1.0 auf 2.0).
Um den Chaincode in einer Umgebung mit mehreren Organisationen zu aktualisieren, verwenden Sie die Konsole, und genehmigen Sie den Chaincode manuell von den Teilnehmern.
Package Ihres Chaincode-Projekts zur manuellen Bereitstellung in Oracle Blockchain Platform
Sie können Ihre Chaincode-Projekte zur manuellen Bereitstellung in der Oracle Blockchain Platform Cloud oder Enterprise Edition verpacken.
Die Funktion Package erstellt eine Archivdatei, die nur die Build- und Verteilungsdateien enthält. Die Ordner binary
, libs
, node_modules
und test
aus Ihrem Chaincode-Projekt sind nicht enthalten. Diese Archivdatei kann manuell zur Bereitstellung in Oracle Blockchain Platform hochgeladen werden.
- Wählen Sie Ihr Chaincode-Projekt im Bereich Chaincodes aus.
- Klicken Sie mit der rechten Maustaste, und wählen Sie Package aus.
- Wählen Sie einen Speicherort für das Package aus, und klicken Sie auf Ausgabeordner auswählen.
Wenn Sie die Funktion Package für den Chaincode TypeScript ausführen, werden Sie aufgrund von Änderungen an den Softwarevoraussetzungen zur Eingabe des Provisioning-Datums der Oracle Blockchain Platform-Instanz aufgefordert, für die Sie das Package erstellen möchten. Der in Blockchain App Builder erstellte TypeScript-Kettencode ist ohne Änderungen an der zugrunde liegenden Infrastruktur nicht mit früheren Versionen von Oracle Blockchain Platform kompatibel. Blockchain App Builder verpackt die Chaincode-Infrastruktur entsprechend Ihrer Auswahl.
Wenn der Befehl erfolgreich abgeschlossen wurde, wird der Speicherort des Packages zurückgegeben.