LoginSignup
7
6

symbol-shoestringで nodeを コマンドで作成する

Last updated at Posted at 2024-04-10

symbol-shoestringを使用するにあたって
pythonの環境を整えて置く必要があります
こちらは だいさんの紹介する方法
(リンクは pyenv環境の構築の項目に飛びます)

で こちらは 僕が常用している方法

以上の環境を構築出来ていて、なおかつ symbol-bootstrapが動作する環境でやりました
python3.9の環境なら symbol-shoestringの インストール及び動作は出来ます

さて今回は
shoestring.wizardで作成された nodeを模倣(nodeAccountは全く別w)した nodeを コマンドだけで構築してみよう!って言う趣旨です

今回は 2024/04/10時点で最新の symbol-shoestring 0.1.2を使います
symbol-shoestringの インストール

pip install symbol-shoestring

では始めます

最初に作業ディレクトリを作りましょうか

あらかじめ ss/1って ディレクトリに shoestring.wizardで作った nodeがありますので

cd
cd ss
mkdir 2
cd 2

ssってのは('S'hoe'S'tring)って意味ですね
この下に'2'って ディレクトリを作って そこで nodeを作ってみよう!
お隣には '1'って ディレクトリ(shoestring.wizardで作った node)があります
'1'に作成されてる ファイルを参照しながら コマンド打って行こう!って企みです

mainAccountを作成しよう!

mainAccountを作成する openssl genpkey
今 ss/2にいます

openssl genpkey -algorithm ed25519 -outform PEM -out ca.key.pem

ca.key.pemってのが出来ます
これ mainAccountですね
内容の見方は

openssl pkey -in ca.key.pem -text -noout

image.png
上の priv:に文字列があるっしょ?これ mainAccountの秘密鍵なんです
これから':'を取り除くと
4494736b31a7a3059fe7b22a627bfa17cf6eaaa30f2052af5ee7489b47238691
って 秘密鍵なるんです

基本設定ファイル configファイルを作成しよう!

configファイルを作成する shoestring init
shoestring.wizardで nodeを作ると
shoestringって ディレクトリが出来て その中に
shoestring.ini
overrides.ini

って ファイルが出来るんですが コマンドでやるには
shoestring ディレクトリとか作る必要 ありません!
作業 ディレクトリに直接作っちゃいましょう

python3 -m shoestring init --package sai sai.ini

意味は「testnet用の configファイルを sai.iniってファイル名で作れ」ですね
--packageってのは mainnetか testnetかを指定してます
testnetNodeを作りたい場合は --package saiって入れるんですね
mainnetNodeを作りたい時は これ 要りません まぁ --package mainnetって入れてもいいですが

今出来たsai.iniの内容が以下です

[network]

name = testnet
identifier = 152
epochAdjustment = 1667250467
generationHashSeed = 49D6E1CE276A85B70EAFE52349AACCA389302E7A9754BCF1221E79494FC665A4

[images]

client = symbolplatform/symbol-server:gcc-1.0.3.7
rest = symbolplatform/symbol-rest:2.4.4

[services]

nodewatch = https://nodewatch.symbol.tools/testnet

[transaction]

feeMultiplier = 200
timeoutHours = 1
minCosignaturesCount = 0
hashLockDuration = 1440
currencyMosaicId = 0x72C0212E67A08BCE
lockedFundsPerAggregate = 10000000

[imports]

harvester =
voter =

[node]

features = API | HARVESTER | VOTER
userId = 1000
groupId = 1000
caPassword =
apiHttps = true

caCommonName =
nodeCommonName =

一番下の方に
image.png
ってなってますが
shoestring.wizardで作った方のshoestring/shoestring.ini(これが今作った sai.iniに相当するんです)を見ると
image.png
features = API|HARVESTER
よくわかりません APIがあって ハーベストをするって事でしょうか?
まぁいいです 後で調べれば判るっしょ

apiHttps = false
今回は httpsにしないので falseにしましたよ
caCommonName = CA 1
nodeCommonName = 1 9.dusanjp.com
え〜 '1'ってのは friendlyNameで テキトーに付けました
空いた ドメインがあったので これも テキトーに付けました

...ってなってますんで ここ 変更しましょうか

vi sai.ini

変えました!(下の方ですよ[node]ってトコですよ)

[network]

name = testnet
identifier = 152
epochAdjustment = 1667250467
generationHashSeed = 49D6E1CE276A85B70EAFE52349AACCA389302E7A9754BCF1221E79494FC665A4

[images]

client = symbolplatform/symbol-server:gcc-1.0.3.7
rest = symbolplatform/symbol-rest:2.4.4

[services]

nodewatch = https://nodewatch.symbol.tools/testnet

[transaction]

feeMultiplier = 200
timeoutHours = 1
minCosignaturesCount = 0
hashLockDuration = 1440
currencyMosaicId = 0x72C0212E67A08BCE
lockedFundsPerAggregate = 10000000

[imports]

harvester =
voter =

[node]

features = API | HARVESTER
userId = 1000
groupId = 1000
caPassword =
apiHttps = false

caCommonName = CA 1
nodeCommonName = 1 9.dusanjp.com

features = API | HARVESTER
これなんですが
元の
features = API | HARVESTER | VOTER
から
| VOTER
を消しただけですw

...ふぅ
いやいやまだまだ

設定上書きファイル overrides.ini を作ろうず

*overrides.iniを作成する vi overrides.ini
overrides.iniってのは何だろう?って言うと
まぁアレだ
例えば symbol-bootstrapだと
symbol-bootstrap config -p testnet -a dual
で nodeは建つけど
カスタムプリセットも -c カスタムプリセットで指定して
host名とか friendly名とか後いろいろ設定入れるっしょ?

overrides.iniってのは それに相当するもんだと思えばいいかな

じゃ 元になる shoestring.wizardで建てた方のshoestring/overrides.ini 見てみましょ

[user.account]
enableDelegatedHarvestersAutoDetection = false

[harvesting.harvesting]
maxUnlockedAccounts = 5
beneficiaryAddress = 

[node.node]
minFeeMultiplier = 100

[node.localnode]
host = 9.dusanjp.com

.......ふーん なるほどなるほどなるh...
まいっか!これ そのまま コピペしちまおう!

vi overrides.ini

(上に貼った shoestring/overridesの内容を コピペw そして保存www)

...と これで
configファイルsai.ini
overridesファイルoverrides.ini
が出来上がった訳なんですが

node建てるぞ!

nodeの セットアップ命令 shoestring setup

python3 -m shoestring setup --config sai.ini --ca-key-path ca.key.pem --directory . --overrides overrides.ini --package sai

命令の説明はっつーと

--config initで作成した ファイル sai.ini
--ca-key-path mainAccountの パス ca.key.pem
--directory nodeを作成する場所 nodeの作業ディレクトリなら . 他の任意の場所ならその場所のパス 例:~/ss/2
--overrides 設定上書きファイル overrides.ini
--package mainnetなら不要 testnetならこれを記述する sai

[enter]アアアアアー
image.png
はい ズラララララララーっと出て来ました なんかエラーは吐いて無いみたいなんで
良しとしましょうね

じゃ 作業ディレクトリの中身を見てみましょ
はい
image.png

で こっちは shoestring.wizardで作った方の作業ディレクトリね
image.png
shoestring.wizardで作った方の nodeは
sai.inioverrides.iniが無くて shoestringディレクトリがあるのね
でその shoestringディレクトリの中に
sai,iniに相当するshoestring.ini
overrides.ini
(メタデータを設定すると ここに node_metadata.jsonも入る)
...が 入ってますって言うか

コマンドで作るのと shoestring.wizardで作るかで構造が違うんですよ

nodeを動かすぞ!

nodeを起動する docker-compose up -d
nodeを停止する docker-compose down

あっそうそう
symbol-bootstrapの nodeを回してた サーバで
いきなり

docker-compose up -d

ってやると エラーが出るから
image.png
↑こんなの
そんな時は

docker system prune

をやると動きますよ
止める時は

docker-compose down

なんか testnetの頃の nodeの動かし方思い出すは

nodeの設定を変更するぞ!

nodeの設定を変更する shoestring upgrade
使い方は setupとよく似てますね
overridesの内容を 例えば host名とか friendlyNameとか
minFeeMultiplierとか
maxUnlockedAccountsとか
beneficiaryAddressとか
ここに書いてある事はとりあえず変更出来ますね

vi overrides.ini

(overrides.iniの内容を変更して保存)
これを反映させます

python3 -m shoestring upgrade --config sai.ini --directory ~/ss/2 --overrides overrides.ini --package sai

はいはいまたまた命令の説明っす

--config initで作成した ファイル sai.ini
--ca-key-path mainAccountの パス ca.key.pem
--directory nodeを作成する場所 nodeの作業ディレクトリの パス 例:~/ss/2
--overrides 設定上書きファイル overrides.ini
--package mainnetなら不要 testnetならこれを記述する sai
`
こんなカンジっすね

image.png

nodeがちゃんと動いてるかな?見てみよう!

nodeの healthを チェックする shoestring health

python3 -m shoestring health --config sai.ini --directory .

--config initで作成した ファイル sai.ini
--directory 作業ディレクトリの場所 .

image.png
blockが進んだら 命令は終了しますんで ちょっと待つ事もあるです

block1から再同期するぞ!

blockDataを リセットする shoestring reset-data

python3 -m shoestring reset-data --config sai.ini --directory .

--config initで作成した ファイル sai.ini
--directory 作業ディレクトリの場所 .

image.png

言わずもがなの resetDataですね data全消しですよ

...とりあえずおわり!ハラ減った!

さんこう
やっぱジャパニーズ語で書いてある方がやりやすいっすね
翻訳でアタマ熱くならんし

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6