symbol-network
これは 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
新しい network を作りますか?と聞いています "y" で
bootstrap
testnet
mainnet
既に持っている custom-network-preset.yml
この4つから選べます 今回は testnet を選びます
ここは私が持っている domain dusan.gq
を使用する事にしましょうか
建てる node の host名の先頭にnewnetwork
が付きます
node の host名の付け方を決めます ここは[enter]で
すると node の host名がnewnetwork-dual-001
となります
複数の node を作成した場合は 更に
002
003
と振られます
この作業が終わるとkey-store.yml
と言う file が作成されますが
これを使用する作業をする際の password を設定します
作成する network type を決めます
これはおそらく mainnet と testnet では 若干設定が違う(importance 反映にかかる時間とか)ので
これを選択します
testnet
を選びますか
これなんですが 良く判りません
とりあえず ここはnewnetwork-1
とでも入れて置きます
この作業の後に出来るcustom-network-preset.yml
の 1行目と
この後の作業で作成される voting node の target/preset.yml の中が
networkDescription: newnetwork-1
となるんですが...
まぁ次行きましょう
generation hash ですね
https://symbolnodes.org/nodes_testnet/
これですこれ ジェネレーション ハッシュ って言うやつです
これが同じ node 同士が繋がって それぞれ network を作っているんですね
現在の testnet nodeList 上には
49D6E1CE276A85B70EAFE52349A...(現 testnet "sainet")
7FCCD304802016BEBBCD342A332...(旧 testnet)
8CB80B906770AF80B08FA3D901E...(だいさん作成の dainet)
を見る事が出来ます
そうです これらは 別々の network なんです
ここは[enter]します 勝手に生成してくれます
今回生成された ジェネレーション ハッシュ は
C6F3463BE66AFB4847DD925EE8F15D1897CB9430E9408D21E91C22B28536726E
です
ここを含めて6つの質問には[enter]しときましょう
この質問の中に
Enter the basename for the network aliases
Enter the alias for the Network Currency
がありますが この2つの質問に[enter] でsymbol.xym
になります ここで好きな通貨名を入れる事も出来ます
faucet の account を作成します "y" にします [enter] で "y" が入力されます
ここから後の4つの質問には[enter]をします
この中に出てくるDo you want to distribute coin xym to different accounts on the nemesis block?
なんですが
もしかしたら メイン通貨の他に サブ通貨を作れるんじゃないか?と思っていますが
やった事無いので判りません
なにやら file が作成された様な メッセージ が表示されます
この時点でcustom-network-preset.yml
が作成されました
ここからは node 作成に入ります
今回は voting dual
1つだけ作成しましょう
voting dual
を選択して[enter]します
voting dual を何個作りますか?って聞いて来ます
どうやら3つ作成出来るみたいですが 1つで充分です "1" を入力[enter]
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" になる筈です(試してません)
え〜 ここは よく判りませんでした ちゃんと説明出来ませんすいません
「あなたの Rest Gateway の HTTP プロトコル を選んで下さい」って書いてありますね
ここはHttpAndHttps
を選んどきますか
ここですね?今回は voting node 1つだけ作るんですけど
複数の node を作成する時は その都度聞いて来るので それぞれの node で選択出来るんですが
どういう事かは私には よく判ってません
Do you want to create 1 nodes of type Voting Dual each with balance of 3000000?
って聞いて来るんですが
これは 「300万 xym が入った voting node を1つ作成します いいですか?」つまり確認ですね
[enter]します
「もっと node を作成しますか?」って聞いて来ますが
今回は voting dual node 1つでもう必要十分なので "n" です
network-input.yml
が作成されましたとの メッセージが表示されます
ここでやっとこさ 1つ目の コマンドは終了です
さて 作業 ディレクトリの内容を見てみましょうか
3つ file が出来てますね
①custom-network-preset.yml
network の性格がこの中に入ってます
長いので上の方だけ見せます
②network-input.yml
作成した node の情報...みたいですね
③key-store.yml
各 アドレス の秘密鍵が格納されています これは暗号化されていて symbol-bootstrap decrypt
命令と 今回作った password で復号出来ます
2つ目の コマンド symbol-network expandNodes
symbol-network expandNodes
メッセージ を直訳してみると
パスワードが設定されています
network.ymlが保存されました。
network-input.ymlを再確認してください。ホスト名やフレンドリー名など、ノードのプロパティを調整することができます。
また、以下の命令を実行することもできます。
$ symbol-network displayResolvedNetworkPreset
この命令は使用するネットワークプリセットを表示します。custom-network-preset.yml を更新することで調整可能です。
調整に満足したら以下の命令を実行して下さい
$ symbol-network generateNemesis
定義した初期ノードに基づき、nemesis ノードを生成します。ノードはブロック1から完全にリンクされ、資金が供給されるようになります!
何が起こったかと言いますとnetwork.yml
と言う file が作成されます
file の中身は こうです
1つだけ作成した voting dual node の事が書かれているのだけは判ります
node の customPreset らしき物も見えますね
メッセージ に出ていたsymbol-network displayResolvedNetworkPreset
実行してみました
長いので冒頭と末尾を見せます
ほぼほぼcustom-network-preset.yml
の内容と同じみたいですって言うか
それを表示してるみたいです
この file を編集する事で network-properties 言わば network の性格ですね
これの変更が出来ます
例えば
10行目に voting node になる為の必要枚数が ここに記述されてますが
ここを
minVoterBalance: 3000000000000
から
minVoterBalance: 10000000000
に変更すると
voting node の最低限必要な枚数が 10,000枚になります
custom-network-preset.yml
の変更したい部分があれば この時点で変更出来ると言う事です
3つ目の コマンド symbol-network generateNemesis
symbol-network generateNemesis
この コマンド で nemesis block の情報が格納されたnemesis-seed
と
起動可能な node が入っているnemesis-target
が作成されました
コマンド で表示された 一番下の メッセージ を見てみましょう
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.yml
とnemesis-seed
を
他の サーバの作業 ディレクトリ に送って そこで config
又はstart
で
この network に繋げる事が出来るんです
複数 node による network が出来上がるんです
この2つがあれば 出来るんです
とりあえず置いといて
起動してみましょう
symbol-bootstrap start -t nemesis-target --noPassword --detached --healthCheck --report --pullImages
いろいろ メッセージ が出てきますが ちょっとだけ待つと
こうなります
ちょっと node の状態を見てみましょう
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
を見てみましょう
faucet ですね
じゃあhttp://newnetwork-dual-001.dusan.gq:90
行ってみましょう
...あ〜 上手く表示されませんね
まぁここは だいさんの記事で 最新の symbol-explorer の構築方法があるので
放っときます
faucet も別に建てる事は出来ますのでこれも放置しましょう
名残り惜しいですが 今動いている node を止めます
symbol-bootstrap stop -t nemesis-target
これで今動いていた node は停止しました explorer と faucet も止まりました
4つ目の コマンド symbol-network configureNodes
symbol-network configureNodes
最初に psaaword を聞いて来るんですが これは
この命令で ①の コマンンド の時に作った voting node の password を新規に作成します
voting node の作業では こちらの password を使用します
次に聞いて来るのが symbol-network の password です これまでにも何度も入力して来た password ですね
この コマンド で コマンド②で作成されたnetwork.yml
に追記がされます
赤枠の部分が追記された部分です
また 新たにnodes
ディレクトリが出来ました
入ってみます
cd nodes
ls
cd node-001
ls
これが①の コマンド で作成した newnetwork-dual-001
の本体です
この node を起動すると voting が機能するので
finalize が進みます
あと 気付いたと思いますが
custom-network-preset.yml
とnemesis-seed
が ここにもありますね
custom-preset.yml
の内容
これはもう
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 の状態を見てみます
"host": "newnetwork-dual-001.dusan.gq"
"friendlyName": "newnetwork-dual-001"
これです これが 最初の コマンド① で作った voting node なんです
これが起動している事で finalaize が進みます
ちなみに block は 1 から やり直しになります
別の サーバ から network に参加する
ここで 別の サーバに ログイン して
作業 ディレクトリnewnetwork
を作成
ディレクトリnewnetwork
に とりあえず scp コマンド で
custom-network-preset.yml
とnemesis-seed
を転送します
node を 開始します
とりあえず host/friendlyName 等の設定は無しのまま起動してみましょう
symbol-bootstrap start -p custom-network-preset.yml -a dual -d
これで peer に繋がって来れば 成功です
繋がっています
お互いの node が peer で繋がっている事が判ります
preset を symbol-bootstrap に組み込む
これは どちらの サーバ でも構いません
custom-network-preset.yml
とnemesis-seed
が あれば出来ます
①付けたい preset名を付けた ディレクトリを作成する
ここでは preset名をnewnet
として作業します
mkdir newnet
②この ディレクトリnewnet
に
custom-network-preset.yml
とnemesis-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
を注釈化する
赤線の部分を
の様に変更 保存する
⑤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/
に存在する ケース もあります
-----俺様用しおり ここまで書いた-----
めりー🎅くりすます🎄