Utiliser les trousses SDK Hyperledger Fabric pour développer des applications
Les trousses SDK Hyperledger Fabric sont désormais obsolètes. Toutefois, 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, cette flexibilité 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
Dans l'onglet Outils pour développeurs, ouvrez le volet Développement d'applications. Vous pouvez installer la trousse SDK Hyperledger Fabric Node.js à l'aide du lien de cet onglet.
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) Vous devez modifier la trousse SDK pour qu'elle fonctionne avec Oracle Blockchain Platform en suivant les instructions sous Mettre à jour la trousse SDK Java de Hyperledger Fabric pour qu'elle fonctionne avec Oracle Blockchain Platform.
Installez un outil de compilation 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é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 de la console, localisez le canal exécutant le code de chaîne et cliquez dessus.
- Dans le volet Livre du canal, consultez le sommaire du livre du code de chaîne.
Mettre à jour la trousse SDK Hyperledger Fabric Go pour qu'elle fonctionne avec Oracle Blockchain Platform
Vous devez mettre à jour la fonction NormalizeURL dans la trousse SDK Hyperledger Fabric Go pour l'utiliser avec la version d'Oracle Blockchain Platform basée sur Kubernetes.
- Ouvrez le fichier
client.godans la trousse SDK Hyperledger Fabric Go 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.
Mettre à jour la trousse SDK Java pour Hyperledger Fabric pour qu'elle fonctionne 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. Vous devez mettre à jour la trousse SDK pour l'utiliser avec Oracle Blockchain Platform.
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.jarmis à jour, qui est le module référencé par la trousse SDK Java qui nécessite 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 pour développeurs de la console, puis sélectionnez le volet Développement d'applications.
Création manuelle du package
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
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
alpndu côté serveur. Créez un fichier de correctifgrpc-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 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=trueUne fois la compilation terminée, l'ensemble
.jarcorrigé 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.jarinitial 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=jargroupid,artifactidetversionidentiques à 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.