チェーンコード・ライフサイクル
(Hyperledger Fabric v2.x)チェーンコード・ライフサイクルは、ピアにチェーンコードをインストールし、チャネルにデプロイするプロセスを表します。
チェーンコード・ライフサイクルは、チェーンコードの分散ガバナンスを可能にするHyperledger Fabric v2.xプラットフォームの機能に基づいています。チェーンコードが台帳と対話する前に、チェーンコード・エンドースメント・ポリシーを含むチェーンコード・パラメータについて複数の組織が同意できます。これらの機能は、REST APIだけでなく、新しいクイック・デプロイメントおよび拡張デプロイメント・オプションにも実装されます。新しいライフサイクルの詳細は、Hyperledger Fabric v2.2.4ドキュメントの「Fabric chaincode lifecycle」を参照してください。
通常、インストールされたチェーンコードをデプロイするには、コンソールでクイック・デプロイメントまたは拡張デプロイメントを使用します。デプロイメント・プロセスには、チェーンコードのパッケージ化とインストール、およびチェーンコード定義の承認とコミットが含まれます。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を使用して承認されたチェーンコード定義をコミットするには、チャネルでのチェーンコード定義のコミットに関する項を参照してください。
コンソールのチャネルの「デプロイ済チェーンコード」ページで、承認されているがコミットされていないチェーンコード定義を確認できます。「その他のアクション」メニューを使用して、承認されたチェーンコードをコミットできます。
チェーンコード・ライフサイクル・シナリオ
シナリオ | 説明 |
---|---|
チャネルに参加 |
通常、コンソールでは、チェーンコード定義をコミットせずに承認することはありません。チェーンコード定義が別の組織によってコミットされた共有チャネルに参加すると、チャネルの「デプロイ済チェーンコード」ページに、チェーンコード定義がコミット済だが未承認としてリストされます。「その他のアクション」メニューを使用して、チェーンコード定義を承認できます。パッケージIDを関連付けることもできます。パッケージ定義を再度コミットする必要はありません。 |
エンドースメント・ポリシーの更新 |
チェーンコードを再インストールせずに、チェーンコード定義でエンドースメント・ポリシーを更新できます。チャネルの「デプロイ済チェーンコード」ページで、「その他のアクション」メニューを使用してチェーンコード定義をアップグレードします。「エンドースメント・ポリシー」を展開して新しいポリシーを指定し、「アップグレード」をクリックします。 |
インストールせずに定義を承認 |
複数組織のシナリオで、チェーンコード・パッケージをインストールせずにチェーンコード定義を承認するには、パッケージIDを指定しないでください。チャネルにコミットされたチェーンコードの定義をエンドースしますが、チェーンコードは組織内のピアにインストールされません。チェーンコードを使用してトランザクションをエンドースしたり、台帳の問合せを行うことはできません。 |
定義に関する意見の相違 |
複数組織シナリオでは、チェーンコード定義を承認しない、または別のチェーンコード定義を承認する組織は、ピアに対してチェーンコードを実行できません。他の組織がその定義をチャネルにコミットするのに十分なエンドースメントを得ている場合、それらの組織はチェーンコードを使用できます。トランザクションは、すべての組織のピアの台帳に引き続き追加されます。 組織間でチェーンコードの定義に合意できず、定義をチャネルにコミットするのに十分なエンドースメントを得られない場合、定義をコミットできないため、チェーンコードを実行できません。 |
複数の組織で異なるパッケージをインストール |
複数の組織を持つチャネルのチェーンコード定義を承認する場合は、別のパッケージIDを指定できます。定義名とエンドースメント・ポリシーが同じ場合、チャネル・メンバーは組織に固有のチェーンコードをインストールできますが、同じチェーンコード・ネームスペースにデータを読み書きします。 |
1つのパッケージから複数のチェーンコードを作成 |
同様に、定義ごとに異なる名前を指定して、同じチェーンコード・パッケージを複数回承認およびコミットできます。チェーンコードの複数のインスタンスがチャネルで実行されます。定義ごとに異なるエンドースメント・ポリシーも指定した場合、各チェーンコード・インスタンスは異なるエンドースメント・ポリシーの対象となります。 |