Anwendungen mit den Hyperledger Fabric-SDKs entwickeln
Anwendungen verwenden ein Software Development Kit (SDK), um auf die APIs zuzugreifen, die Abfragen und Updates für das Ledger zulassen.Sie können die Hyperledger Fabric-SDKs installieren und verwenden, um Anwendungen für Oracle Blockchain Platform zu entwickeln.
Die von Oracle Blockchain Platform bereitgestellten REST-APIs wurden mit größtmöglicher Flexibilität erstellt. Sie können eine Transaktion aufrufen, eine Abfrage aufrufen oder den Status einer Transaktion anzeigen. Siehe REST-API für Oracle Blockchain Platform.
Diese Flexibilität bedeutet jedoch, dass Sie wahrscheinlich die vorhandenen API-Endpunkte in einer Anwendung umbrechen möchten, um eine Kontrolle auf Objektebene bereitzustellen. Anwendungen können viel feiner granulierte Vorgänge enthalten.
SDK-Versionen
Mehrere Versionen der Hyperledger Fabric-SDKs sind verfügbar. Verwenden Sie die Version des SDK, die mit der Version von Hyperledger Fabric übereinstimmt, auf der Ihre Instanz basiert.
Hyperledger Fabric-SDK für Node.js installieren
Informationen zur Verwendung des Fabric-SDK für Node.js finden Sie hier: Hyperledger Fabric-SDK für Node.js-Dokumentation
Öffnen Sie auf der Registerkarte Entwicklungstools den Bereich Anwendungsentwicklung. Sie können das Hyperledger Fabric Node.js SDK über den Link auf dieser Registerkarte installieren.
Hyperledger Fabric-SDK für Java installieren
Informationen zur Verwendung des Fabric-SDK für Java finden Sie hier: Dokumentation zum Hyperledger Fabric-SDK für Java
- Sie können das Hyperledger Fabric Java SDK über den Link auf dieser Registerkarte installieren.
- (Hyperledger Fabric v2.x) Wenn Sie das SDK zuvor installiert haben, müssen Sie es so ändern, dass es mit Oracle Blockchain Platform funktioniert, indem Sie die Anweisungen unter Hyperledger Fabric v2.x-SDKs für die Arbeit mit Oracle Blockchain Platform aktualisieren befolgen.
Installieren Sie ein Build-Tool wie Apache Maven.
Anwendungen strukturieren
Strukturieren Sie die Java-Anwendung wie im folgenden Beispiel:
/Application
/artifacts
/cypto
/orderer
Contains the certificates required for the application to act on the orderer node
In participant instances only contains TLS certificates
/peer
Contains the certificates required for the application to act on the peer node
/src
chaincode.go if installing and deploying chaincode to the blockchain
/java
pom.xml or other build configuration files
/resources
Any resources used by the Java code, including artifacts such as the endorsement policy yaml file and blockchain configuration properties
/src
Java source files
Strukturieren Sie die Node.js-Anwendung wie im folgenden Beispiel:
/Application
/artifacts
/cypto
/orderer
Contains the certificates required for the application to act on the orderer node
In participant instances only contains TLS certificates
/peer
Contains the certificates required for the application to act on the peer node
/src
chaincode.go if installing and deploying chaincode to the blockchain
/node
package.json file
application.js
/app
Any javascript files called by the application
/tools
Anwendung ausführen
Sie können die Anwendung jetzt ausführen und testen. Neben Statusmeldungen, die von Ihrer Anwendung zurückgegeben werden, können Sie das Hauptbuch in der Oracle Blockchain Platform-Konsole prüfen, um Ihre Änderungen anzuzeigen:
- Gehen Sie in der Konsole zur Registerkarte Kanäle, suchen und klicken Sie dann auf den Namen des Kanals, der den Chaincode ausführt.
- Zeigen Sie im Bereich Buch des Kanals die Buchübersicht des Chaincodes an.
Aktualisieren Sie die Hyperledger Fabric v2.x-SDKs für die Arbeit mit Oracle Blockchain Platform
Es gibt eine Inkompatibilität zwischen einer OCI-Infrastrukturkomponente und dem mit Hyperledger Fabric v2.x bereitgestellten Java-SDK. Befolgen Sie die Schritte unter diesem Thema, um dieses Problem zu beheben.
Methoden zum Aktualisieren des Hyperledger Fabric-SDK
Es gibt zwei Möglichkeiten, das SDK zu aktualisieren:
- Laden Sie das geänderte Paket von der Konsole herunter. Wir haben eine aktualisierte Datei
grpc-netty-shaded-1.38.0.jar
erstellt. Dabei handelt es sich um das Modul, das vom Java-SDK referenziert wird und Änderungen erfordert. - Erstellen Sie das Package manuell, wie in diesem Thema beschrieben.
Um die Datei grpc-netty-shaded-1.38.0.jar
herunterzuladen, klicken Sie auf die Registerkarte Entwicklertools der Konsole, und wählen Sie dann den Bereich Anwendungsentwicklung aus.
Paket manuell erstellen
Führen Sie für das Projekt fabric-sdk-java
die folgenden Schritte aus, um das Package grpc-netty-shaded
neu zu erstellen, um die Peers und Orderer mit dem grpcs
-Client (über TLS) zu verbinden. Das Package grpc-netty-shaded
ist ein Unterprojekt von grpc-java
.
-
Projektabhängigkeiten installieren:
mvn install
-
Laden Sie den Quellcode
grpc-java
herunter:git clone https://github.com/grpc/grpc-java.git
- Suchen Sie die
grpc
-Version, die Ihrefabric-sdk-java
verwendet, und sehen Sie sich den Code an.Prüfen Sie im Verzeichnisgrpc-java
die Version vongrpc
, diefabric-sdk-java
verwendet:cd grpc-java && git checkout v1.38.0
-
Ändern Sie den Code, um einen
alpn
-Fehler von der Serverseite zu vermeiden. Erstellen Sie einegrpc-java-patch
-Patchdatei mit dem folgenden Inhalt:diff --git a/netty/src/main/java/io/grpc/netty/ProtocolNegotiators.java b/netty/src/main/java/io/grpc/netty/ProtocolNegotiators.java index 19d3e01b7..ebc4786a3 100644 — a/netty/src/main/java/io/grpc/netty/ProtocolNegotiators.java +++ b/netty/src/main/java/io/grpc/netty/ProtocolNegotiators.java @@ -611,7 +611,8 @@ final class ProtocolNegotiators { SslHandshakeCompletionEvent handshakeEvent = (SslHandshakeCompletionEvent) evt; if (handshakeEvent.isSuccess()) { SslHandler handler = ctx.pipeline().get(SslHandler.class); if (sslContext.applicationProtocolNegotiator().protocols() + if (handler.applicationProtocol() == null + || sslContext.applicationProtocolNegotiator().protocols() .contains(handler.applicationProtocol())) { // Successfully negotiated the protocol. logSslEngineDetails(Level.FINER, ctx, "TLS negotiation succeeded.", null);
-
Spielen Sie den Patch ein:
git apply grpc-java.patch
-
Erstellen Sie das Projekt, um das gepatchte Zielpackage zu generieren. Verwenden Sie gradle, um das Projekt
grpc-java-shaded
zu erstellen:cd netty/shaded gradle build -PskipAndroid=true -PskipCodegen=true
Nach Abschluss des Builds ist das gepatchte Zielpackage
.jar
untergrpc-java/netty/build/libs/grpc-netty-shaded-1.38.0.jar
verfügbar. -
Fügen Sie das gepatchte Package dem lokalen Maven-Repository hinzu.
Ersetzen Sie das ursprüngliche Packagegrpc-netty-shaded
.jar
auf eine der beiden folgenden Arten durch das gepatchte Package:-
Installieren Sie das Package mit Maven nach lokaler Datei:
Sie müssen das Zielmvn install:install-file -Dfile=grpc-netty-shaded-build/grpc-netty-shaded-1.38.0.jar -DgroupId=io.grpc -DartifactId=grpc-netty-shaded -Dversion=1.38.0 -Dpackaging=jar
groupid
,artifactid
undversion
unverändert wie das zu ersetzende Package beibehalten. -
Ersetzen Sie Ihr Paket manuell. Gehen Sie zum lokalen Maven-Repository, suchen Sie das Verzeichnis, in dem sich das Zielpackage befindet, und ersetzen Sie das Package durch ein gepatchtes Package.
-
-
Führen Sie das Projekt aus.