Écrire un code de chaîne
Un code de chaîne est écrit en Go, Node.js ou Java, puis emballé dans un fichier ZIP installé sur le réseau Oracle Blockchain Platform.
Les codes de chaîne définissent le schéma de données dans le livre, l'initialiser, effectuer les mises à jour lorsqu'il est déclenché par les applications et répondre aux interrogations. Les codes de chaîne peuvent également publier des événements qui permettent aux applications d'être avisées et d'effectuer des opérations en aval. Par exemple, une fois que des bons de commande, des factures et des enregistrements de livraison ont été appariés par un code de chaîne, il peut publier un événement pour qu'une application abonnée puisse traiter les paiements connexes et mettre à jour un système ERP interne.
Ressources pour le développement de code de chaîne
Oracle Blockchain Platform utilise Hyperledger Fabric comme base. Utiliser la documentation sur Hyperledger Fabric pour écrire des codes de chaîne valides.
-
Bienvenue dans Hyperledger Fabric. Les sections Concepts clés et Tutoriels doivent être lues avant d'écrire votre propre code de chaîne.
-
Langage de programmation Go. Les compilateurs, outils et bibliothèques Go fournissent une variété de ressources qui simplifient l'écriture de codes de chaîne.
-
Cale d'emballage. L'offre groupée fournit des API pour que le code de chaîne puisse accéder à ses variables d'état, à son contexte de transaction et appeler d'autres codes de chaîne. Cela documente la syntaxe réelle requise pour votre code de chaîne.
Oracle Blockchain Platform fournit des exemples téléchargeables qui vous aident à comprendre comment écrire des codes de chaîne et des applications. Voir À quoi servent les exemples de code de chaîne?
Vous pouvez ajouter une syntaxe d'interrogation enrichie à vos codes de chaîne pour interroger la base de données d'état. Voir Syntaxe d'interrogation enrichie SQL et CouchDB Syntaxe d'interrogation enrichie.
Ensemble et compresser un code de chaîne Go
Une fois que vous avez écrit votre code de chaîne, placez-le dans un fichier ZIP. Vous n'avez pas besoin de créer un ensemble pour le code de chaîne Go ou de le signer. Le processus d'installation et de déploiement d'Oracle Blockchain Platform le fait pour vous, comme décrit dans Flux de travail type pour déployer des codes de chaîne (Hyperledger Fabric v2.x) ou Flux de travail type pour déployer des codes de chaîne (Hyperledger Fabric v1.4.7).
Si votre code de chaîne comporte des dépendances externes, vous pouvez les placer dans le répertoire fournisseur de votre fichier ZIP.
Fournir la cale pour les codes de chaîne Go (Hyperledger Fabric v2.x)
La dépendance de modèle de code de chaîne Go, qui était précédemment incluse avec les versions antérieures de Hyperledger Fabric, n'est pas incluse dans Hyperledger Fabric v2.x. La cale doit maintenant être vendue (importée) aux codes de chaîne Go avant d'être installée sur un pair exécutant Hyperledger Fabric v2.x.
Vous pouvez utiliser les modules Go ou un outil de tierce partie, tel que govendor, pour fournir le shim de code de chaîne et le mettre à jour à la version qui fonctionne avec Hyperledger Fabric v2.x.
Pour plus d'informations, voir Modifications de la couche de code de chaîne (Go chaincode uniquement) et Mettre à niveau les codes de chaîne avec la couche de chaîne vendue dans la documentation sur Hyperledger Fabric. Pour plus d'informations sur les modules Go, voir Informations de référence sur les modules Go.
Emballer et compresser un code de chaîne Node.js
package.json
avec deux sections :
-
La section
scripts
déclare comment lancer le code de chaîne. -
La section
dependencies
spécifie les dépendances.
Voici un exemple de code de chaîne package.json
pour un code de chaîne Node.js :
{
"name": "chaincode_example02",
"version": "1.0.0",
"description": "chaincode_example02 chaincode implemented in Node.js",
"engines": {
"node": ">=8.4.0",
"npm": ">=5.3.0"
},
"scripts": { "start" : "node chaincode_example02.js" },
"engine-strict": true,
"license": "Apache-2.0",
"dependencies": {
"fabric-shim": "~1.3.0"
}
}
package.json
doit se trouver dans le répertoire racine.- Le fichier d'entrée JavaScript peut être localisé n'importe où dans le paquetage.
- Si
"start" : "node <start>.js"
n'est pas spécifié danspackage.json
,server.js
doit se trouver dans le répertoire racine.
Placez le code de chaîne et le fichier de paquetage dans un fichier ZIP pour l'installer sur Oracle Blockchain Platform.
Emballer et compresser un code de chaîne Java
Si vous écrivez un code de chaîne Java, vous pouvez choisir Gradle ou Maven pour créer le code de chaîne.
Archive: example_gradle.zip Length Date Time Name --------- ---------- ----- ---- 610 02-14-2019 01:36 build.gradle 54 02-14-2019 01:28 settings.gradle 0 02-14-2019 01:28 src/ 0 02-14-2019 01:28 src/main/ 0 02-14-2019 01:28 src/main/java/ 0 02-14-2019 01:28 src/main/java/org/ 0 02-14-2019 01:28 src/main/java/org/hyperledger/ 0 02-14-2019 01:28 src/main/java/org/hyperledger/fabric/ 0 02-14-2019 01:28 src/main/java/org/hyperledger/fabric/example/ 5357 02-14-2019 01:28 src/main/java/org/hyperledger/fabric/example/SimpleChaincode.java --------- ------- 6021 10 files
Archive: example_maven.zip Length Date Time Name --------- ---------- ----- ---- 3313 02-14-2019 01:52 pom.xml 0 02-14-2019 01:28 src/ 0 02-14-2019 01:28 src/chaincode/ 0 02-14-2019 01:28 src/chaincode/example/ 4281 02-14-2019 01:28 src/chaincode/example/SimpleChaincode.java --------- ------- 7594 5 files
Test d'un code de chaîne
Après avoir écrit votre code de chaîne, vous devez le tester. Voir :
Installation et déploiement d'un code de chaîne
Après avoir testé votre code de chaîne, vous pouvez le déployer en suivant les informations décrites dans Flux de travail type pour déployer des codes de chaîne (Hyperledger Fabric v2.x) ou Flux de travail type pour déployer des codes de chaîne (Hyperledger Fabric v1.4.7).
Mise à niveau d'un code de chaîne
Vous pouvez mettre à niveau un code de chaîne déployé en suivant les étapes décrites dans Mettre à niveau un code de chaîne (Hyperledger Fabric v2.x) ou Mettre à niveau un code de chaîne (Hyperledger Fabric v1.4.7).