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, führen Aktualisierungen durch, 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 ausgeführt 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. Die Abschnitte "Schlüsselkonzepte" und "Tutorials" sollten gelesen werden, 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 bietet APIs für den Chaincode, um auf seine Zustandsvariablen, den Transaktionskontext und andere Chaincodes zuzugreifen. Dies dokumentiert die tatsächliche Syntax, 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.

Package und Zip a Go Chaincode

Sobald Sie Ihren Chaincode geschrieben haben, legen Sie ihn in eine ZIP-Datei. Sie müssen kein Paket 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) oder Typischer Workflow zum Bereitstellen von Chaincodes (Hyperledger Fabric v1.4.7) beschrieben.

Wenn Ihr Chaincode externe Abhängigkeiten aufweist, können Sie diese im Lieferantenverzeichnis Ihrer ZIP-Datei ablegen.

Anbieter der Shim für Go Chaincodes (Hyperledger Fabric v2.x)

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 jetzt in Go-Kettencodes vendored (importiert) werden, bevor er auf einem Peer mit Hyperledger Fabric v2.x 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.

Package und Zip eines Node.js Chaincodes

Wenn Sie einen Node.js-Kettencode schreiben, müssen Sie eine 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 Verpackungsregeln für einen Node.js-Kettencode lauten:
  • 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 package.json angegeben ist, muss sich server.js im Root-Verzeichnis befinden.

Speichern Sie den Chaincode und die Packagedatei in einer ZIP-Datei, um sie auf Oracle Blockchain Platform zu installieren.

Java Chaincode packen und komprimieren

Wenn Sie einen Java-Kettencode schreiben, können Sie Gradle oder Maven wählen, um den Chaincode zu erstellen.

Wenn Sie Gradle verwenden, platzieren Sie den Chaincode, build.gradle und settings.gradle in einer ZIP-Datei, um ihn auf Oracle Blockchain Platform zu installieren. Im Folgenden finden Sie eine Beispieldateiliste eines Chaincode-Pakets:
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
Wenn Sie Maven verwenden, platzieren Sie den Chaincode und pom.xml in einer ZIP-Datei, um ihn auf Oracle Blockchain Platform zu installieren. Im Folgenden finden Sie eine Beispieldateiliste eines Chaincode-Pakets:
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

Nachdem Sie Ihren Chaincode geschrieben haben, müssen Sie ihn testen. Informationen hierzu finden Sie unter:

Chaincode installieren und bereitstellen

Nachdem Sie Ihren Chaincode getestet haben, können Sie ihn wie unter Typischer Workflow zum Bereitstellen von Chaincodes (Hyperledger Fabric v2.x) oder Typischer Workflow zum Bereitstellen von Chaincodes (Hyperledger Fabric v1.4.7) beschrieben bereitstellen.

Chaincode upgraden

Sie können einen bereitgestellten Chaincode upgraden, indem Sie die Schritte unter Chaincode upgraden (Hyperledger Fabric v2.x) oder Chaincode upgraden (Hyperledger Fabric v1.4.7) ausführen.