Docker上のUbuntu22でCatapultをビルドしたのでPeerとして起動させる

前回のお話し

そしてまたまた、ココのほぼコピー…

https://github.com/symbol/symbol/blob/dev/client/catapult/docs/RUNPEERLIN.md

ネットワーク構成のコピー

今回はテストネットを作成します。すでにseedディレクトリにテストネットのネメシスブロック入ってますが、ジェネレーションハッシュが今のテストネット違ったので、おそらく古いものが入っているようです。なので、現在動いているテストネットノードからコピーしたのを使用します。

Bash
apt update
apt install unzip
Bash
Bash
cd /opt/symbol/client/catapult/_build
Bash
Bash
curl -OL https://github.com/ccHarvestasya/test-network-configuration/archive/refs/heads/main.zip
unzip main.zip
mv test-network-configuration-main/seed/ .
mv test-network-configuration-main/resources/* resources/
rm -rf main.zip test-network-configuration-main
Bash

ノード情報の設定

ノード情報を設定するためにresources/config-node.propertiesを編集します。
hostに自 IP やドメインを設定。外からアクセスされたくない場合は、ドメインでもないような文字列を入力してください。
friendlyNameはノードの説明というかノードの名前ですね。わかりやすい名前を付けてあげてください。

resources/config-node.properties
[localnode]

host = <YOUR_NODE_IP>
friendlyName = <YOUR_FRIENDLY_NAME>
version =
roles = Peer
Plaintext

ハーベストの設定

ハーベスト不要であればenableAutoHarvestingfalseにして、harvesterSigningPrivateKeyharvesterVrfPrivateKeybeneficiaryAddressを空にすれば良いです。

ハーベスト用アカウントの作成

nodejs のインストールが必要なので面倒ですが、Symbol CLI を使用してアカウントを作成します。

NodeJS のインストール

Nodesource GPG キーのダウンロード&インポート
Bash
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
Bash
deb リポジトリの作成
Bash
NODE_MAJOR=20
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list
Bash
NodeJS インストール
Bash
apt update
apt install nodejs -y
npm install -g npm@latest
Bash

Symbol CLI でアカウントを作成

Symbol CLI をインストールします。

Bash
npm install -g symbol-cli
Bash

Symbol CLI の初期設定

Plaintext
# symbol-cli profile create
✔ Select the network type: › TEST_NET
✔ Enter the Symbol node URL. (Example: http://localhost:3000): … http://sym-test-01.opening-line.jp:3000
✔ Enter a profile name: … test-net
✔ Do you want to set the account as the default profile? … yes
✔ Select an import type: › PrivateKey
✔ Enter your wallet password: … ********
Plaintext

ここで出来たアカウントはメモっといてください。これはノードアカウントにしましょう。
Faucetから 10,000XYM 入金しておきます。

remote アカウント作成

Plaintext
# symbol-cli account generate
✔ Select the network type: › TEST_NET
✔ Do you want to save the account? … no
✔ Select an import type: › PrivateKey
Plaintext

メモる。

vrf アカウント作成

remote アカウントと同じ様にもう一つアカウントを作成しメモる。

config-harvesting.properties の編集

harvesterSigningPrivateKeyに remote アカウント作成で作った秘密鍵を入力。
harvesterVrfPrivateKeyに vrf アカウント作成で作った秘密鍵を入力。
beneficiaryAddressはハーベスト報酬が入るアドレス。最初に Symbol CLI の設定したときに出来たアカウントのアドレスを入力(ハイフンなし)。

Plaintext
[harvesting]

harvesterSigningPrivateKey = <HARVESTER_SIGNING_PRIVATE_KEY>
harvesterVrfPrivateKey = <HARVESTER_VRF_PRIVATE_KEY>

enableAutoHarvesting = true
maxUnlockedAccounts = 100
delegatePrioritizationPolicy = Importance
beneficiaryAddress = <BENEFICIARY_ADDRESS>
Plaintext

リモートとメインアカウントをリンク

Bash
symbol-cli transaction accountkeylink --action Link -u <PUBLIC-REMOTE-KEY> --sync
Bash

maximum fee は 100000 くらい入れておけばトランザクション飛びます。

VRF アカウントの設定

Bash
symbol-cli transaction vrfkeylink --action Link -u <PUBLIC-VRF-KEY> --sync
Bash

証明書の作成

symbol-node-configurator を使用して証明書を作成します。

必要なパッケージをインストール。

Bash
pip install symbol-sdk-python pyopenssl zenlog
Bash

symbol-node-configurator をインストール。新しい SymbolSDK を使用するカスタマイズ版です。

Bash
cd /opt
git clone https://github.com/ccHarvestasya/symbol-node-configurator.git
cd /opt/symbol/client/catapult/_build
Bash

本来なら OpenSSL で ca.key.pem を作成するのですが、今回は最初に Symbol CLI の設定したときに出来たアカウントの秘密鍵を使用します。
ca.keyというファイルに Symbol CLI の設定したときに出来たアカウントの秘密鍵を保存します。

Plaintext
2DE0B46CBF0367A513CE7DFF........................................
Plaintext

pem ファイル作成

Bash
python3 /opt/symbol-node-configurator/pemtool.py --input ca.key --output ca.key.pem
Bash

ca.keyは、もう必要ないので削除

Bash
rm ca.key
Bash

ノード証明書作成

Bash
python3 /opt/symbol-node-configurator/certtool.py --working cert --name-ca "manual build peer CA" --name-node "manual build peer node name" --ca ca.key.pem
Bash
Bash
cat cert/node.crt.pem cert/ca.crt.pem | tee cert/node.full.crt.pem
Bash

各ディレクトリ設定の確認

特に変更する箇所はないですが、ここに設定ありますよ。

Plaintext
[account]

enableDelegatedHarvestersAutoDetection = true

[storage]

seedDirectory = ../seed
certificateDirectory = ../cert
dataDirectory = ../data
pluginsDirectory = ../bin
votingKeysDirectory = ../votingkeys
Plaintext

ノードの実行

Bash
mkdir data
cd bin
./catapult.server
Bash

Ctrl + C で終了します。
終了するまで時間が掛かる場合があるので、プロンプトが返ってくるまで待ちましょう。

もう一度 Ctrl + C すると即終了しますが、データが破損します。

常に動かしておきたいのであれば、nohup ./catapult.server &のようにしてログアウトしても起動し続けるようにすれば良いと思います。

参考にした記事

https://qiita.com/monakaJP/items/59cbcda9ecc72431c71f

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

10 + two =

ABOUT US
MimosaHarvestasya

COBOL系Javerさ。Blockchain Symbolのノードを運営していることもあり、主にバック側の事を色々調べたり作ったりしています。
https://symbol01.harvestasya.com:3001/node/info

FF14ではMimosa SamiとしてGaiaDC/Ifritで遊んでます。 FF14緑化運動家(目立った活動はしていない)。FF14トレジャーハンター(魔門開かない)。

did:symbol:NC3XK5WRNQSDZRDBRD6NWL3RHYV5QNLU4WTXODA

Amazon欲しいものリスト