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 Ledger, initialisieren es, schließen Aktualisierungen ab, wenn sie von Anwendungen ausgelöst werden, und antworten auf Abfragen. Chaincodes können auch Ereignisse posten, mit denen Anwendungen benachrichtigt werden und nachgelagerte Vorgänge abgeschlossen werden können. Beispiel: Nachdem Bestellungen, Rechnungen und Lieferdatensätze mit einem Chaincode abgeglichen wurden, kann ein Ereignis gebucht werden, damit 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 Hyperledger Fabric-Dokumentation, um gültige Chaincodes zu schreiben.
-
Willkommen bei Hyperledger Fabric. Lesen Sie die Abschnitte Schlüsselkonzepte und Tutorials, bevor Sie Ihren eigenen Chaincode schreiben.
-
Go Programming Language. Die Go-Compiler, -Tools und -Bibliotheken bieten eine Vielzahl von Ressourcen, die das Schreiben von Chaincodes vereinfachen.
-
Package shim. Der Package Shim bietet APIs für den Chaincode, um auf seine Statusvariablen zuzugreifen, Transaktionskontext abzurufen und andere Chaincodes aufzurufen. In der Package Shim-Dokumentation wird die tatsächliche Syntax beschrieben, die für Ihren Chaincode erforderlich ist.
Oracle Blockchain Platform bietet herunterladbare Beispiele, mit denen Sie verstehen können, wie Sie Chaincodes und Anwendungen schreiben. Siehe Was sind Chaincode-Beispiele?
Sie können Ihren Chaincodes Rich Query-Syntax hinzufügen, um die Statusdatenbank abzufragen. Siehe SQL Rich Query-Syntax und CouchDB Rich Query-Syntax.
Go Chaincode verpacken
Nachdem Sie Ihren Chaincode geschrieben haben, komprimieren Sie ihn in eine Datei im .zip-Format. Sie müssen kein Package für den Go-Chaincode erstellen oder signieren. Der Installations- und Deployment-Prozess von Oracle Blockchain Platform erledigt dies für Sie, wie unter Typischer Workflow zum Bereitstellen von Chaincodes beschrieben.
Wenn Ihr Chaincode externe Abhängigkeiten aufweist, können Sie sie im Lieferantenverzeichnis der Datei .zip ablegen.
Anbieter der Shim für Go Chaincodes
Die Go-Chaincode-Shim-Abhängigkeit ist nicht mehr in Hyperledger Fabric enthalten. Der Shim muss nun zu Go-Kettencodes vendored (importiert) werden, bevor sie auf einem Peer installiert werden.
Sie können Go-Module oder ein Drittanbietertool verwenden, wie z. B. "Govendor to Vendor" für die Chaincode-Shim, und sie auf die Version aktualisieren, die mit Hyperledger Fabric funktioniert.
Weitere Informationen finden Sie in der Hyperledger Fabric-Dokumentation unter Chaincode shim changes (Nur Go Chaincode) und Upgrade Chaincodes mit vendored shim (Chaincode shim ändern). Weitere Informationen zu Go-Modulen finden Sie in Go Modules Reference.
Node.js-Kettencode verpacken
package.json-Datei mit zwei Abschnitten erstellen:
-
Im Abschnitt
scriptswird erklärt, wie der Chaincode gestartet wird. -
Der Abschnitt
dependenciesgibt 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.jsonmuss sich im Root-Verzeichnis befinden. - Die Datei JavaScript des Eintrags kann sich an einer beliebigen Stelle im Paket befinden.
- Wenn
"start" : "node <start>.js"nicht in der Dateipackage.jsonangegeben ist, muss sich die Dateiserver.jsim Root-Verzeichnis befinden.
Komprimieren Sie den Chaincode und die Packagedatei im Format .zip, 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.
.zip-Format, um sie auf Oracle Blockchain Platform zu installieren. In der folgenden Liste sind Beispieldateien in einem Chaincode-Package aufgeführt: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.zip-Format, um sie auf Oracle Blockchain Platform zu installieren. In der folgenden Liste sind Beispieldateien in einem Chaincode-Package aufgeführt: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 filesChaincode 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 befolgen.
Chaincode upgraden
Führen Sie ein Upgrade eines bereitgestellten Chaincodes durch, indem Sie die Schritte unter Chaincode upgraden ausführen.