AWSでPolkadotノードを立ち上げてValidatorに俺はなる[3/3] ブロック検証とノミネートしていく


1. AWSで環境構築

2. ノードを立てる

3. Polkadotでアカウント作成 Validatorになる◀︎今回

今回やることは以下の通り。

・アカウント作成
・ノードとアカウントの紐付け
・ブロック検証(同期必須)
・ノミネート

多分まだ同期中だよって方がいると思いますが、同期できてなくてもアカウント作ったりノミネートしたり準備したりできるので同期を待ちきれない方はやって見ましょう。

アカウント作成

1)Polkadot UIでアカウントを2つ作ってください。それぞれにControllerとStashの役割を持たせます。簡単にいうと、ControllerはValidatorやNominatorになるアカウントで、Stashは掛け金をロックして置くところです。Controllerのシードはノードと紐づける時に必要なので無くさないように。

2)アカウントにdotsを送金して下さい。それぞれ100mili dots以上が必要です。手数料考えて150milli dotsくらいは欲しい。

faucetから送ってもらえます。
足りない方はPolkadot Watercoolerでお願いしたら優しい人が送ってくれると思います。

3)ExtrinsicsからControllerアカウントを選び、session::setKeyを実行。

4)Stashでstaking::bond、ターゲットをControllerに選択して実行。DotsはStashの持つ手数料を考えてほとんどを入力。payeeはもらえる報酬をどう扱われるかです。以下の3つを確認しています。

0x00: Stashに振込, したがってステイク量も増やす。
0x01: Stashに振込, ステイク量は増やさない。
0x02: Controllerに振込

これで下準備は整いました!
あとはノードと紐付けをしてValidatorになるか、このままNominatorになるかです。
ノミネーターはノードなくてもできますので、同期まだの人はノードとアカウントの紐付けまで飛ばして下さい。

ノードとアカウントの紐付け

VPSの方はSSHでアクセス後、以下を実行。

説明:
--validator バリデータになる
--key 後ろにさっきのControllerアカウントの英単語でできたシードを入力して下さい。

ubuntu@
$ sudo docker run --restart=unless-stopped -d -it -p 30333:30333 -p 9933:9933 -v /path-to/polkadot-data/:/data chevdor/polkadot:0.3.21 polkadot --validator --key “<your-raw-seed>"--chain alex --name <your-node-name> -d /data

長いのでaliasおすすめ

$ alias polkadocker="sudo docker run --rm -d -it -p 30333:30333 -p 9933:9933 -v /home/ubuntu/polkadot-data/:/data chevdor/polkadot:0.3.21 polkadot --chain alex --name <your-node-name> -d /data"

$ polkadocker --validator --key "<your-raw-seed>"

紐付けできるとTelemetryのノード名の隣にアカウント情報が表示されます。

ブロック検証(同期必須)

いよいよブロック検証です。

ExtrinsicsからControllerでstaking::validate(pref)を選択。Prefsには0x0c00を入力してサブミット。これでステイクできたら、Intention(Validatorの意思表示した人のレコード)に追加されます。次のEra(1Eraは大体1時間くらい)からValidatorになれるはずです。

Validatorになれないよーって人は左タブのStaking>Account Actionsに行き、ControllerでValidateを押してサブミットして下さい。それでもダメならまたSessionKeyの設定から行ってみるか、Riotで聞いて下さい。

Eraが更新されるとValidatorsに自分のアドレスが追加されています。上の人から順番にブロックを検証していくようです。

Explorerからは実際に自分が検証したブロック情報をみることができます。約6秒毎にブロックが生成されます。いつまででも見ていられますね。Era毎にアカウント設定時に指定した宛先に報酬が振込まれるはずです。なぜか貰えていなかったのでGavinに聞いたら、「システムはあるけどまだ報酬はとても低い。報酬は一番低いStakeに比例して変動する。」とのこと。今は100milliでValidatorになれるので低すぎてmilliDotの単位では確認できなかったのかもしれないですね。今後のアップデート待ちです。

ノミネートしてみる

上で説明したように、ノミネーターはノードを動かさなくてもできる役割です。ノミネートしているValidatorが悪いことせずにちゃんと仕事していれば自分も報酬が貰えます。逆に悪いことすると、自分の掛け金も没収されることがあるのでValidator選びは慎重に。

やり方A:
1) Staking多分からAccount Actionsに行き、ControllerでNominateを選択。
2) Nominate先には好きなValidatorアドレスを入力。

誰をノミネートすればいいかわからないって方は以下僕のアドレスなのでぜひノミネートして下さい。
5CM4g11mmZDNDHVFByrZmChVyjVuiZvYQJqbpa3nF1s24U17

やり方B:Extrinsicsのstaking::nominateでも同じことができます。

ノミネートをやめる

ノミネートに使っているControllerでstaking::chillを実行。

掛け金を取り戻す

1)Controllerでstaking::unbondでやめたい掛け金の額を入力。
2)次のEraまで待つ。(600ブロック)
3)Controllerでstaking::withdraw_unbondedを実行。

StashアカウントにロックしたDotsを動かせるようになったはずです。

まとめ

今回はAWSでPolkadotノードを立ち上げて実際にValidatorかNominatorになるところまでを解説しました。
実際にメインネットに移行した場合はこのチュートリに正直に従わないで下さい。これはあくまでPOC3のAlexテストチェーンなので、メインネットでValidatorになるにはEthereumなどでも同じですが、セキュリティ面の詳しい知識が必須です。

今後はSubstrateのRuntimeをいじってカスタムチェーン作っていければなと思います。
もっと詳しくPolkadotについて知りたい方は、ぜひホワイトペーパーを読んで見て下さい。現在日本語訳を作っているところなので絶賛協力者募集しています。

resource:
https://hackmd.io/5Vr3CvSPS0KS8JrJN_r58A