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

Öffnen Sie auf der Registerkarte Entwicklungstools den Bereich Anwendungsentwicklung.

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:

  1. Gehen Sie in der Konsole zur Registerkarte Kanäle, suchen und klicken Sie dann auf den Namen des Kanals, der den Chaincode ausführt.
  2. 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.

  1. Projektabhängigkeiten installieren:
    mvn install
  2. Laden Sie den Quellcode grpc-java herunter:

    git clone https://github.com/grpc/grpc-java.git
  3. Suchen Sie die grpc-Version, die Ihre fabric-sdk-java verwendet, und sehen Sie sich den Code an.
    Prüfen Sie im Verzeichnis grpc-java die Version von grpc, die fabric-sdk-java verwendet:
    cd grpc-java && git checkout v1.38.0
  4. Ändern Sie den Code, um einen alpn-Fehler von der Serverseite zu vermeiden. Erstellen Sie eine grpc-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);
  5. Spielen Sie den Patch ein:

    git apply grpc-java.patch
  6. 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 unter grpc-java/netty/build/libs/grpc-netty-shaded-1.38.0.jar verfügbar.

  7. Fügen Sie das gepatchte Package dem lokalen Maven-Repository hinzu.

    Ersetzen Sie das ursprüngliche Package grpc-netty-shaded .jar auf eine der beiden folgenden Arten durch das gepatchte Package:
    • Installieren Sie das Package mit Maven nach lokaler Datei:
      mvn 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
      Sie müssen das Ziel groupid, artifactid und version 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.

  8. Führen Sie das Projekt aus.