Hyperledger Fabric フレームワークでは、チェーンコードはピア上で実行され、トランザクションを作成する「スマートコントラクト」です。BaaS は現在、Go、Node.js、および Java をサポートしています。このドキュメントでは、チャンネルに新しいチェーンコードをデプロイする方法について説明します。
チャンネルに存在するチェーンコードをアップグレードする場合は、「チェーンコードのアップグレード」をご参照ください。
この章は、Fabric V1.4 のインスタンスを購入したユーザーに適用されます。 Fabric V2.2 のインスタンスを購入した場合は、「チェーンコードの管理 (V2.2)」のチェーンコードのデプロイに関するセクションをご参照ください。
Fabric チェーンコードの開発方法の詳細については、「Chaincode for Developers」を参照してください。
peer chaincode packageコマンドを使用して、すべてのコード依存関係を含むチェーンコードパッケージをビルドしてください。 golang チェーンコードを例にとると、依存ファイルを golang プロジェクトの vendor ディレクトリに配置します。govendor ツールをインストールします。
go get -u -v github.com/kardianos/govendorチェーンコードプロジェクトディレクトリで、vendor ディレクトリを初期化します。
govendor initGOPATH 内の依存ファイルを vendor ディレクトリに移動します。
govendor add +external
チェーンコードパッケージの詳細については、「peer chaincode commands」をご参照ください。
ヒント:
golang では、
-pはベースディレクトリ ($GOPATH/src) からのメインパッケージの相対パスである必要があります。 Java では、-pはチェーンコードプロジェクトのルートディレクトリである必要があります。 nodejs では、-pは package.json を含むチェーンコードプロジェクトのルートディレクトリである必要があります。-pは「./xxx」形式であってはなりません。チェーンコード言語が golang の場合は
-lを省略します。 チェーンコード言語が nodejs の場合は-l nodeを使用し、Java の場合は-l javaを使用します。inputが不要な場合は、-cを省略します。-i、-Sは使用しないでください。
たとえば、$GOPATH/src/github.com/hyperledger/fabric/examples/chaincode/go/example02 ディレクトリから、mycc という名前でバージョン 1.0 の ccpack.out という名前の golang チェーンコードパッケージを作成するには、次のようにします。
peer chaincode package ccpack.out -n mycc -p github.com/hyperledger/fabric/examples/chaincode/go/example02/cmd -c '{"Args":["init","a","100","b","200"]}' -v 1.0peer バイナリはここからダウンロードできます。
新しいチェーンコードのデプロイは、次の 3 つのステップで行います。
チェーンコードのアップロード
チェーンコードのインストール
チェーンコードのインスタンス化
チェーンコードのアップロード
Alibaba Cloud BaaS コンソール にログインします。
[概要] ページで、[組織] を見つけ、対象の組織を見つけて、組織名をクリックします。
チェーンコード タブをクリックします。
[チェーンコードのアップロード] をクリックします。
表示されるダイアログボックスで、ローカルにパッケージ化されたチェーンコードをアップロードします。
チェーンコードをデプロイするチャンネルを選択します。新規デプロイの場合は、どのチャンネルにも同じチェーンコード名が存在しないことを確認してください。
エンドースメントポリシーを入力します。
例:
OR ('Org1MSP.peer','Org2MSP.peer')は、チャンネル内の 2 つの組織のいずれかからのエンドースメントが必要であることを意味し、AND ('Org1MSP.peer','Org2MSP.peer')は、このチャンネル内の 2 つの組織からのエンドースメントが必要であることを示します。OK をクリックします。
チェーンコードがアップロードされると、チェーンコードチェーンコードバージョン タブのチェーンコードリストにチェーンコードが表示されます。 列に表示されるチェーンコードの名前と 列に表示されるバージョン番号は、チェーンコードをローカルにパッケージ化するときに指定されます。
チェーンコードのインストール
前提条件
チェーンコードをアップロード済みであること。
手順
Alibaba Cloud BaaS コンソール にログインします。
[概要] ページで、[組織] を見つけ、対象の組織を見つけて、組織名をクリックします。
チェーンコード タブをクリックします。
インストールするチェーンコードを探し、[アクション] 列の [インストール] をクリックして、組織にチェーンコードをインストールします。

インストールが完了すると、組織内のステータスアンインストール済みインストール済みインストールアクションインスタンス化 が から に変わり、 列の が に変わります。
チェーンコードのアップロード時に設定したエンドースメントポリシーで、このチェーンコードを実行するために複数の組織が必要な場合は、他の組織にもチェーンコードをインストールする必要があります。
チェーンコードのインスタンス化
前提条件
チェーンコードをアップロードしてインストール済みであること。
手順
Alibaba Cloud BaaS コンソール にログインします。
[概要] ページで、[組織] を見つけ、対象の組織を見つけて、組織名をクリックします。
チェーンコード タブをクリックします。
インストールするチェーンコードを見つけます。 [アクション] 列で、[インスタンス化] をクリックします。
表示されるダイアログボックスには、チェーンコードのアップロード時に入力したエンドースメントポリシーが自動的に表示されます。ポリシーを保持することも、新しいポリシーに変更することもできます。
例:
OR ('Org1MSP.member','Org2MSP.member')は、チャンネル内の 2 つの組織のいずれかからのエンドースメントが必要であることを意味し、AND ('Org1MSP.member','Org2MSP.member')は、このチャンネル内の 2 つの組織からのエンドースメントが必要であることを意味します。ダイアログボックスの 上位プライバシー設定の構成 をクリックすると、 入力ボックスにコレクション定義 JSON データを入力できます (オプション、チェーンコードがプライベートデータ機能を使用しない場合)。
例:
[{"name": "collectionName", "policy": "OR('Org1MSP.peer')", "memberOnlyRead": false, "requiredPeerCount": 0, "maxPeerCount": 3, "blockToLive": 0}]は、チェーンコードにcollectionNameという名前のプライベートコレクション名前空間が必要であり、組織Org1内のピアのみがこのコレクションのデータにアクセスできることを意味します。注意:
nameとblockToLiveを設定すると、後でアップグレードしても変更できなくなります。 詳細については、「Using Private Data in Fabric」をご参照ください。インスタンス化 をクリックします。

この操作は、チェーンコードの依存関係の複雑さによっては、数秒から数分かかります。操作が成功すると、チャネルの状態インスタンス化可能実行中アクション が から に変わり、 列の値が空になります。