概要
Metering Collection Tool とは?
「Metering Collection Tool」は、Corda Enterpriseが提供する署名数カウントツールです。期間指定やFlow指定でより詳細な情報を取得することができます。また、「Metering Collection Tool」をNotaryで実行するとNotaryの署名件数も出力します。
詳しくはこちらの記事をご覧ください。
Corda Enterprise4.5で何が変わったか?
Corda Enterprise4.5にてMetering Collection Toolには、以下のような機能追加がありました。
・署名収集要求を行ったノード(以下:自ノード)と自ノードからの署名収集を許可したノード
(以下:相手ノード)の署名数を収集できるようになりました。
なお、相手ノードからの収集には、自ノードと相手ノードでコンフィグを設定が必要です。
(「Configuration fileの設定」の項を参照)
・シェル実行時の出力形式が、直感的な表示に改善
・RPCを介したデータ取得のためのAPIの提供
本稿では、相手ノードに自ノードの署名収集を許可するためのコンフィグの設定から、
複数ノードからの署名件数のデモ(MultiAggregatedCollectionFlow、MultiFilteredCollectionFlow)を
行います。
※デプロイの方法や基本的な使用方法(MeteringCollectionFlowやNotaryCollectionFlow)に関しては、
以前のバージョンと変わりませんので、Metering Collection Toolの記事をご覧ください。
コンフィグの設定
Metering Collection Tool4.5は、複数の相手ノードから署名を収集することが可能です。
この機能を使用するには自ノードと相手ノードでコンフィグを設定する必要があります。
コンフィグのファイル名
Metering Collection Toolのコンフィグファイル名には命名規約があり、
「Metering Collection Toolのjarファイル名.conf」と設定します。本稿では「corda-tools-metering-collector-4.5.jar」を使用しているため、ファイル名は「corda-tools-metering-collector-4.5.conf」に
なります。
コンフィグの配置
コンフィグファイルの配置はcordappsフォルダ配下の「config」ディレクトリに設定します。
cordapps/
corda-tools-metering-collector-4.5.jar
config/
corda-tools-metering-collector-4.5.conf
コンフィグの反映
コンフィグはCordaノード起動と同時にアタッチされます。よって、ノード起動中にコンフィグを
修正した場合は、ノードの再起動が必要です。
コンフィグのパラメータ
コンフィグに設定するパラメータは、大きく「network_collectors」と「cordapp_collectors」に
分類することができます。
・network_collectors
署名収集を許可するノードを設定します。設定には必ず自ノードも含めます。
以下、コンフィグファイルの例です。
"access_configuration" : {
"network_collectors" : ["O=Node01,L=Tokyo,C=JP", "O=Node02,L=Tokyo,C=JP"]
}
「network_collectors」にノード設定すると、全ての署名収集を許可します。
特定のFlowに関して署名収集を許可したい場合は、後述の「cordapp_collectors」を設定します。
・cordapp_collectors
特定のFlowに関しての署名収集を許可したい場合に設定します。以下の条件に分類できます。
by_name:収集を許可するCorDappsの名前を設定します。
by_hash:収集を許可するCorDappsのHash値を設定します。
by_signature:収集を許可するCorDappsのCorda.jarの署名鍵のハッシュ値を設定します。
「by_name」や「by_hash」、「by_signature」に設定する値は、FlowのCorDappsのjarファイルの
情報を設定します。これらは「RetrieveCordappDataFlow」により取得できます。
以下、コンフィグファイルの例です。
"cordapp_collectors" : {
"by_name" : {
"Template Flows" : ["O=Node01,L=Tokyo,C=JP", "O=Node02,L=Tokyo,C=JP"]
},
"by_hash" : {
"5A23CBC404F08C8834638008B4EE8B9C6F9021BFD5C23F31C7404355AB5133BE" :
["O=Node01,L=Tokyo,C=JP", "O=Node02,L=Tokyo,C=JP"]
},
"by_signature" : {
"25F95E8FD52BD8F9574B4B0E86A49B19CB0725D7227D9E136AED0FCB266C886F" :
["O=Node01,L=Tokyo,C=JP", "O=Node02,L=Tokyo,C=JP"]
}
}
}
複数ノードからの署名件数収集
MultiAggregatedCollectionFlow
ネットワーク上の複数のノードから集約された署名件数を 収集します。
start com.r3.corda.metering.MultiAggregatedCollectionFlow period: {value: 1mon}, destinations: [node01, node02]
MultiFilteredCollectionFlow
ネットワーク上の複数のノードから署名件数を 収集します。「MultiAggregatedCollectionFlow」との違いは、こちらは出力する署名を条件によってフィルタリングできる点です。また出力される情報も細分化されています。
flow start com.r3.corda.metering.MultiFilteredCollectionFlow period: {value: 1mon}, destinations: [node01, node02], filter: {filterBy: CORDAPP_HASHES, values: [5A23CBC404F08C8834638008B4EE8B9C6F9021BFD5C23F31C7404355AB5133BE]}, txTypes: [NORMAL]
結論
複数ノードの署名を簡単に集められるようになったため、Business Network Operatorにとっては
大変便利な機能だと思います。直感的な出力になった部分も、嬉しい改善点です。日々の署名件数
カウントに是非ご活用ください。