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
- Vous pouvez installer le SDK Hyperledger Fabric Java en utilisant le lien dans cet onglet.
- (Hyperledger Fabric v2.x) Si vous avez déjà installé le kit SDK, vous devez le modifier pour qu'il fonctionne avec Oracle Blockchain Platform en suivant les instructions de Mise à jour des kits SDK Hyperledger Fabric v2.x afin qu'ils fonctionnent avec Oracle Blockchain Platform.
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 :
- Accédez à l'onglet Canaux dans la console, puis localisez le canal exécutant le code chaîne et cliquez sur son nom.
- 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
.
-
Installer les dépendances du projet :
mvn install
-
Téléchargez le code source
grpc-java
:git clone https://github.com/grpc/grpc-java.git
- Recherchez la version de
grpc
utilisée parfabric-sdk-java
et extrayez le code.Dans le répertoiregrpc-java
, extrayez la version degrpc
utilisée parfabric-sdk-java
:cd grpc-java && git checkout v1.38.0
-
Modifiez le code pour éviter toute erreur
alpn
côté serveur. Créez un fichier de patchgrpc-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);
-
Appliquez le patch:
git apply grpc-java.patch
-
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 surgrpc-java/netty/build/libs/grpc-netty-shaded-1.38.0.jar
. -
Ajoutez le package auquel des patches ont été appliqués dans votre référentiel local Maven.
Remplacez le packagegrpc-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 :
Vous devez conserver la ciblemvn 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
etversion
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é.
-
-
Exécutez le projet.