メータリングコレクションツール(Metering Collection Tool)

概要 

Metering Collection Tool とは?

「Metering Collection Tool」は、Corda Enterpriseが提供する署名数カウントツールです。期間指定やFlow指定でより詳細な情報を取得することができます。また、「Metering Collection Tool」をNotaryで実行するとNotaryの署名件数も出力します。
本稿では、テスト環境のノードおよびNotaryに「Metering Collection Tool」のデプロイから署名件数の表示のデモを行います。

 

導入

環境要件 & 前提

本稿のデモで使用するcorda.jarおよび corda-tools-metering-collector .jarは以下の通りです。
corda-4.3.3.jar
corda-tools-metering-collector-4.3.3.jar

 また、本稿で使用するSampleFlowの一覧は以下の通りです。

・IssueSampleFlow   ・・・Stateを発行する。
                                                      必要署名:実行ノード
・TransferSampleFlow ・・・Stateをあるノードからあるノードへ移転する。
                                                      必要署名:移転元ノー
ド + 移転先ノード( + Notary )
・SettleSampleFlow       ・・・任意のLinear IDのStateを償却する。
                                                      必要署名:実行ノード( + Notary )

デプロイ

     「Metering Collection Tool」は、jarファイル「 corda-tools-metering-collector-[version].jar 」を各ノードのcordappsディレクトリ配下に格納します。(ツールですが、性質としては他のFlowやContractに近いです)

例:ノード「PartyA」のcordappディレクトリ配下に格納した例
2020/06/09 15:54:57 root@ubuntu-01 : /home/corda/Upgrade/PartyA
# pwd
/home/corda/Upgrade/PartyA
2020/06/09 15:55:01 root@ubuntu-01 : /home/corda/Upgrade/PartyA
# ls -l
total 79238
drwxrwxrwx 1 root root        0 Jun  9 15:26 additional-node-infos
drwxrwxrwx 1 root root        0 Jan 24 12:20 artemis
drwxrwxrwx 1 root root        0 Jan 24 12:20 brokers
drwxrwxrwx 1 root root        0 Jun  9 15:24 certificates
-rwxr-xr-x 1 root root 80811783 May 18 20:34 corda-4.3.3.jar
drwxrwxrwx 1 root root        0 Jun  9 15:16 cordapps
drwxrwxrwx 1 root root     4096 Jun  9 15:25 logs
-rwxr-xr-x 1 root root     3926 Apr 14 12:47 my-config-file.xml
-rwxr-xr-x 1 root root     6030 Jun  9 15:25 network-parameters
-rwxr-xr-x 1 root root      668 Apr 24 12:34 node.conf
-rwxr-xr-x 1 root root     5570 Jun  9 15:26 nodeInfo-F8F4874D91506034E6298B4EAA3321AE8FD8C79B34492D8BD7479148F385251D
-rwxr-xr-x 1 root root   294912 Jun  9 15:32 persistence.mv.db
-rwxr-xr-x 1 root root    10518 Jun  9 15:25 persistence.trace.db
-rwxr-xr-x 1 root root        4 Jun  9 15:25 process-id
drwxrwxrwx 1 root root        0 Jan 10 19:35 shell-commands
drwxrwxrwx 1 root root        0 Jan 24 12:20 ssh
2020/06/09 15:55:03 root@ubuntu-01 : /home/corda/Upgrade/PartyA
# ls -l ./cordapps/
total 154
drwxrwxrwx 1 root root      0 Jan 10 19:35 config
-rwxr-xr-x 1 root root   9182 Jun  9 09:54 contracts-0.1.jar
-rwxr-xr-x 1 root root 116508 May 18 20:36 corda-tools-metering-collector-4.3.3.jar → corda-tools-metering-collectorのjar
-rwxr-xr-x 1 root root  30906 Jun  9 09:54 workflows-0.1.jar
2020/06/09 15:55:08 root@ubuntu-01 : /home/corda/Upgrade/PartyA

 

起動

    通常のノード起動と同様corda.jarを実行します。

# java -jar corda-4.3.3.jar

 

デモ実行

PartyAの署名数確認

 PartyAノード起動直後に以下のコマンドを実行します。

# start MeteringCollectionFlow startDate: 2020-06-09, daysToCollect: 7, page: 1
01_PartyA__0.png

まだ、取引を行っていないため、totalCountには0が表示されます。

PartyAにてState発行 & 署名数確認

PartyAにてStateを発行し、その後PartyAの署名総件数を確認します。

# flow start com.template.flows.IssueSampleFlow$InitiatorFlow holder : "PartyA", price : 100
# start MeteringCollectionFlow startDate: 2020-06-09, daysToCollect: 7, page: 1
03_PartyA__1.png

totalCountが1にカウントアップしていることが確認できます。なお、MeteringCollectionFlowはデータベースの書き込み回数を抑えるため取引ごとに署名数をカウントアップせず、一定時間に書き込まれた署名を集約してデータベースに書き込みます。そのため実行タイミングによっては、署名数の結果が反映されていない場合があります。その時は数秒~数十秒程度、時間をおいてから再実行してください。

PartyAからPartyBにState移転 & 署名数確認

PartyAからPartyBにStateを発行し、その後PartyAPartyBとNotrayの署名総件数を確認します。

PartyAで実行
# flow start com.template.flows.TransferSampleFlow$InitiatorFlow stateLinearId : 直前に発行したStateのLinearID, holder : "PartyB"
# start MeteringCollectionFlow startDate: 2020-06-09, daysToCollect: 7, page: 1
03_PartyA__2.png
PartyBで実行
start MeteringCollectionFlow startDate: 2020-06-09, daysToCollect: 7, page: 1
04_PartyB__1.png
Notaryで実行
start NotaryCollectionFlow startDate: 2020-06-09, daysToCollect: 7
05_Notary__1.png

 各ノードのtotalCountがそれぞれ1カウントアップしていることが確認できました。

PartyBにてState償却 & 署名数確認

 PartyBにてStateを償却し、その後PartyBとNotaryの署名総件数を確認します。

PartyBで実行
# flow start com.template.flows.SettleSampleFlow$InitiatorFlow stateLinearId : 償却するStateのLinearID, holder : "PartyB"
06_PartyB__.png

# start MeteringCollectionFlow startDate: 2020-06-09, daysToCollect: 7, page: 1
06_PartyB__2.png

Notaryで実行
# start NotaryCollectionFlow startDate: 2020-06-09, daysToCollect: 7
07_Notary__2.png

PartyBとNotaryのtotalCountがそれぞれ1カウントアップしていることが確認できました。

 

その他

 引数 filterByを使用することで CorDappsやhashを条件にカウンタを抽出することができます。
具体的にはfilterByに抽出する条件、続くfilterに値を設定し抽出条件を生成します。

filterby filter 備考
CORDAPP_NAMES CorDappの名前を指定します。

CorDappの名前を指定します。
「run nodeDiagnosticInfo 」で表示された「 shortName 」の値を入力設定します。
(あくまでFlowが対象のようです。ContractのCorDappsを指定してもカウントは表示されませんでした。)

CORDAPP_HASHES CorDappのHash値を指定します。  CorDappの名前を指定します。
「run nodeDiagnosticInfo 」で表示された「 jarHash 」の値を入力設定します。

 
以下、filterByにCORDAPP_NAMESの設定例です。

# start MeteringCollectionFlow startDate: 2020-06-09, daysToCollect: 7, filterBy: CORDAPP_NAMES, filter: ["Template Flows"], page: 1
08_CORAPPS_NAMES.png

 

結論

   比較的簡単に導入でき、また簡単な操作で署名数を出力することができました。日次の署名件数
カウントにぜひご利用ください。

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています