12
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

nem / symbolAdvent Calendar 2022

Day 25

"symbol-network" 複数 node が参加可能な network の作成 tool の紹介と「使用してみた」

Posted at

symbol-network

symbol-network 命令一覧
image.png
Google 翻訳
image.png

これは Symbol node が動作する環境なら動きます
docker
docker-compose
node.js

以上が入っていれば良いです

まずは symbol-network の インストール

sudo npm install -g symbol-network

network 作成用の ディレクトリ を作成し そこに入る

mkdir newnetwork
cd newnetwork

では始めましょう

1つ目の コマンド symbol-network init --ready

symbol-network init --ready

image.png
新しい network を作りますか?と聞いています "y" で
image.png
bootstrap
testnet
mainnet
既に持っている custom-network-preset.yml
この4つから選べます 今回は testnet を選びます
image.png
ここは私が持っている domain dusan.gqを使用する事にしましょうか
image.png
建てる node の host名の先頭にnewnetworkが付きます
5.png
node の host名の付け方を決めます ここは[enter]で
すると node の host名がnewnetwork-dual-001となります
複数の node を作成した場合は 更に
002 003と振られます
image.png
この作業が終わるとkey-store.ymlと言う file が作成されますが
これを使用する作業をする際の password を設定します
image.png
作成する network type を決めます
これはおそらく mainnet と testnet では 若干設定が違う(importance 反映にかかる時間とか)ので
これを選択します
testnetを選びますか
image.png
これなんですが 良く判りません
とりあえず ここはnewnetwork-1とでも入れて置きます
この作業の後に出来るcustom-network-preset.ymlの 1行目と
この後の作業で作成される voting node の target/preset.yml の中が
networkDescription: newnetwork-1となるんですが...
まぁ次行きましょう
image.png
generation hash ですね
image.png
https://symbolnodes.org/nodes_testnet/
これですこれ ジェネレーション ハッシュ って言うやつです
これが同じ node 同士が繋がって それぞれ network を作っているんですね
現在の testnet nodeList 上には
49D6E1CE276A85B70EAFE52349A...(現 testnet "sainet")
7FCCD304802016BEBBCD342A332...(旧 testnet)
8CB80B906770AF80B08FA3D901E...(だいさん作成の dainet)
を見る事が出来ます
そうです これらは 別々の network なんです

ここは[enter]します 勝手に生成してくれます
今回生成された ジェネレーション ハッシュ は
C6F3463BE66AFB4847DD925EE8F15D1897CB9430E9408D21E91C22B28536726Eです

ここを含めて6つの質問には[enter]しときましょう
image.png
この質問の中に
Enter the basename for the network aliases
Enter the alias for the Network Currency
がありますが この2つの質問に[enter] でsymbol.xymになります ここで好きな通貨名を入れる事も出来ます
image.png
faucet の account を作成します "y" にします [enter] で "y" が入力されます
image.png
ここから後の4つの質問には[enter]をします
この中に出てくるDo you want to distribute coin xym to different accounts on the nemesis block?なんですが
もしかしたら メイン通貨の他に サブ通貨を作れるんじゃないか?と思っていますが
やった事無いので判りません
image.png
なにやら file が作成された様な メッセージ が表示されます
この時点でcustom-network-preset.ymlが作成されました
image.png
ここからは node 作成に入ります
今回は voting dual1つだけ作成しましょう
voting dualを選択して[enter]します
image.png
voting dual を何個作りますか?って聞いて来ます
どうやら3つ作成出来るみたいですが 1つで充分です "1" を入力[enter]
image.png
What's the initial xym balance for the Voting Dual nodes?
voting dual node の main account に付与する通貨枚数を入れます[enter]で 300万枚が入ります
The nick name of the these nodes
voting dual node の名前を入れます ここは[enter]します
これで voting node の host が "newnetwork-dual-001" になります
例えば ここの名前を "a" と入れると
voting node の host が "newnetwork-a-001" になる筈です(試してません)
image.png
え〜 ここは よく判りませんでした ちゃんと説明出来ませんすいません
「あなたの Rest Gateway の HTTP プロトコル を選んで下さい」って書いてありますね
ここはHttpAndHttpsを選んどきますか

ここですね?今回は voting node 1つだけ作るんですけど
複数の node を作成する時は その都度聞いて来るので それぞれの node で選択出来るんですが
どういう事かは私には よく判ってません
image.png
Do you want to create 1 nodes of type Voting Dual each with balance of 3000000?って聞いて来るんですが
これは 「300万 xym が入った voting node を1つ作成します いいですか?」つまり確認ですね
[enter]します
image.png
「もっと node を作成しますか?」って聞いて来ますが
今回は voting dual node 1つでもう必要十分なので "n" です
image.png
network-input.ymlが作成されましたとの メッセージが表示されます

ここでやっとこさ 1つ目の コマンドは終了です
さて 作業 ディレクトリの内容を見てみましょうか
image.png
3つ file が出来てますね

custom-network-preset.yml
network の性格がこの中に入ってます
image.png
長いので上の方だけ見せます

network-input.yml
作成した node の情報...みたいですね
image.png

key-store.yml
各 アドレス の秘密鍵が格納されています これは暗号化されていて symbol-bootstrap decrypt命令と 今回作った password で復号出来ます
image.png

2つ目の コマンド symbol-network expandNodes

symbol-network expandNodes

image.png

メッセージ を直訳してみると

パスワードが設定されています

network.ymlが保存されました。

network-input.ymlを再確認してください。ホスト名やフレンドリー名など、ノードのプロパティを調整することができます。

また、以下の命令を実行することもできます。
$ symbol-network displayResolvedNetworkPreset
この命令は使用するネットワークプリセットを表示します。custom-network-preset.yml を更新することで調整可能です。

調整に満足したら以下の命令を実行して下さい
$ symbol-network generateNemesis
定義した初期ノードに基づき、nemesis ノードを生成します。ノードはブロック1から完全にリンクされ、資金が供給されるようになります!

何が起こったかと言いますとnetwork.ymlと言う file が作成されます
image.png
file の中身は こうです
image.png
1つだけ作成した voting dual node の事が書かれているのだけは判ります
node の customPreset らしき物も見えますね

メッセージ に出ていたsymbol-network displayResolvedNetworkPreset 実行してみました
長いので冒頭と末尾を見せます
image.png
image.png

ほぼほぼcustom-network-preset.ymlの内容と同じみたいですって言うか
それを表示してるみたいです
この file を編集する事で network-properties 言わば network の性格ですね
これの変更が出来ます

例えば
image.png
10行目に voting node になる為の必要枚数が ここに記述されてますが

ここを
minVoterBalance: 3000000000000
から
minVoterBalance: 10000000000
に変更すると
voting node の最低限必要な枚数が 10,000枚になります
custom-network-preset.ymlの変更したい部分があれば この時点で変更出来ると言う事です

3つ目の コマンド symbol-network generateNemesis

symbol-network generateNemesis

image.png

image.png
この コマンド で nemesis block の情報が格納されたnemesis-seed
起動可能な node が入っているnemesis-targetが作成されました

コマンド で表示された 一番下の メッセージ を見てみましょう
image.png

Once your network is running, other people can join your new network by sharing with them the 'custom-network-preset.yml' file and 'nemesis-seed' folder.
と書かれてます

つまりこれ
custom-network-preset.ymlnemesis-seed
他の サーバの作業 ディレクトリ に送って そこで config又はstart
この network に繋げる事が出来るんです
複数 node による network が出来上がるんです
image.png
この2つがあれば 出来るんです

とりあえず置いといて

起動してみましょう

symbol-bootstrap start -t nemesis-target --noPassword --detached --healthCheck --report --pullImages

いろいろ メッセージ が出てきますが ちょっとだけ待つと
image.png
こうなります

ちょっと node の状態を見てみましょう
image.png
curl localhost:3000/node/info|jq
curl localhost:3000/chain/info|jqですね
もう block が進んでいるのが判ると思います 今は 3 block ですね

で 判る人は気付いたと思いますが この node
先程作成した voting node じゃありません ただの dual node です
そして
このままだと block は進みますが finalize は全く進みません

あらかじめ domain "newnetwork-dual-001.dusan.gq" を作っておいたので
ブラウザ でhttp://newnetwork-dual-001.dusan.gq:100を見てみましょう
image.png
faucet ですね

じゃあhttp://newnetwork-dual-001.dusan.gq:90行ってみましょう
image.png
...あ〜 上手く表示されませんね

まぁここは だいさんの記事で 最新の symbol-explorer の構築方法があるので
放っときます

faucet も別に建てる事は出来ますのでこれも放置しましょう

名残り惜しいですが 今動いている node を止めます

symbol-bootstrap stop -t nemesis-target

これで今動いていた node は停止しました explorer と faucet も止まりました

4つ目の コマンド symbol-network configureNodes

symbol-network configureNodes

image.png
最初に psaaword を聞いて来るんですが これは
この命令で ①の コマンンド の時に作った voting node の password を新規に作成します
voting node の作業では こちらの password を使用します
次に聞いて来るのが symbol-network の password です これまでにも何度も入力して来た password ですね

この コマンド で コマンド②で作成されたnetwork.ymlに追記がされます
image.png
赤枠の部分が追記された部分です

image.png
また 新たにnodesディレクトリが出来ました
入ってみます

cd nodes
ls
cd node-001
ls

image.png
これが①の コマンド で作成した newnetwork-dual-001の本体です
この node を起動すると voting が機能するので
finalize が進みます
あと 気付いたと思いますが
43.png
custom-network-preset.ymlnemesis-seedが ここにもありますね

custom-preset.ymlの内容
image.png
これはもう
symbol-bootstrap run -dで起動出来ます

では voting node newnetwork-dual-001起動しましょう

symbol-bootstrap run -d

curl localhost:3000/node/info|jq
curl localhost:3000/chain/info|jqで node の状態を見てみます

image.png
"host": "newnetwork-dual-001.dusan.gq"
"friendlyName": "newnetwork-dual-001"
これです これが 最初の コマンド① で作った voting node なんです
これが起動している事で finalaize が進みます
ちなみに block は 1 から やり直しになります

別の サーバ から network に参加する

ここで 別の サーバに ログイン して
作業 ディレクトリnewnetworkを作成
ディレクトリnewnetworkに とりあえず scp コマンド で
custom-network-preset.ymlnemesis-seedを転送します
47.png
node を 開始します
とりあえず host/friendlyName 等の設定は無しのまま起動してみましょう

symbol-bootstrap start -p custom-network-preset.yml -a dual -d

48.png
起動しました

これで peer に繋がって来れば 成功です
image.png
繋がっています
お互いの node が peer で繋がっている事が判ります

preset を symbol-bootstrap に組み込む

これは どちらの サーバ でも構いません
custom-network-preset.ymlnemesis-seedが あれば出来ます
①付けたい preset名を付けた ディレクトリを作成する
ここでは preset名をnewnetとして作業します

mkdir newnet

②この ディレクトリnewnet
custom-network-preset.ymlnemesis-seedを コピーして
ディレクトリ 内に入ります

cp custom-network-preset.yml newnet/
cp -r nemesis-seed newnet/
cd newnet

custom-network-preset.ymlの名前を network.ymlに変更する

mv custom-network-preset.yml network.yml

network.ymlを編集する

vi network.yml

487行目のnemesisSeedFolder: nemesis-seedを注釈化する
image.png
赤線の部分を
image.png
の様に変更 保存する

nemesis-seedの名前をseedに変更する

mv nemesis-seed seed

seedの パーミッション を変更する
このままだと symbol-bootstrap の本体に入れると seedの内容が読めなくなるので
これを変更します

chmod -R 777 seed

⑦階層を1つ登って symbol-bootstrap の本体へ ディレクトリ を コピー する

cd ../
sudo cp -r newnet /usr/lib/node_modules/symbol-bootstrap/presets/

以上で preset の追加作業は完了です
これで
symbol-bootstrap config -p newnet -a dual
または
symbol-bootstrap start -p newnet -a dual.....
の書き方で newnetwork の node を作成出来る様になりました

これも又 newnetディレクトリを 他の サーバに転送して
sudo cp -r newnet /usr/lib/node_modules/symbol-bootstrap/presets/
とする事で その サーバ上でも -p newnetが有効になります
※symbol-bootstrap の preset 部分は/usr/local/lib/node_modules/symbol-bootstrap/presets/
に存在する ケース もあります

-----俺様用しおり ここまで書いた-----
めりー🎅くりすます🎄

12
4
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
12
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?