チェーンコード・ライフサイクル
(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 Name、Version、Sequence、Endorsement Policy、Private Data CollectionおよびInit-required)が含まれている必要があります。チェーンコード定義には、すべての組織で同じである必要はありません。Package IDを含めることもできます。
チェーンコード定義が承認されると、1つの組織が承認組織の同僚から承認を収集し、チェーンコード定義をチャネルにコミットできます。
REST APIを使用してチェーンコード定義を承認するには、チャネルでのチェーンコード定義の承認を参照してください。
コンソールでクイック・デプロイメントまたは拡張デプロイメントを使用すると、承認ステップとコミットメント・ステップの両方が試行されます。
チェーンコード定義のコミット
REST APIを使用して承認されたチェーンコード定義をコミットするには、チャネルでのチェーンコード定義のコミットを参照してください。
コンソールでは、チャネルのデプロイ済チェーンコード・ページで、承認されているがコミットされていないチェーンコード定義を確認できます。「他のアクション」メニューを使用して、承認されたチェーンコードをコミットできます。
チェーンコード・ライフサイクル・シナリオ
Scenario | 説明 |
---|---|
チャネルに参加 |
通常、コンソールでは、チェーンコード定義をコミットせずに承認することはありません。チェーンコード定義が別の組織によってコミットされた共有チャネルに参加すると、チャネルの「デプロイ済チェーンコード」ページに、チェーンコード定義がコミット済として表示されますが、承認されていません。「他のアクション」メニューを使用して、チェーンコード定義を承認したり、パッケージIDを関連付けることもできます。パッケージ定義を再度コミットする必要はありません。 |
エンドースメント・ポリシーの更新 |
チェーンコードを再インストールせずに、チェーンコード定義でエンドースメント・ポリシーを更新できます。チャネルの「デプロイ済チェーンコード」ページで、「その他のアクション」メニューを使用してチェーンコード定義をアップグレードします。「エンドースメント・ポリシー」を展開して新しいポリシーを指定し、「アップグレード」をクリックします。 |
インストールせずに定義を承認 |
複数組織のシナリオでは、チェーンコード パッケージをインストールせずにチェーンコード定義を承認するには、パッケージIDを指定しないでください。チャネルにコミットされたチェーンコードの定義を承認しますが、チェーンコードは組織内のピアにインストールされません。チェーンコードを使用してトランザクションの承認や元帳の問合せを行うことはできません。 |
定義に関する意見の相違 |
複数組織シナリオでは、チェーンコード定義を承認しない、または別のチェーンコード定義を承認しない組織は、同僚に対してチェーンコードを実行できません。他の組織がその定義をチャネルにコミットするのに十分な承認を得ている場合、それらの組織はチェーンコードを使用できます。トランザクションは、すべての組織の同僚の元帳に引き続き追加されます。 組織がチェーンコード定義に同意せず、その定義をチャネルにコミットするのに十分な承認を得ていない場合、定義をコミットできないためチェーンコードを実行できません。 |
複数の組織で異なるパッケージをインストール |
複数の組織を持つチャネルのチェーンコード定義を承認する場合は、別のパッケージIDを指定できます。定義名とエンドースメント・ポリシーが同じ場合、チャネル・メンバーは組織に固有のチェーンコードをインストールできますが、同じチェーンコード・ネームスペースにデータを読み書きします。 |
1つのパッケージから複数のチェーンコードを作成 |
同様に、定義ごとに異なる名前を指定して、同じチェーンコード・パッケージを複数回承認およびコミットできます。チェーンコードの複数のインスタンスがチャネルで実行されます。定義ごとに異なるエンドースメント・ポリシーも指定した場合、各チェーンコード・インスタンスは異なるエンドースメント・ポリシーの対象となります。 |