Utiliser les trousses 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 des interrogations et des mises à jour du livre.Vous pouvez installer et utiliser les trousses 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 à l'esprit. Vous pouvez appeler une transaction, appeler une interrogation ou voir le statut d'une transaction. Voir API REST pour Oracle Blockchain Platform.

Toutefois, cette flexibilité signifie que vous voudrez probablement encapsuler les points d'extrémité d'API existants 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 trousse SDK

Plusieurs versions des trousses SDK Hyperledger Fabric sont disponibles. Utilisez la version de la trousse SDK qui correspond à la version de Hyperledger Fabric sur laquelle repose votre instance.

Installation de la trousse SDK Hyperledger Fabric pour Node.js

Pour plus d'informations sur l'utilisation de la trousse SDK Fabric pour Node.js, consultez la documentation sur la trousse SDK Hyperledger Fabric pour Node.js

Dans l'onglet Outils pour développeurs, ouvrez le volet Développement d'applications. Vous pouvez installer la trousse SDK Hyperledger Fabric Node.js à l'aide du lien de cet onglet.

Installation de la trousse SDK Hyperledger Fabric pour Java

Vous trouverez des informations sur l'utilisation de la trousse SDK Fabric pour Java ici : Documentation sur la trousse SDK Hyperledger Fabric pour Java

Dans l'onglet Outils pour développeurs, ouvrez le volet Développement d'applications.

Installez un outil de compilation tel qu'Apache Maven.

Structurer votre application

Structurez votre application Java comme dans l'exemple suivant :

/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 comme dans l'exemple suivant :

/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. En plus des messages de statut retournés par votre application, vous pouvez vérifier le livre dans la console Oracle Blockchain Platform pour voir vos modifications :

  1. Allez à l'onglet Canaux de la console, localisez le canal exécutant le code de chaîne et cliquez dessus.
  2. Dans le volet Livre du canal, consultez le sommaire du livre du code de chaîne.

Mettez à jour les trousses SDK Hyperledger Fabric v2.x pour qu'elles fonctionnent avec Oracle Blockchain Platform

Il existe une incompatibilité entre un composant d'infrastructure OCI et la trousse SDK Java fournie avec Hyperledger Fabric v2.x. Suivez les étapes de cette rubrique pour corriger ce problème.

Méthodes de mise à jour de la trousse SDK Hyperledger Fabric

Il existe deux façons de mettre à jour la trousse 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 la trousse SDK Java qui nécessite des modifications.
  • Créez l'ensemble 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 pour développeurs de la console, puis sélectionnez le volet Développement d'applications.

Création manuelle du package

Pour le projet fabric-sdk-java, effectuez les étapes suivantes pour recréer l'ensemble grpc-netty-shaded afin de connecter les pairs et les responsables des commandes au client grpcs (au moyen de TLS). L'ensemble grpc-netty-shaded est un sous-projet de grpc-java.

  1. Installer les dépendances de 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 que votre fabric-sdk-java utilise et extrayez le code.
    Dans le répertoire grpc-java, extrayez la version de grpc que fabric-sdk-java utilise :
    cd grpc-java && git checkout v1.38.0
  4. Modifiez le code pour éviter une erreur alpn du côté serveur. Créez un fichier de correctif 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 correctif :

    git apply grpc-java.patch
  6. Créez le projet pour générer l'ensemble de correctifs cible. Utilisez le gradle pour créer le projet grpc-java-shaded :

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

    Une fois la compilation terminée, l'ensemble .jar corrigé cible est disponible à l'adresse grpc-java/netty/build/libs/grpc-netty-shaded-1.38.0.jar.

  7. Ajoutez l'ensemble corrigé dans votre référentiel local Maven.

    Remplacez l'ensemble grpc-netty-shaded .jar initial par l'ensemble corrigé de l'une des deux façons suivantes :
    • Utilisez Maven pour installer l'ensemble 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 garder la cible groupid, artifactid et version identiques à l'ensemble que vous voulez remplacer.
    • Remplacez manuellement votre colis. Accédez au référentiel Maven local, recherchez le répertoire où se trouve le package cible et remplacez le package par le package patché.

  8. Exécutez le projet.