2.2.6.5. mijin Catapult(v.2) ノードの投票権ファイルの更新方法

本章では、AWS上の mijin Catapult(v.2) ノードにあるノード投票権の期限が切れた場合の対応方法を記載します。
ノードの投票権の期限は、 ブロック生成間隔によって変動しますが、約547日~3285日となっています。

警告

投票権ファイルの期限が切れると、ファイナライズブロックが停止します。
そのため、ファイナライズブロックを使用している場合は必ず更新する必要があります。
作成日:

2023/1/26

更新日:

2023/1/26

2.2.6.5.1. 投票権ノードの有効期限計算方法

一つの投票権ファイルの期限は以下の計算式で求めることができます。

警告

blockGenerationTargetTime(ブロック生成間隔)は例えば15sを設定しても一定時間でブロック生成するわけではないため、目安として値となることに注意してください。

(VotingSetGroup * maxVotingKeyLifetime) / ( 60 / blockGenerationTargetTime * 60 * 24)
VotingSetGroup 及び maxVotingKeyLifetimeは固定値となるため、blockGenerationTargetTimeの値によって
有効期限が変動します。
# blockGenerationTargetTime 10s
(180 * 26280) / (60 /10 * 60 * 24) = 547 days
# blockGenerationTargetTime 15s
(180 * 26280) / (60 /15 * 60 * 24) = 821 days
# blockGenerationTargetTime 60s
(180 * 26280) / (60 /60 * 60 * 24) = 3285 days

2.2.6.5.2. AWSマネージメントコンソールにログイン

AWSマネージドコンソールにて、ログインします。

https://aws.amazon.com/jp/console/

2.2.6.5.3. EC2サービスに移動

1.上部「サービス」をクリックします
2.表示されたメニューから「コンピューティング」をクリックします
3.「EC2」をクリックします。
../../_images/aws_ssm_login1.ja.png

2.2.6.5.4. ログインしたいインスタンスを選択し、接続

1.左側メニューから「インスタンス」をクリックします
2.インスタンス一覧からログインしたいノードのチェックをクリックします。
3.「接続」を押します。
../../_images/aws_ssm_login2.ja.png

2.2.6.5.5. セッションマネージャーを選択し、接続

1.「セッションマネージャー」であることを確認します。(選択されていなければクリック)
2.「接続」を押します。
3.コンソール画面のウィンドウが別で開きます。
../../_images/aws_ssm_login3.ja.png

2.2.6.5.6. コンソール画面の操作

  1. コンソール画面のウィンドウで 「$」 が出ていることを確認します。

    $
    

2.2.6.5.7. mijin-catapult-toolsのインストール

  1. nodejsがインストールされてない場合、インストールします。

    $ curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash - && sudo apt-get install -y nodejs
    
  2. catapultユーザーにスイッチし、mijin-catapult-toolsをインストールします。

    $ yarn global add  @tech-bureau/mijin-catapult-tools
    $ echo 'export PATH="$HOME/.yarn/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc
    

2.2.6.5.8. 現在の投票権ファイルの状況確認

公開鍵を控えます。
ここでは、 402B6ECE0D1CF99A7F07B832477048C56F213A4F54ED4AEB35AE829507FBC4A6 です。
この投票権ファイルは1から26280までの有効期限となっていることが確認できます。
$ mijin-catapult-tools votingkey info -u http://localhost:3000 -d mijin-catapult-package/package/api/catapult/userconfig/resources/votingkey
2023-01-26T05:22:29.833Z [info] : Start Voting Key Check Dir... mijin-catapult-package/package/api/catapult/userconfig/resources/votingkey
2023-01-26T05:22:29.836Z [info] : votingfile: index0:  {"publicKey":"402B6ECE0D1CF99A7F07B832477048C56F213A4F54ED4AEB35AE829507FBC4A6","startEpoch":1,"endEpoch":26280,"filename":"private_key_tree1.dat"}

注釈

finalizationEpochが26280になる前に更新する必要があるということに注意してください。
{
"scoreHigh": "0",
"scoreLow": "16875391960469924",
"height": "310",
"latestFinalizedBlock": {
"finalizationEpoch": 3,
"finalizationPoint": 7,
"height": "296",
"hash": "AC19CA6C89F87F70470BD84649A31E4FA0E0C5DD71A55E9ADAE25C1AED47882F"
}
}

2.2.6.5.9. 投票権ファイルの更新

上記で取得した公開鍵から秘密鍵を検索し、投票権ファイルを作成します。
連番ファイルprivate_key_tree2.datが作成されます。
$ mijin-catapult-tools votingkey update \
    -u http://localhost:3000 \
    -d mijin-catapult-package/package/api/catapult/userconfig/resources/votingkey \
    -p $(cat /mnt/mijin/shares/nemesis_addresses_harvesting_voting.json | jq -r '.[]|.[]|select(.public_key == "402B6ECE0D1CF99A7F07B832477048C56F213A4F54ED4AEB35AE829507FBC4A6")|.private_key')

2023-01-26T06:06:16.472Z [info] : Start Voting Key Update...
2023-01-26T06:06:16.476Z [info] : votingSetGroup: 160
2023-01-26T06:06:16.476Z [info] : votingMaxEpoch: 26280
2023-01-26T06:06:16.477Z [info] : votingStartEpoch: 26281
2023-01-26T06:06:16.477Z [info] : votingEndEpoch: 52560
2023-01-26T06:06:16.477Z [info] : blockGenerationTargetTime: 15
2023-01-26T06:06:42.716Z [info] : Voting Key file Create: SUCCESS mijin-catapult-package/package/api/catapult/userconfig/resources/votingkey/private_key_tree2.dat

2.2.6.5.10. 再度、投票権ファイルの状況確認

同じ公開鍵で作成された投票権ファイル(private_key_tree2.dat)が確認できていれば更新ファイルの作成は完了です。
次回はfinalizationEpochが52560になる前に、更新する必要があります。
$ mijin-catapult-tools votingkey info -u http://localhost:3000 -d mijin-catapult-package/package/api/catapult/userconfig/resources/votingkey
2023-01-26T06:10:00.625Z [info] : Start Voting Key Check Dir... mijin-catapult-package/package/api/catapult/userconfig/resources/votingkey
2023-01-26T06:10:00.630Z [info] : votingfile: index0:  {"publicKey":"402B6ECE0D1CF99A7F07B832477048C56F213A4F54ED4AEB35AE829507FBC4A6","startEpoch":1,"endEpoch":26280,"filename":"private_key_tree1.dat"}
2023-01-26T06:10:00.630Z [info] : votingfile: index1:  {"publicKey":"402B6ECE0D1CF99A7F07B832477048C56F213A4F54ED4AEB35AE829507FBC4A6","startEpoch":26281,"endEpoch":52560,"filename":"private_key_tree2.dat"}