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, cela 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 de 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
- Vous pouvez installer le SDK Hyperledger Fabric Node.js à l'aide du lien de cet onglet.
- (Hyperledger Fabric v1.4.7) Si vous l'avez déjà installé, vous devez le modifier pour qu'il fonctionne avec Oracle Blockchain Platform en suivant les instructions de la section Mise à jour des SDK Hyperledger Fabric v1.4.7 pour qu'ils fonctionnent avec Oracle Blockchain Platform.
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 l'avez déjà installé, vous devez le modifier pour qu'il fonctionne avec Oracle Blockchain Platform en suivant les instructions de la section Mise à jour des SDK Hyperledger Fabric v2.x pour qu'ils fonctionnent avec Oracle Blockchain Platform.
- (Hyperledger Fabric v1.4.7) Si vous l'avez déjà installé, vous devez le modifier pour qu'il fonctionne avec Oracle Blockchain Platform en suivant les instructions de la section Mise à jour des SDK Hyperledger Fabric v1.4.7 pour qu'ils fonctionnent avec Oracle Blockchain Platform.
Installez un outil de construction tel qu'Apache Maven.
Structure de votre application
Votre application Java doit être structurée comme suit :
/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
Votre application Node.js doit être structurée 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 vérifier le registre dans la console Oracle Blockchain Platform pour voir vos modifications :
- Accédez à l'onglet Channels (Canaux) de la console et localisez et cliquez sur le nom du canal exécutant la chaîne de blocs.
- 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.
Conception 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.
Mettez à jour les kits SDK Hyperledger Fabric v1.4.7 pour qu'ils fonctionnent avec Oracle Blockchain Platform
Il existe une incompatibilité entre un composant d'infrastructure OCI et les kits SDK Node.js et Java fournis avec Hyperledger Fabric v1.4.7. Pour corriger ce problème, procédez comme suit dans cette rubrique.
Méthodes de mise à jour des SDK Hyperledger Fabric
Il existe deux façons de mettre à jour le kit SDK :
- Utilisation de scripts Oracle pour télécharger et installer le kit SDK Node.js ou le kit SDK Java qui appliquera des patches au code lors de l'installation.
- Manuellement, comme décrit dans cette rubrique.
Pour utiliser les scripts, dans l'onglet Outils de développement de la console, sélectionnez le panneau Développement d'applications. Les liens permettant de télécharger à la fois le kit SDK Node.js et le kit SDK Java comportent des mises à jour intégrées qui appliqueront des patches au code lors de son installation.
- Kit SDK Java Fabric : nous avons créé un fichier
grpc-netty-1.23.0.jar
mis à jour, qui est le module référencé par le kit SDK Java qui nécessite des modifications. - SDK Fabric Node.js : nous avons créé le script
npm_bcs_client.sh
pour remplacer les opérations Fabricnpm install
standard que les utilisateurs effectueraient pour télécharger et installer le package client Fabric Node.js. Le script exécute la même commande npm, mais il a également appliqué les patches au composant requis et le reconstruit.
Mise à jour manuelle du kit SDK Fabric Node.js
grpc-node
afin de connecter les homologues et les donneurs d'ordres avec le client grpcs (via TLS).
-
Installez
fabric-client
sans exécuter le script de build du module grpc :npm install --ignore-scripts fabric-client
-
Sous Windows, vous devez désactiver explicitement ALPN
- Mettez à jour
node_modules/grpc/binding.gyp
en modifiant :
to'_WIN32_WINNT=0x0600'
'_WIN32_WINNT=0x0600','TSI_OPENSSL_ALPN_SUPPORT=0'
- En raison du problème décrit dans https://github.com/nodejs/node/issues/4932, pour créer
grpc-node
sous Windows, vous devez d'abord enlever<node_root_dir>/include/node/openssl/
. Exécutez la commande suivante pour rechercher<node_root_dir>
:node-gyp configure
- Mettez à jour
-
Recréer
grpc
npm rebuild --unsafe-perm --build-from-source
Mise à jour manuelle du kit SDK Java Fabric
Pour fabric-sdk-java
, procédez comme suit pour reconstruire le package grpc-netty
afin de connecter les homologues et les donneurs d'ordres avec le client grpcs (via tls). grpc-netty
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 par votre instancefabric-sdk-java
et extrayez le code.Différentes versions de
fabric-sdk-java
peuvent utiliser une version différente degrpc
. Consultezpom.xml
pour connaître la version degrpc
utilisée parfabric-sdk-java
. Par exemple,fabric-sdk-java 1.4.11
utilisegrpc-java 1.23.0
comme indiqué dans son fichierpom.xml
: https://github.com/hyperledger/fabric-sdk-java/blob/v1.4.11/pom.xml.Dans le répertoiregrpc-java
, extrayez la version degrpc
utilisée parfabric-sdk-java
:git checkout -b v1.23.0
-
Modifiez le code pour éviter une erreur
alpn
du côté serveur.- Modifiez le code cible de
grpc-java_root/netty/src/main/java/io/grpc/netty/ProtocolNegotiators.java
. - Dans la fonction
userEventTriggered0
, modifiez :
toif (NEXT_PROTOCOL_VERSIONS.contains(handler.applicationProtocol())) {
Le code ressemblera à ce qui suit :if (handler.applicationProtocol() == null || NEXT_PROTOCOL_VERSIONS.contains(handler.applicationProtocol())) {
@Override protected void userEventTriggered0(ChannelHandlerContext ctx, Object evt) throws Exception { ... if (handler.applicationProtocol() == null || NEXT_PROTOCOL_VERSIONS.contains(handler.applicationProtocol())) { // Successfully negotiated the protocol. logSslEngineDetails(Level.FINER, ctx, "TLS negotiation succeeded.", null); ... }
- Modifiez le code cible de
-
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
. Ou vous pouvez simplement reconstruire le sous-projetgrpc-netty
dans le répertoire netty grpcgradle build
.Une fois la compilation terminée, vous pouvez obtenir le package JAR auquel des patches ont été appliqués à la cible dans le répertoire
grpc-java\netty\build\libs\grpc-netty-1.23.0.jar
. -
Ajoutez le package auquel des patches ont été appliqués dans le référentiel local Maven.
Remplacez le package jar officielgrpc-netty
par le package auquel le patch a été appliqué 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=local_patched_grpc_netty_package_root/grpc-netty-1.23.0.jar -DgroupId=io.grpc -DartifactId=grpc-netty -Dversion=1.23.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.