チェーンコードの記述
チェーンコードが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を提供します。パッケージshimのドキュメントでは、チェーンコードに必要な実際の構文について説明します。
Oracle Blockchain Platformには、チェーンコードおよびアプリケーションの記述方法を理解するために役立つダウンロード可能なサンプルが用意されています。「チェーンコード・サンプルとは」を参照してください。
リッチ問合せ構文をチェーンコードに追加して、状態データベースに問合せできます。「SQLリッチ問合せ構文」および「CouchDBリッチ問合せ構文」を参照してください。
Goチェーンコードのパッケージ化
チェーンコードを記述したら、.zip形式のファイルに圧縮してください。You don't need to create a package for the Go chaincode or sign it — the Oracle Blockchain Platform installation and deployment process does this for you as described in Typical Workflow to Deploy Chaincodes.
チェーンコードに外部依存関係がある場合は、それを.zipファイルのベンダー・ディレクトリに配置できます。
Goチェーンコードのshimのベンダリング
Goチェーンコードのshim依存関係は、Hyperledger Fabricに含まれなくなりました。ピアにインストールする前に、shimをGoチェーンコードにベンダリング(インポート)する必要があります。
Goモジュールまたはgovendorなどのサードパーティ・ツールを使用して、チェーンコードshimをベンバリングし、Hyperledger Fabricで動作するバージョンに更新できます。
詳細は、Hyperledger Fabricドキュメントの「Chaincode shim changes (Go chaincode only)」および「Upgrade Chaincodes with vendored shim」を参照してください。Goモジュールの詳細は、「Go Modules Reference」を参照してください。
Node.jsチェーンコードのパッケージ化
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チェーンコードのパッケージ化
Javaチェーンコードを記述する場合、GradleまたはMavenを選択してチェーンコードをビルドできます。
.zip形式のファイルに圧縮してOracle Blockchain Platformにインストールします。次のリストに、チェーンコード・パッケージのサンプル・ファイルを示します: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.zip形式のファイルに圧縮して、Oracle Blockchain Platformにインストールします。次のリストに、チェーンコード・パッケージのサンプル・ファイルを示します: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チェーンコードのテスト
記述後にチェーンコードをテストします。次のトピックを参照してください。
チェーンコードのインストールとデプロイ
チェーンコードをテストしたら、「チェーンコードをデプロイするための一般的なワークフロー」の情報に従って、チェーンコードをデプロイできます。
チェーンコードのアップグレード
「チェーンコードのアップグレード」のステップに従って、デプロイされたチェーンコードをアップグレードします。