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.
Dies 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.
Installieren des Hyperledger Fabric-SDK für Node.js
Informationen zur Verwendung des Fabric-SDK für Node.js finden Sie hier: Hyperledger Fabric-SDK für Node.js-Dokumentation
- Sie können das Hyperledger Fabric Node.js SDK über den Link auf dieser Registerkarte installieren.
- (Hyperledger Fabric v1.4.7) Wenn Sie es zuvor installiert haben, müssen Sie es so ändern, dass es mit Oracle Blockchain Platform funktioniert. Befolgen Sie dazu die Anweisungen unter Hyperledger Fabric v1.4.7 SDKs für die Arbeit mit Oracle Blockchain Platform aktualisieren.
Installieren des Hyperledger Fabric-SDK für Java
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 es zuvor installiert haben, müssen Sie es so ändern, dass es mit Oracle Blockchain Platform funktioniert. Befolgen Sie dazu die Anweisungen unter Hyperledger Fabric v2.x-SDKs für die Arbeit mit Oracle Blockchain Platform aktualisieren.
- (Hyperledger Fabric v1.4.7) Wenn Sie es zuvor installiert haben, müssen Sie es so ändern, dass es mit Oracle Blockchain Platform funktioniert. Befolgen Sie dazu die Anweisungen unter Hyperledger Fabric v1.4.7 SDKs für die Arbeit mit Oracle Blockchain Platform aktualisieren.
Installieren Sie ein Build-Tool wie Apache Maven.
Anwendungsstrukturierung
Die Java-Anwendung sollte in etwa wie folgt strukturiert sein:
/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
Die Node.js-Anwendung sollte in etwa wie folgt strukturiert sein:
/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 und suchen und klicken Sie auf den Namen des Kanals, auf dem die Blockchain ausgeführt wird.
- 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.
Package 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.
Aktualisieren Sie die Hyperledger Fabric v1.4.7-SDKs für die Arbeit mit Oracle Blockchain Platform
Es gibt eine Inkompatibilität zwischen einer OCI-Infrastrukturkomponente und den Node.js- und Java-SDKs, die in Hyperledger Fabric v1.4.7 bereitgestellt werden. Befolgen Sie die Schritte unter diesem Thema, um dieses Problem zu beheben.
Methoden zum Aktualisieren der Hyperledger Fabric-SDKs
Es gibt zwei Möglichkeiten, das SDK zu aktualisieren:
- Mit Oracle-Skripten können Sie das SDK Node.js oder das Java-SDK herunterladen und installieren, das den Code bei der Installation patcht.
- Manuell wie in diesem Thema beschrieben.
Um die Skripte zu verwenden, wählen Sie auf der Registerkarte Entwicklertools der Konsole den Bereich Anwendungsentwicklung aus. In den Links zum Herunterladen des SDK Node.js und des Java-SDK sind Updates integriert, mit denen der Code bei der Installation gepatcht wird.
- Fabric-Java-SDK: Wir haben eine aktualisierte Datei
grpc-netty-1.23.0.jar
erstellt. Dabei handelt es sich um das vom Java-SDK referenzierte Modul, das geändert werden muss. - Fabric-SDK Node.js: Wir haben das Skript
npm_bcs_client.sh
erstellt, um die standardmäßigen Fabric-Vorgängenpm install
zu ersetzen, die Benutzer zum Herunterladen und Installieren des Node.js-Fabric-Clientpackages ausführen würden. Das Skript führt denselben npm-Befehl aus, patcht aber auch die erforderliche Komponente und erstellt sie neu.
Fabric-SDK Node.js manuell aktualisieren
grpc-node
-Modul neu zu erstellen, um die Peers und Orderer mit dem grpcs-Client (über TLS) zu verbinden.
-
Installieren Sie
fabric-client
, ohne das Build-Skript des grpc-Moduls auszuführen:npm install --ignore-scripts fabric-client
-
Unter Windows müssen Sie ALPN explizit deaktivieren
- Aktualisieren Sie
node_modules/grpc/binding.gyp
, indem Sie Folgendes ändern:
bis'_WIN32_WINNT=0x0600'
'_WIN32_WINNT=0x0600','TSI_OPENSSL_ALPN_SUPPORT=0'
- Aufgrund des in https://github.com/nodejs/node/issues/4932 beschriebenen Problems müssen Sie zuerst
<node_root_dir>/include/node/openssl/
entfernen, umgrpc-node
unter Windows zu erstellen. Führen Sie den folgenden Befehl aus, um die<node_root_dir>
zu suchen:node-gyp configure
- Aktualisieren Sie
-
grpc
neu erstellennpm rebuild --unsafe-perm --build-from-source
Fabric-Java-SDK manuell aktualisieren
Führen Sie für fabric-sdk-java
die folgenden Schritte aus, um das Package grpc-netty
neu zu erstellen, um die Peers und Orderer mit dem grpcs-Client (über TLS) zu verbinden. grpc-netty
ist ein Unterprojekt von grpc-java
.
-
Projektabhängigkeiten installieren:
mvn install
-
Laden Sie den grpc-java-Quelltext herunter:
git clone https://github.com/grpc/grpc-java.git
- Suchen Sie die
grpc
-Version, die Ihrefabric-sdk-java
verwendet, und checken Sie den Code aus.Verschiedene Versionen von
fabric-sdk-java
können eine andere Version vongrpc
verwenden. Prüfen Siepom.xml
, um herauszufinden, welchegrpc
-Version Ihrefabric-sdk-java
verwendet. Beispiel:fabric-sdk-java 1.4.11
verwendetgrpc-java 1.23.0
wie inpom.xml
: https://github.com/hyperledger/fabric-sdk-java/blob/v1.4.11/pom.xml angegeben.Prüfen Sie im Verzeichnisgrpc-java
die Version vongrpc
, diefabric-sdk-java
verwendet:git checkout -b v1.23.0
-
Ändern Sie den Code, um einen
alpn
-Fehler von der Serverseite zu vermeiden.- Ändern Sie den Zielcode von
grpc-java_root/netty/src/main/java/io/grpc/netty/ProtocolNegotiators.java
. - Ändern Sie in der Funktion
userEventTriggered0
:
bisif (NEXT_PROTOCOL_VERSIONS.contains(handler.applicationProtocol())) {
Der Code sieht in ähnlicher Weise aus:if (handler.applicationProtocol() == null || NEXT_PROTOCOL_VERSIONS.contains(handler.applicationProtocol())) {
@Override protected void userEventTriggered0(ChannelHandlerContext ctx, Object evt) throws Exception { ... if (handler.applicationProtocol() == null || NEXT_PROTOCOL_VERSIONS.contains(handler.applicationProtocol())) { // Successfully negotiated the protocol. logSslEngineDetails(Level.FINER, ctx, "TLS negotiation succeeded.", null); ... }
- Ändern Sie den Zielcode von
-
Erstellen Sie das Projekt, um das gepatchte Zielpackage zu generieren. Verwenden Sie "gradle", um das Projekt
grpc-java
zu erstellen. Oder Sie können das Unterprojektgrpc-netty
einfach im Verzeichnis "grpc netty"gradle build
neu erstellen.Nachdem der Build abgeschlossen ist, können Sie das gepatchte JAR-Zielpackage im Verzeichnis
grpc-java\netty\build\libs\grpc-netty-1.23.0.jar
abrufen. -
Fügen Sie das gepatchte Package dem lokalen Maven-Repository hinzu.
Ersetzen Sie das offizielle JAR-Paketgrpc-netty
auf eine der beiden folgenden Arten durch das gepatchte Paket:-
Installieren Sie das Package mit Maven nach lokaler Datei:
Sie müssen das Zielmvn install:install-file -Dfile=local_patched_grpc_netty_package_root/grpc-netty-1.23.0.jar -DgroupId=io.grpc -DartifactId=grpc-netty -Dversion=1.23.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.