Utiliser les SDK Hyperledger Fabric pour développer des applications
Les applications utilisent un kit 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 afin de 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 requête ou visualiser le statut d'une transaction. Reportez-vous à API REST pour Oracle Blockchain Platform.
Toutefois, cette flexibilité signifie que vous souhaiterez 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 du kit SDK
Plusieurs versions des SDK Hyperledger Fabric sont disponibles. Utilisez 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 l'utilisation du kit SDK Fabric pour Node.js sont disponibles ici : Hyperledger Fabric SDK for Node.js documentation
Dans l'onglet Outils de développement, ouvrez le panneau Développement d'applications. Vous pouvez installer le SDK Hyperledger Fabric Node.js à l'aide du lien de cet onglet.
Installation du SDK Hyperledger Fabric pour Java
Des informations sur l'utilisation du SDK Fabric pour Java sont disponibles ici : Documentation du SDK Hyperledger Fabric pour Java
- Vous pouvez installer le SDK Java Hyperledger Fabric à l'aide du lien de 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 fournies dans Mise à jour des kits SDK Hyperledger Fabric v2.x pour qu'ils fonctionnent avec Oracle Blockchain Platform.
Installez un outil de build 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. Outre les messages de statut renvoyés par votre application, vous pouvez vérifier le registre dans la console Oracle Blockchain Platform pour voir vos modifications :
- Accédez à l'onglet Canaux de la console, puis localisez le canal exécutant le code chaîne et cliquez sur son nom.
- Dans le panneau Livre du canal, consultez le récapitulatif du registre du code chaîne.
Mettez à jour les kits 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 kit SDK Java fourni avec Hyperledger Fabric v2.x. Pour corriger ce problème, procédez comme suit dans cette rubrique.
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 nécessitant 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 recréer le package grpc-netty-shaded
afin de connecter les homologues et les donneurs d'ordres 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
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 une erreur
alpn
du 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 la compilation terminée, le package
.jar
auquel le patch a été appliqué est disponible à l'adressegrpc-java/netty/build/libs/grpc-netty-shaded-1.38.0.jar
. -
Ajoutez le package auquel des patches ont été appliqués dans le 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 package. Accédez au référentiel Maven local, recherchez le répertoire dans lequel se trouve le package cible et remplacez le package par le package auquel des patches ont été appliqués.
-
-
Exécutez le projet.