Chaincode mit Visual Studio Code bereitstellen
Nachdem Sie ein Chaincode-Projekt erstellt haben, 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 die manuelle Bereitstellung 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 Visual Studio 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.
Das Testnetzwerk, das bei der Installation von Blockchain App Builder erstellt wird, führt Hyperledger Fabric v2.5.7 und Hyperledger Fabric CA v1.5.9 aus.
Blockchain App Builder Chaincode-Bereitstellung startet das Hyperledger Fabric-Basisnetzwerk, 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-Assistenten:
- Stellen Sie sicher, dass der richtige Chaincode-Name ausgewählt ist.
- Wählen Sie die Zielumgebung aus. Wählen Sie für das lokale Deployment die Option Lokale Umgebung.
- Wählen Sie den Kanal aus, für den Sie das Deployment ausführen möchten. Ein Kanal mit dem Namen "
mychannel
" wird standardmäßig erstellt, wenn die Erweiterung installiert ist, und kann zum Testen verwendet werden. - Geben Sie optional alle erforderlichen Anfangsparameter 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-Chaincodes 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 erstmalige Deployer sind, müssen ein leeres Array für den ParameteradminList
angeben. Öffnen Sie dazu die ParameterlisteInit
im Deployment-Bereich, und klicken Sie auf die Schaltfläche mit dem Minuszeichen (–) neben dem ParameteradminList
, der ein leeres Array auswählt.
- Klicken Sie auf Bereitstellen.
Wenn das Deployment des Chaincodes abgeschlossen ist, zeigt die Konsole Ausgabe an, dass der Chaincode erfolgreich auf dem angegebenen Kanal installiert und bereitgestellt wurde.
Problembehandlung
Beim Ausführen Ihres 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 ähnlich dem folgenden Text 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 Docker-Peers, der im lokalen Netzwerk gestoppt wurde, wird möglicherweise ein Fehler ähnlich dem folgenden Text 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 ähnlich dem folgenden Text 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
Chaincode in einem Remote-Oracle Blockchain Platform-Netzwerk bereitstellen
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 für eine Oracle Blockchain Platform-Instanz erstellen
Um diesen Schritt abzuschließen, muss eine Oracle Blockchain Platform-Instanz hochgefahren und gestartet sein.
- Klicken Sie im Visual Studio Code-Fensterbereich Umgebungen auf das Symbol Umgebung erstellen.
- Gehen Sie im Assistenten Umgebungsdetails wie folgt vor:
- Geben Sie den Namen für die Remoteumgebung ein.
- Geben Sie eine Beschreibung ein.
- Geben Sie unter REST-Proxy-URL die REST-Proxy-URL der Oracle Blockchain Platform-Remoteinstanz 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 upzugraden, muss dem Identity Cloud Service-Benutzer auch die RolleADMIN
zugewiesen sein. Weitere Informationen zu Benutzern und Rollen finden Sie unter Benutzer und Anwendungsrollen einrichten in Oracle Blockchain Platform verwalten.
- Klicken Sie auf Erstellen, um die Umgebung zu speichern. Der Benutzername und das Passwort 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-Session starten, müssen Sie den Benutzernamen und das Kennwort erneut eingeben.
Chaincode bereitstellen
- 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 ist der Name des Chaincode-Projekts bereits angegeben.
- Wählen Sie die 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, für den 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.
Wenn Sie den Chaincode in einer Umgebung mit mehreren Organisationen über eine Teilnehmerinstanz erneut auf demselben Kanal bereitstellen möchten, verwenden Sie die Konsole, um den Chaincode bereitzustellen.
Chaincode-Projekt upgraden
Das Upgrade des Chaincodes wird automatisch vom Blockchain App Builder durchgeführt. Nachdem Sie Änderungen an Ihrem Chaincode vorgenommen haben, wird das Projekt beim erneuten Deployment automatisch upgegradet. 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 erstmalige 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 auf die Schaltfläche mit dem Minuszeichen (–) neben dem Parameter adminList
, der ein leeres Array auswä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 zu aktualisieren, verwenden Sie in einer Umgebung mit mehreren Organisationen die Konsole, und genehmigen Sie den Chaincode manuell von den Teilnehmern.
Paketieren Sie Ihr Chaincode-Projekt für die manuelle Bereitstellung auf Oracle Blockchain Platform
Sie können Ihre Chaincode-Projekte für die manuelle Bereitstellung in 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 die rechte Maustaste, und wählen Sie Package aus.
- Wählen Sie einen Speicherort aus, in dem das Paket gespeichert werden soll, 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-Chaincode 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 Pakets zurückgegeben.