Utiliser les kits SDK Hyperledger Fabric pour développer des applications
Les kits SDK Hyperledger Fabric sont désormais en phase d'abandon. Toutefois, vous pouvez installer et utiliser les kits 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 requête ou afficher 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 afin de fournir un contrôle au niveau de l'objet. Les applications peuvent contenir des opérations beaucoup plus détaillées.
Versions de SDK
Plusieurs versions des kits SDK Hyperledger Fabric sont disponibles. Utilisez la version du kit SDK correspondant à la version d'Hyperledger Fabric sur laquelle repose votre instance.
Installation du kit SDK Hyperledger Fabric pour Node.js
Vous trouverez des informations sur l'utilisation du kit SDK Fabric pour Node.js ici : documentation sur le 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 kit SDK Hyperledger Fabric Node.js à l'aide du lien de cet onglet.
Installation du kit SDK Hyperledger Fabric pour Java
Vous trouverez des informations sur l'utilisation du kit SDK Fabric pour Java ici : documentation sur le kit SDK Hyperledger Fabric pour Java
- Vous pouvez installer le kit SDK Java Hyperledger Fabric à l'aide du lien de cet onglet.
- (Hyperledger Fabric v2.x) Vous devez modifier le kit SDK pour qu'il fonctionne avec Oracle Blockchain Platform en suivant les instructions de la section Mise à jour du kit SDK Java Hyperledger Fabric pour qu'il fonctionne avec Oracle Blockchain Platform.
Installez un outil de construction 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 filesStructurez 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écuter l'application
Vous êtes maintenant prêt à exécuter et tester l'application. En plus des messages de statut renvoyés par votre application, vous pouvez consulter le registre dans la console Oracle Blockchain Platform pour connaître les modifications :
- Accédez à l'onglet Canaux de la console, puis localisez et cliquez sur le nom du canal exécutant le code chaîne.
- Dans le panneau Livre du canal, visualisez la synthèse du registre du code chaîne.
Mise à jour du kit SDK Go Hyperledger Fabric pour qu'il fonctionne avec Oracle Blockchain Platform
Vous devez mettre à jour la fonction NormalizeURL dans le kit SDK Go Hyperledger Fabric pour l'utiliser avec la version basée sur Kubernetes d'Oracle Blockchain Platform.
- Ouvrez le fichier
client.godans le kit SDK Go Hyperledger Fabric pour le modifier :vendor/github.com/hyperledger/fabric-sdk-go/internal/github.com/hyperledger/fabric-ca/lib/client.go - Mettez à jour la fonction
NormalizeURLcomme indiqué dans le code suivant.FonctionNormalizeURLavant modification :// NormalizeURL normalizes a URL (from cfssl) func NormalizeURL(addr string) (*url.URL, error) { addr = strings.TrimSpace(addr) u, err := url.Parse(addr) if err != nil { return nil, err } if u.Opaque != "" { u.Host = net.JoinHostPort(u.Scheme, u.Opaque) u.Opaque = "" } else if u.Path != "" && !strings.Contains(u.Path, ":") { u.Host = net.JoinHostPort(u.Path, "") u.Path = "" } else if u.Scheme == "" { u.Host = u.Path u.Path = "" } if u.Scheme != "https" { u.Scheme = "http" } . . .FonctionNormalizeURLaprès modification :// NormalizeURL normalizes a URL (from cfssl) func NormalizeURL(addr string) (*url.URL, error) { addr = strings.TrimSpace(addr) u, err := url.Parse(addr) if err != nil { return nil, err } if u.Opaque != "" { u.Host = net.JoinHostPort(u.Scheme, u.Opaque) u.Opaque = "" } else if u.Host != "" && !strings.Contains(u.Host, ":") { u.Host = net.JoinHostPort(u.Host, "") u.Path = "" } else if u.Scheme == "" { u.Host = u.Path u.Path = "" } . . . - Enregistrez le fichier
client.go.
Mise à jour du kit SDK Java Hyperledger Fabric pour qu'il fonctionne avec Oracle Blockchain Platform
Une incompatibilité existe entre un composant d'infrastructure OCI et le kit SDK Java fourni avec Hyperledger Fabric v2.x. Vous devez mettre à jour le kit SDK pour l'utiliser avec Oracle Blockchain Platform.
Méthodes de mise à jour du kit SDK Hyperledger Fabric
Il existe deux façons de mettre à jour le kit SDK :
- Téléchargez le package modifié depuis la console. Nous avons créé un fichier
grpc-netty-shaded-1.38.0.jarmis à 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 les étapes suivantes.
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'ordres au client grpcs (via TLS). Le package grpc-netty-shaded est un sous-projet de grpc-java.
-
Installez 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
grpcutilisée par votre projetfabric-sdk-javaet extrayez le code.Dans le répertoiregrpc-java, extrayez la version degrpcutilisée par le projetfabric-sdk-java:cd grpc-java && git checkout v1.38.0 -
Modifiez le code pour éviter une erreur
alpncôté serveur. Créez un fichier de patchgrpc-java-patchavec 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 le gradle pour créer le projet
grpc-java-shaded:cd netty/shaded gradle build -PskipAndroid=true -PskipCodegen=trueUne fois le build terminé, le package
.jarappliqué à la cible est disponible à l'adressegrpc-java/netty/build/libs/grpc-netty-shaded-1.38.0.jar. -
Ajoutez le package patché dans votre référentiel local Maven.
Remplacez le packagegrpc-netty-shaded.jard'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 les ciblesmvn 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=jargroupid,artifactidetversionidentiques 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.