Chaincode schreiben
Ein Chaincode wird in Go, Node.js oder Java geschrieben und dann in eine ZIP-Datei verpackt, die im Oracle Blockchain Platform-Netzwerk installiert ist.
Chaincodes definieren das Datenschema im Hauptbuch, initialisieren es, vervollständigen Updates, wenn sie von Anwendungen ausgelöst werden, und reagieren auf Abfragen. Chaincodes können auch Ereignisse buchen, mit denen Anwendungen benachrichtigt und nachgelagerte Vorgänge abgeschlossen werden können. Beispiel: Nachdem Bestell-, Rechnungs- und Lieferdatensätze mit einem Chaincode abgeglichen wurden, kann ein Ereignis gebucht werden, sodass eine abonnierende Anwendung zugehörige Zahlungen verarbeiten und ein internes ERP-System aktualisieren kann.
Ressourcen für Chaincode-Entwicklung
Oracle Blockchain Platform verwendet Hyperledger Fabric als Grundlage. Verwenden Sie die Dokumentation zur Hyperledger Fabric, um gültige Chaincodes zu schreiben.
-
Willkommen bei Hyperledger Fabric. Lesen Sie die Abschnitte Schlüsselkonzepte und Tutorials, bevor Sie einen eigenen Chaincode schreiben.
-
Go Programming Language. Die Go-Compiler, -Tools und -Bibliotheken bieten eine Vielzahl von Ressourcen, die das Schreiben von Chaincodes vereinfachen.
-
Paket-Shim. Package Shim stellt APIs für den Chaincode bereit, um auf seine Zustandsvariablen zuzugreifen, den Transaktionskontext abzurufen und andere Chaincodes aufzurufen. In der Paket-Shim-Dokumentation wird die eigentliche Syntax beschrieben, die für Ihren Chaincode erforderlich ist.
Oracle Blockchain Platform bietet herunterladbare Beispiele, mit denen Sie verstehen, wie Chaincodes und Anwendungen geschrieben werden. Siehe Was sind Chaincode-Beispiele?
Sie können Ihren Chaincodes eine Rich-Query-Syntax hinzufügen, um die Statusdatenbank abzufragen. Siehe SQL Rich Query-Syntax und CouchDB Rich Query-Syntax.
Packen Sie einen Go Chaincode
Nachdem Sie Ihren Chaincode geschrieben haben, komprimieren Sie ihn in eine Datei im ZIP-Format. Sie müssen kein Package für den Go-Kettencode erstellen oder signieren. Der Installations- und Deployment-Prozess von Oracle Blockchain Platform führt dies für Sie aus, wie unter Typischer Workflow zum Bereitstellen von Chaincodes (Hyperledger Fabric v2.x) beschrieben.
Wenn Ihr Chaincode externe Abhängigkeiten aufweist, können Sie diese im Lieferantenverzeichnis Ihrer ZIP-Datei ablegen.
Verkäufer der Shim für Go Chaincodes
Die Go Chaincode-Shim-Abhängigkeit, die zuvor in früheren Versionen von Hyperledger Fabric enthalten war, ist nicht in Hyperledger Fabric v2.x enthalten. Der Shim muss nun zu Go Chaincodes vendored (importiert) werden, bevor er auf einem Peer installiert wird.
Sie können Go-Module oder ein Drittanbietertool wie Govendor verwenden, um den Chaincode-Shim herzustellen und ihn auf die Version zu aktualisieren, die mit Hyperledger Fabric v2.x funktioniert.
Weitere Informationen finden Sie unter Chaincode-Shim-Änderungen (nur Go Chaincode) und Chaincodes mit vendored Shim upgraden in der Hyperledger Fabric-Dokumentation. Weitere Informationen zu Go-Modulen finden Sie unter Referenz zu Go-Modulen.
Node.js Chaincode verpacken
package.json
-Datei mit zwei Abschnitten erstellen:
-
Im Abschnitt
scripts
wird angegeben, wie der Chaincode gestartet wird. -
Der Abschnitt
dependencies
gibt die Abhängigkeiten an.
Im Folgenden finden Sie ein Beispiel für package.json
für einen Node.js-Kettencode:
{
"name": "chaincode_example02",
"version": "1.0.0",
"description": "chaincode_example02 chaincode implemented in Node.js",
"engines": {
"node": ">=8.4.0",
"npm": ">=5.3.0"
},
"scripts": { "start" : "node chaincode_example02.js" },
"engine-strict": true,
"license": "Apache-2.0",
"dependencies": {
"fabric-shim": "~1.3.0"
}
}
- Die Datei
package.json
muss sich im Root-Verzeichnis befinden. - Der Eintrag JavaScript kann an einer beliebigen Stelle im Paket gespeichert werden.
- Wenn
"start" : "node <start>.js"
nicht in der Dateipackage.json
angegeben ist, muss sich die Dateiserver.js
im Root-Verzeichnis befinden.
Komprimieren Sie den Chaincode und die Packagedatei im ZIP-Format, um sie auf Oracle Blockchain Platform zu installieren.
Java Chaincode verpacken
Wenn Sie einen Java-Kettencode schreiben, können Sie Gradle oder Maven wählen, um den Chaincode zu erstellen.
Archive: example_gradle.zip Length Date Time Name --------- ---------- ----- ---- 610 02-14-2019 01:36 build.gradle 54 02-14-2019 01:28 settings.gradle 0 02-14-2019 01:28 src/ 0 02-14-2019 01:28 src/main/ 0 02-14-2019 01:28 src/main/java/ 0 02-14-2019 01:28 src/main/java/org/ 0 02-14-2019 01:28 src/main/java/org/hyperledger/ 0 02-14-2019 01:28 src/main/java/org/hyperledger/fabric/ 0 02-14-2019 01:28 src/main/java/org/hyperledger/fabric/example/ 5357 02-14-2019 01:28 src/main/java/org/hyperledger/fabric/example/SimpleChaincode.java --------- ------- 6021 10 files
Archive: example_maven.zip Length Date Time Name --------- ---------- ----- ---- 3313 02-14-2019 01:52 pom.xml 0 02-14-2019 01:28 src/ 0 02-14-2019 01:28 src/chaincode/ 0 02-14-2019 01:28 src/chaincode/example/ 4281 02-14-2019 01:28 src/chaincode/example/SimpleChaincode.java --------- ------- 7594 5 files
Chaincode testen
Testen Sie Ihren Chaincode, nachdem Sie ihn geschrieben haben. Siehe die folgenden Themen:
Chaincode installieren und bereitstellen
Nachdem Sie Ihren Chaincode getestet haben, können Sie ihn bereitstellen, indem Sie die Informationen unter Typischer Workflow zum Bereitstellen von Chaincodes (Hyperledger Fabric v2.x) befolgen.
Chaincode upgraden
Führen Sie ein Upgrade eines bereitgestellten Chaincodes durch, indem Sie die Schritte unter Chaincode upgraden (Hyperledger Fabric v2.x) ausführen.