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, cela 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
- Vous pouvez installer la trousse SDK Hyperledger Fabric Node.js à l'aide du lien dans cet onglet.
- (Hyperledger Fabric v1.4.7) Si vous l'avez déjà installé, vous devez le modifier pour l'utiliser avec Oracle Blockchain Platform en suivant les instructions sous Mettre à jour les trousses SDK Hyperledger Fabric v1.4.7 pour utiliser Oracle Blockchain Platform.
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
- Vous pouvez installer la trousse SDK Java pour Hyperledger Fabric à l'aide du lien dans cet onglet.
- (Hyperledger Fabric v2.x) Si vous l'avez déjà installé, vous devez le modifier pour l'utiliser avec Oracle Blockchain Platform en suivant les instructions sous Mettre à jour les trousses SDK Hyperledger Fabric v2.x pour utiliser Oracle Blockchain Platform.
- (Hyperledger Fabric v1.4.7) Si vous l'avez déjà installé, vous devez le modifier pour l'utiliser avec Oracle Blockchain Platform en suivant les instructions sous Mettre à jour les trousses SDK Hyperledger Fabric v1.4.7 pour utiliser Oracle Blockchain Platform.
Installez un outil de compilation tel qu'Apache Maven.
Structuration de votre application
Votre application Java doit être structurée de la façon 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
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. 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 :
- Allez à l'onglet Canaux dans la console et localisez et cliquez sur le nom du canal exécutant la chaîne de blocs.
- 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 de l'ensemble
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
.
-
Installer les dépendances de 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
que votrefabric-sdk-java
utilise et extrayez le code.Dans le répertoiregrpc-java
, extrayez la version degrpc
quefabric-sdk-java
utilise :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 correctifgrpc-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);
-
Appliquer le correctif :
git apply grpc-java.patch
-
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'adressegrpc-java/netty/build/libs/grpc-netty-shaded-1.38.0.jar
. -
Ajoutez l'ensemble corrigé dans votre référentiel local Maven.
Remplacez l'ensemblegrpc-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 :
Vous devez garder 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 à 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é.
-
-
Exécutez le projet.
Mettre à jour les trousses SDK Hyperledger Fabric v1.4.7 pour qu'elles fonctionnent avec Oracle Blockchain Platform
Il existe une incompatibilité entre un composant d'infrastructure OCI et les trousses SDK Node.js et Java fournies avec Hyperledger Fabric v1.4.7. Suivez les étapes de cette rubrique pour corriger ce problème.
Méthodes de mise à jour des trousses SDK Hyperledger Fabric
Il existe deux façons de mettre à jour la trousse SDK :
- Utilisation de scripts Oracle pour télécharger et installer la trousse SDK Node.js ou Java qui appliquera des correctifs au code lors de son installation.
- Manuellement comme décrit dans cette rubrique.
Pour utiliser les scripts, dans l'onglet Outils pour développeurs de la console, sélectionnez le volet Développement d'applications. Les liens permettant de télécharger à la fois la trousse SDK Node.js et la trousse SDK Java comportent des mises à jour intégrées qui appliqueront des correctifs au code lors de son installation.
- Trousse SDK Java Fabric : Nous avons créé un fichier
grpc-netty-1.23.0.jar
mis à jour, qui est le module référencé par la trousse SDK Java qui nécessite des modifications. - Trousse 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 l'ensemble client Fabric Node.js. Le script exécute la même commande npm, mais il a également corrigé le composant nécessaire et le reconstruit.
Mise à jour manuelle de la trousse SDK Fabric Node.js
grpc-node
afin de connecter les pairs et les responsables des commandes avec le client grpcs (via TLS).
-
Installez
fabric-client
sans exécuter le script de compilation du module grpc :npm install --ignore-scripts fabric-client
-
Sous Windows, vous devez désactiver ALPN explicitement
- Mettez à jour
node_modules/grpc/binding.gyp
en modifiant :
jusqu'à'_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 supprimer<node_root_dir>/include/node/openssl/
. Exécutez ce qui suit pour trouver votre<node_root_dir>
:node-gyp configure
- Mettez à jour
-
Recréer
grpc
npm rebuild --unsafe-perm --build-from-source
Mise à jour manuelle de la trousse SDK Java Fabric
Pour fabric-sdk-java
, effectuez les étapes suivantes pour reconstruire l'ensemble grpc-netty
afin de connecter les pairs et les responsables des commandes avec le client grpcs (via tls). grpc-netty
est un sous-projet de grpc-java
.
-
Installer les dépendances de projet :
mvn install
-
Télécharger le code source grpc-java :
git clone https://github.com/grpc/grpc-java.git
- Recherchez la version de
grpc
que votrefabric-sdk-java
utilise et extrayez le code.Les différentes versions de
fabric-sdk-java
peuvent utiliser des versions différentes degrpc
. Consultezpom.xml
pour savoir quelle version degrpc
votrefabric-sdk-java
utilise. Par exemple,fabric-sdk-java 1.4.11
utilisegrpc-java 1.23.0
comme indiqué danspom.xml
: https://github.com/hyperledger/fabric-sdk-java/blob/v1.4.11/pom.xml.Dans le répertoiregrpc-java
, extrayez la version degrpc
quefabric-sdk-java
utilise :git checkout -b v1.23.0
-
Modifiez le code pour éviter une erreur
alpn
du côté serveur.- Modifier le code cible de
grpc-java_root/netty/src/main/java/io/grpc/netty/ProtocolNegotiators.java
- Dans la fonction
userEventTriggered0
, modifiez :
jusqu'àif (NEXT_PROTOCOL_VERSIONS.contains(handler.applicationProtocol())) {
Le code se présente comme 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); ... }
- Modifier le code cible de
-
Créez le projet pour générer l'ensemble de correctifs cible. Utilisez le gradle pour créer le projet
grpc-java
. Ou vous pouvez simplement reconstruire le sous-projetgrpc-netty
dans le répertoire grpc netygradle build
.Une fois la compilation terminée, vous pouvez obtenir l'ensemble JAR corrigé cible dans le répertoire
grpc-java\netty\build\libs\grpc-netty-1.23.0.jar
. -
Ajoutez l'ensemble corrigé dans votre référentiel local Maven.
Remplacez le paquetage JAR officielgrpc-netty
par le paquetage patché de l'une des deux façons suivantes :-
Utilisez Maven pour installer l'ensemble par fichier local :
Vous devez garder 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 à 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é.
-
-
Exécutez le projet.