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
上の 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 =
一番下の方に
ってなってますが
shoestring.wizardで作った方のshoestring/shoestring.ini
(これが今作った sai.iniに相当するんです)を見ると
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]アアアアアー
はい ズラララララララーっと出て来ました なんかエラーは吐いて無いみたいなんで
良しとしましょうね
で こっちは shoestring.wizardで作った方の作業ディレクトリね
shoestring.wizardで作った方の nodeは
sai.ini
とoverrides.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
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
`
こんなカンジっすね
nodeがちゃんと動いてるかな?見てみよう!
nodeの healthを チェックする shoestring health
python3 -m shoestring health --config sai.ini --directory .
--config
initで作成した ファイル sai.ini
--directory
作業ディレクトリの場所 .
blockが進んだら 命令は終了しますんで ちょっと待つ事もあるです
block1から再同期するぞ!
blockDataを リセットする shoestring reset-data
python3 -m shoestring reset-data --config sai.ini --directory .
--config
initで作成した ファイル sai.ini
--directory
作業ディレクトリの場所 .
言わずもがなの resetDataですね data全消しですよ
...とりあえずおわり!ハラ減った!
さんこう
やっぱジャパニーズ語で書いてある方がやりやすいっすね
翻訳でアタマ熱くならんし