チェーンコード・ライフサイクル

(Hyperledger Fabric v2.x)チェーンコード・ライフ・サイクルでは、ピアにチェーンコードをインストールしてチャネルにデプロイするプロセスについて説明します。

チェーンコードのライフサイクルは、Hyperledger Fabric v2.xプラットフォームの機能に基づいており、チェーンコードの分散ガバナンスが可能になります。チェーンコードが元帳と対話する前に、チェーンコード・エンドースメント・ポリシーを含む複数の組織がチェーンコード・パラメータに同意できます。これらの関数は、新しいクイック・デプロイメント・オプションと拡張デプロイメント・オプション、およびREST APIに実装されます。新しいライフサイクルの詳細は、Hyperledger Fabric v2.2.4ドキュメントのFabricチェーンコード・ライフサイクルを参照してください。

通常、インストール済のチェーンコードをデプロイするには、コンソールでクイック・デプロイメントまたは拡張デプロイメントを使用します。デプロイメント・プロセスには、チェーンコードのパッケージ化とインストール、およびチェーンコード定義の承認とコミットが含まれます。REST APIを使用して、承認およびコミットメント操作を個別に完了することもできます。

チェーンコードのパッケージ化およびインストール

Oracle Blockchain Platformにチェーンコードをインストールすると、チェーンコードがパッケージ化され、インストールされ、パッケージIDが自動的に生成されます。パッケージIDは、コンソールの「チェーンコード」タブに表示されます。

チェーンコード定義の承認

チェーンコードをチャネルにデプロイする前に、チャネルのLifecycleEndorsementポリシーを満たす十分な組織によってチェーンコード定義が承認されている必要があります。Oracle Blockchain PlatformのデフォルトのLifecycleEndorsementポリシーを使用すると、(大多数の組織ではなく)すべての組織がチェーンコード定義を承認できます。チェーンコード定義には、すべての組織で同じパラメータ(Chaincode NameVersionSequenceEndorsement PolicyPrivate Data CollectionおよびInit-required)が含まれている必要があります。チェーンコード定義には、すべての組織で同じである必要のないPackage IDを含めることもできます。

チェーンコード定義が承認されると、1つの組織が承認組織のピアから承認を収集し、チェーンコード定義をチャネルにコミットできます。

REST APIを使用してチェーンコード定義を承認するには、チャネルでのチェーンコード定義の承認を参照してください。

コンソールでは、クイック・デプロイメントまたは拡張デプロイメントを使用すると、承認ステップとコミットメント・ステップの両方が試行されます。

チェーンコード定義のコミット

REST APIを使用して承認済チェーンコード定義をコミットするには、チャネルでのチェーンコード定義のコミットを参照してください。

コンソールでは、チャネルの「デプロイ済チェーンコード」ページで、承認されているがコミットされていないチェーンコード定義を確認できます。「他のアクション」メニューを使用して、承認されたチェーンコードをコミットできます。

チェーンコード・ライフサイクル・シナリオ

Scenario 説明
チャネルへの参加

通常、コンソールでは、チェーンコード定義をコミットせずに承認することはありません。チェーンコード定義が別の組織によってコミットされた共有チャネルに参加すると、チェーンコード定義がコミット済としてリストされますが、チャネルの「デプロイ済チェーンコード」ページには承認されません。「他のアクション」メニューを使用してチェーンコード定義を承認したり、パッケージIDを関連付けることもできます。パッケージ定義を再度コミットする必要はありません。

エンドースメント・ポリシーの更新

チェーンコードを再インストールせずに、チェーンコード定義のエンドースメント・ポリシーを更新できます。チャネルの「デプロイ済チェーンコード」ページで、「その他のアクション」メニューを使用してチェーンコード定義をアップグレードします。「エンドースメント・ポリシー」を展開し、新しいポリシーを指定して、「アップグレード」をクリックします。

インストールせずに定義を承認

複数組織のシナリオでは、チェーンコード パッケージをインストールせずにチェーンコード定義を承認する場合は、パッケージIDを指定しないでください。チャネルにコミットされたチェーンコードの定義を推奨しますが、チェーンコードが組織のピアにインストールされていません。チェーンコードを使用してトランザクションを承認したり、元帳を問い合せたりすることはできません。

定義に関する意見の相違

複数組織のシナリオでは、チェーンコード定義を承認しない、または別のチェーンコード定義を承認しない組織は、そのピアでチェーンコードを実行できません。他の組織が定義をチャネルにコミットするのに十分な承認を得ている場合、それらの組織はチェーンコードを使用できます。トランザクションは、すべての組織の同僚の元帳に引き続き追加されます。

組織がチェーンコード定義に同意せず、定義をチャネルにコミットするのに十分な承認を得ていない場合、定義をコミットできないため、チェーンコードを実行できません。

複数の組織で異なるパッケージをインストール

複数の組織を持つチャネルのチェーンコード定義を承認する場合は、別のパッケージIDを指定できます。定義名とエンドースメント・ポリシーが同じ場合、チャネル・メンバーは、組織に固有のチェーンコードをインストールできますが、同じチェーンコード・ネームスペースに対してデータの読取りと書込みを行うことができます。

1つのパッケージから複数のチェーンコードを作成

同様に、同じチェーンコード・パッケージを複数回承認およびコミットし、定義ごとに異なる名前を指定できます。チェーンコードの複数のインスタンスがチャネルで実行されます。定義ごとに異なるエンドースメント・ポリシーも指定した場合、各チェーンコード・インスタンスは異なるエンドースメント・ポリシーの対象となります。