チェーンコードの記述
チェーンコードは、Go、Node.jsまたはJavaで記述され、Oracle Blockchain PlatformネットワークにインストールされるZIPファイルにパッケージ化されます。
チェーンコードは、台帳内のデータ・スキーマの定義とこの初期化、アプリケーションによってトリガーされたときの更新の実行、および問合せへの対応を行います。また、アプリケーションが通知を受けてダウンストリーム操作を実行できるようチェーンコードでイベントをポストすることもできます。たとえば、チェーンコードを使用して発注書、請求書および納品記録を照合した後にイベントをポストし、サブスクライブ・アプリケーションが関連支払を処理したり、内部ERPシステムを更新できるようにします。
チェーンコード開発のリソース
Oracle Blockchain Platformは、Hyperledger Fabricを基盤として使用します。Hyperledger Fabricのドキュメントを使用すると、有効なチェーンコードの記述に役立ちます。
-
『Welcome to Hyperledger Fabric』。独自のチェーンコードを記述する前に、主な概念とチュートリアルの項を参照してください。
-
『Go Programming Language』。Goコンパイラ、ツールおよびライブラリでは、チェーンコードの記述を簡略化する様々なリソースが提供されます。
-
『package shim』。package shimは、チェーンコードが状態変数やトランザクション・コンテキストにアクセスしたり、他のチェーンコードを呼び出すためのAPIを提供します。このドキュメントは、チェーンコードに必要な実際の構文を示します。
Oracle Blockchain Platformには、チェーンコードおよびアプリケーションの記述方法を理解するために役立つダウンロード可能なサンプルが用意されています。「チェーンコード・サンプルとは」を参照してください。
チェーンコードにリッチ問合せ構文を追加して、状態データベースに問合せできます。「SQLリッチ問合せ構文」および「CouchDBリッチ問合せ構文」を参照してください。
Goチェーンコードのパッケージ化とZip
チェーンコードを記述したら、ZIPファイルに含めます。Goチェーンコードのパッケージを作成したり、署名する必要はありません。Oracle Blockchain Platformのインストールおよびインスタンス化プロセスによって、「チェーンコードをデプロイするための一般的なワークフロー」に説明されている処理が行われます。
チェーンコードに外部依存関係がある場合は、それをZIPファイルのvendorディレクトリに配置します。
Node.jsチェーンコードのパッケージ化とZip
package.json
ファイルを作成する必要があります:
-
scriptsセクションではチェーンコードの起動方法を宣言します。
-
dependenciesセクションでは、依存関係を指定します。
次に、Node.jsチェーンコードのサンプルpackage.json
を示します:
{
"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
はルート・ディレクトリに置く必要があります。- エントリJavaScriptファイルは、パッケージ内の任意の場所に配置できます。
"start" : "node <start>.js"
がpackage.json
に指定されていない場合、server.js
をルート・ディレクトリに配置する必要があります。
チェーンコードおよびパッケージ・ファイルをzipファイルに含め、Oracle Blockchain Platformにインストールします。
Javaチェーンコードのパッケージ化とZip
Javaチェーンコードを記述する場合、GradleまたはMavenを選択してチェーンコードをビルドできます。
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
チェーンコードのテスト
チェーンコードを記述した後、テストする必要があります。次を参照してください:
チェーンコードのインストールとインスタンス化
チェーンコードをテストしたら、「チェーンコードをデプロイするための一般的なワークフロー」の情報に従ってデプロイできます。
チェーンコードのアップグレード
チェーンコードは、バージョンを変更することで、いつでもアップグレードできます。チェーンコード名は同じである必要があります。そうしないと、まったく別のチェーンコードとみなされます。
-
チェーンコードのバージョンを変更します
-
「チェーンコードのアップグレード」の指示に従って、新しいバージョンのチェーンコードをインストールおよびアップグレードします。