Utiliser les SDK Hyperledger Fabric pour développer des applications

Les applications utilisent un kit de développement logiciel (SDK) pour accéder aux API qui permettent les requêtes et les mises à jour du registre.Vous pouvez installer et utiliser les SDK Hyperledger Fabric pour développer des applications pour Oracle Blockchain Platform.

Les API REST fournies par Oracle Blockchain Platform ont été créées avec une flexibilité maximale. Vous pouvez appeler une transaction, appeler une requête ou visualiser le statut d'une transaction. Reportez-vous à API REST pour Oracle Blockchain Platform.

Cependant, cette flexibilité signifie que vous voudrez probablement encapsuler les adresses d'API existantes dans une application pour fournir un contrôle au niveau de l'objet. Les applications peuvent contenir des opérations beaucoup plus détaillées.

Versions de kit SDK

Plusieurs versions des SDK Hyperledger Fabric sont disponibles. Utiliser la version du SDK qui correspond à la version d'Hyperledger Fabric sur laquelle votre instance est basée.

Installation du SDK Hyperledger Fabric pour Node.js

Des informations sur la façon d'utiliser le kit SDK Fabric pour Node.js sont disponibles ici : documentation du kit SDK Hyperledger Fabric pour Node.js

Dans l'onglet Outils de développement, ouvrez le panneau Développement d'applications. Vous pouvez installer le SDK Hyperledger Fabric Node.js en utilisant le lien dans cet onglet.

Installation du SDK Hyperledger Fabric pour Java

Des informations sur la façon d'utiliser le kit SDK Fabric pour Java sont disponibles ici : documentation du kit SDK Hyperledger Fabric pour Java

Dans l'onglet Outils de développement, ouvrez le panneau Développement d'applications.

Installez un outil de création tel qu'Apache Maven.

Structurer votre application

Structurez votre application Java de la manière suivante :

/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

Structurez votre application Node.js de la manière suivante :

/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

Exécution de l'application

Vous êtes maintenant prêt à exécuter et tester l'application. Outre les messages de statut renvoyés par votre application, vous pouvez consulter le registre dans la console Oracle Blockchain Platform pour voir vos modifications :

  1. Accédez à l'onglet Canaux dans la console, puis localisez le canal exécutant le code chaîne et cliquez sur son nom.
  2. Dans le panneau Livre du canal, affichez le récapitulatif du registre du code chaîne.

Mettre à jour les SDK Hyperledger Fabric v2.x pour qu'ils fonctionnent avec Oracle Blockchain Platform

Il existe une incompatibilité entre un composant d'infrastructure OCI et le SDK Java fourni avec Hyperledger Fabric v2.x. Pour corriger ce problème, procédez comme suit.

Méthodes de mise à jour du SDK Hyperledger Fabric

Il existe deux façons de mettre à jour le kit SDK :

  • Téléchargez le package modifié à partir de la console. Nous avons créé un fichier grpc-netty-shaded-1.38.0.jar mis à jour, qui est le module référencé par le kit SDK Java et qui nécessite des modifications.
  • Créez le package manuellement, comme décrit dans cette rubrique.

Pour télécharger le fichier grpc-netty-shaded-1.38.0.jar, cliquez sur l'onglet Outils de développement de la console, puis sélectionnez le panneau Développement d'applications.

Création manuelle du package

Pour le projet fabric-sdk-java, procédez comme suit pour reconstruire le package grpc-netty-shaded afin de connecter les homologues et les donneurs d'ordre au client grpcs (via TLS). Le package grpc-netty-shaded est un sous-projet de grpc-java.

  1. Installer les dépendances du projet :
    mvn install
  2. Téléchargez le code source grpc-java :

    git clone https://github.com/grpc/grpc-java.git
  3. Recherchez la version de grpc utilisée par fabric-sdk-java et extrayez le code.
    Dans le répertoire grpc-java, extrayez la version de grpc utilisée par fabric-sdk-java :
    cd grpc-java && git checkout v1.38.0
  4. Modifiez le code pour éviter toute erreur alpn côté serveur. Créez un fichier de patch grpc-java-patch avec le contenu suivant :
    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. Appliquez le patch:

    git apply grpc-java.patch
  6. Créez le projet pour générer le package cible auquel des patches ont été appliqués. Utilisez Gradle pour créer le projet grpc-java-shaded :

    cd netty/shaded
    gradle build -PskipAndroid=true -PskipCodegen=true

    Une fois le build terminé, le package .jar auquel un patch a été appliqué à la cible est disponible sur grpc-java/netty/build/libs/grpc-netty-shaded-1.38.0.jar.

  7. Ajoutez le package auquel des patches ont été appliqués dans votre référentiel local Maven.

    Remplacez le package grpc-netty-shaded .jar d'origine par le package auquel des patches ont été appliqués de l'une des deux manières suivantes :
    • Utilisez Maven pour installer le package par fichier local :
      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
      Vous devez conserver la cible groupid, artifactid et version identiques au package à remplacer.
    • Remplacez manuellement votre colis. Accédez au référentiel Maven local, recherchez le répertoire dans lequel se trouve le package cible et remplacez le package par un package patché.

  8. Exécutez le projet.