Ethereum バリデータノードを構築してみた - Part 1 テストネット
TLDR
使用したmini PCスペック:
- Intel NUC 11 Pro Kit i7系
- Crucial 32gb メモリー
- Crucial 2tb SSD
- Debian OS
手順:
- DAppNodeが提供しているDebianのISOをUSBにフラッシュ
- NUCをブートする。LAN繋いだ状態が好ましい
- DAppNodeのセットアップ
- 別のPCでDAppNode Wifiに接続
- DAppNode Dashboardにログイン。
- 必ず最初にWifiパスワードを変えましょう(重要!!!!)
- Goerli Testnetでセットアップをする
- Erigon Execution Client, Teku Consensus Client, Web3Signer, Flashbots MEVセットアップ
- Wagyu Key GenとStaking Launchpadでテストネット用のバリデータとdeposit dataを作成
- DiscordでEthStakerチャンネルに入り、44h待つ
- EthStakerの手順に従って、作成したバリデータにGoerli Ethをdepositする。
- Goerli Beaconcha.inでバリデータの状況確認
- 実際にバリデートしていることを確認
- こちらの手順に従って、PrometheusとGrafanaをセットアップし、MiniPCおよびDAppNodeのメトリックスを監視できるようにする。
今回の記事はとりあえずテストネットで区切ります。次回の記事ではメインネットでのセットアップ、PagerDuty導入などの運用周りのことやMEVに関する法律などを考えていきたいです。
以上、少し長いToo Long; Didn't Read(TL;DR)でした。
(この記事ではテストネットでgoerli ethを大量に入手しなくてもバリデータになれる方法も紹介します!是非最後までお読みください!)
背景
イーサリアムステーキングを始めたいと思い、色々調べていましたが、ノード構築と運用について初心者向けの記事が多くないことに気付きました。そのため、今回は自分の体験談を記録し、共有することにしました。
目標
目標は「ソロステーキング」用のノードの構築と運用となります。すなわち、専用のMini PCを作り、そこにバリデータノードのOSとソフトウェアをインストールし、バリデータノードを稼働することです。テストネットとメインネットに記事を分けます。この記事はテストネットのセットアップまでとなります。
始める前に
バリデータノードを運用してみたいと考えている方向けの記事となっておりまして、 Ethereum初心には難易度が高いかもしれないです。
バリデータノードを運用するのは多額なリスクを背負うことになります。最低でも32Eth、日本円ですと721万円(2023/03/03)が必要となります。リスクも高いため、バリデータの責務やシステムの理解をある程度していないといけないです。勉強をして自分を守りましょう。
読者は下記のことをすでに理解しているのを前提に進めていきます:
- Ethereum 2.0
- Solo Staking
- Blockchainのウォレットや暗号鍵の管理方法
- バリデータノードの構成
- Execution Layer
- Consensus Layer
- Web3 Signer
- MEV
おすすめの記事:
- Clientの多様性
- Solo Staking
- Stakingの仕様
- Staking Guide
- Staking Guide深堀
- Flashbots, MEVについて
- バリデータが使うkeysについて
DAppNodeとは
DAppNodeはGUIなどでバリデータノードを構築と運用できるようにするOSSです。また、パッケージを追加できる構成となっており、コミュニティーが作成したパッケージなどもサクッと使えます。
今回、DAppNodeでバリデータノードを構築することにした理由は下記の通りです:
- 複数のExecution ClientとConsensus Clientをサポートしている
- Wifi、VPN、shh、ローカルproxyで接続ができる
- Grafana+Prometheusのセットアップが簡単
- GUIでセットアップした方が間違えるリスクが低い
デメリットも共有します:
- DAppNode依存によるSingle Point Of Failureリスク。
- 未熟な理解によるリスク。GUIが便利なので、裏の構造や仕様を理解しなくてもある程度は使えます。いざ障害対応などしないといけない時に何も理解していない状態であるリスクも考えられます。
- ソフトウェアのセキュリティー脆弱性。OSSなので、このリスクは低いが、まだリスクなので気を付けましょう。
それでは、自分のセットアップの体験談に進みましょう。
セットアップ手順
1.0 PCのセットアップ
まずは、バリデータノード専用のPCのスペックの選択から始まりました。
結論から言うと、下記のセットアップを選びました。
- Intel NUC 11 Pro Kit i7系
- Crucial 32gb メモリー
- Crucial 2tb SSD
約12万円の出費でした。あとで説明しますが、メモリーは32GBを勧めます。
詳細
公式ページによると、
Minimum specs
4 - 8 GB RAM
2 TB SSD
SSD necessary for required write speeds.
最低でも8gb, 2TB SDDが推奨されています。
To maximize the efficiency of your validator, a minimum of 16 GB RAM is recommended, but 32 GB is better, with a CPU benchmark score of 6667+ on cpubenchmark.net. It is also recommended that stakers have access to unlimited high-speed internet bandwidth, though this is not an absolute requirement.
しかし、ステーキングもしたい場合、ベストは32gbのメモリーらしいです。
実際に使うExecution ClientをErigonにすると決めていたので、Erigonが推奨するスペックも確認しました。
For an Archive node of Ethereum Mainnet we recommend >=3TB storage space: 1.8TB state (as of March 2022), 200GB temp files (can symlink or mount folder <datadir>/temp to another disk). Ethereum Mainnet Full node ( see --prune* flags): 400Gb (April 2022).
...
SSD or NVMe. Do not recommend HDD - on HDD Erigon will always stay N blocks behind chain tip, but not fall behind. Bear in mind that SSD performance deteriorates when close to capacity.
RAM: >=16GB, 64-bit architecture.
推奨されているのは3TB以上のストレージで、メモリーは16gb以上ですね。
一旦、2TBで挑戦をし、無理そうだったらLight Nodeに切り替える覚悟で、自分は2TBのSDDにすることにしました。
また、メモリーは16gbだと不安なので、余裕を持って32gbにすることにしました。
Solo StakingではよくIntelのNUCが使われているようなので、自分もIntelのNUCにしました。
CPUはIntel 11世代 i7のCPUにすることにしました。少しオーバースペックかもしれないですが、CPUも少し余裕を持たせたかったからです。
1.1 OSとDAppNodeインストール
DAppNode公式DocsよりISOをダウンロードしました。ベースとなるOSはDebianのようです。手順に従ってインストールしましょう。
Etcherを使い、先ほどダウンロードしたISOをUSBにFlashします。
Flashが完了したら、Mini PCにUSBとLANケーブルを差し込み、電源を入れます。モニターとキーボードも用意しておきましょう。
セットアップに従って、言語、パスワード、パーティションについて入力をします。
セットアップが完了したらリスタートの許可メッセージが表示されるので、USBを抜き、リスタートしましょう。
usernameとpasswordを入力してログインをします。dappnode_connect
やdappnode_wifi
のコマンドを打つと、接続の情報を確認できます。wifiの名前とパスワードを覚えておきましょう。
Mini PCでの操作はこれで以上でした。
それでは早速、DAppNodeを実際に触ってみましょう!
2.0 DAppNodeセットアップ
別のPCでDAppNode Wifiを探しましょう。初期パスワードは先ほどのdappnode_wifi
に記載されています。接続後、http://my.dappnode/ にアクセスをし、adminユーザーのセットアップを行います。
重要
ログイン後、DAppNodeのダッシュボードからwifiのタブを開き、Wifiのパスワードを変更しましょう。重要なステップなので、必ず最初に行いましょう。
2.1 バリデータノードを構築する
Stakers > Praterのタブを開くと、Execution Client、Consensus Client、Web3 Signer、とMEVの一覧が表示されます。
Client Diversity (クライアント多様性)が重要なので、少数派のクライアントを選ぶことにしました。こちらのサイトで状況を確認しましょう。
Execution ClientにErigon,Consensus ClientにTeku, MEVにFlashbotsを選びました。
Consensus Clientを選択すると、Fee Recipient、Graffiti、とCheckpoint syncを入力できるフォームが表示されるのですが、自分はFee RecipientをMetamaskで作成したGoerli Networkのアドレスにしました。Graffiti、Checkpoint syncはデフォルトのままにしました。
Apply Changesのボタンを押し、更新されるまで待機します。
数分経ち、Dashboardを確認したら下記のようにクライアントが稼働していることを確認できました。
バグなのかわからないのですが、Erigonが常にSyncing状態のままでした。数日経ってもsyncing状態なので、今後調査してみます。
これで、バリデータノードの構築自体は完了しました。次に行ったことはステーキングのセットアップです。
2.2 ステーキングセットアップ
手順としては、下記の通りです:
- Testnet用の公式Staking Launchpadでセットアップの手順があるので、それに従ってセットアップ。自分はWagyu Key genを使いました。Ethereum Withdrawal AddressはFee recipientと同じアドレスにしました。
- Alchemyのアカウントを作成し、Goerli Faucetで0.2Goerli Ethを入手。
- DiscordでEthStakerチャンネルに入り、44h待つ
- #cheap-goerli-validator のChannelで
/cheap-goerli-validator
のコマンドを打ち、専用のサイトに遷移後、Depositを行うウォレットでサインをします。 - サインしたあと、#cheap-goerli-validatorのChannelで
/cheap-goerli-validator <先ほどのアドレス>
を打ち、ホワイトリストします。 - 専用のstaking launchpadのリンクが表示されるので、遷移し、deposit_dataのjsonファイルをアップロードし、最後のページでDepositをするためのトランズアクションをサインします。
-
Goerli Beaconcha.inでバリデータのアドレスを検索し、状況を確認する。数分待つと
Deposited
になっているはずです。Pending
状態になるまでは14h+以上かかるのでそれまでは待つしかないです。
2.3 Web3 Signerのセットアップ
次に、先程作成したkeystoreファイルをweb3 signerに登録しないといけないです。
DAppNodeのStakers > Praterを開き、Web3 Signerのカードを選択すると、Keystoreファイルをアップロードするためのリンクが表示されているはずです。そちらのページに遷移し、Keystoreファイルをアップロードします。
今回は2バリデータを構築したいので、2ファイルアップロードしました。
3.0 Grafana + Prometheusセットアップ
GrafanaとPrometheusを使い、DAppNode、ホスト、Consensus ClientなどのメトリックスをGrafanaのダッシュボードで確認できるようにします。(今後は異常検知のためにも活用する予定です)。
こちらの手順に従って、セットアップはできました。
4.0次回へ
こちらの記事を書いている現時点ではまだバリデータが有効になっていないです。
This validator has been processed by the beacon chain and is currently waiting to be activated. It is estimated to be activated on Mar 9, 2023, 6:47 AM during epoch 160948. Make sure your nodes and your client is up and running before the countdown reaches zero.
This validator is currently #9054 in Queue.
06 days 17 hr 20 min 07 sec
有効になるまでは何も検証できないので、一旦こちらの記事はこれで以上です。
今後のTODOは下記の通りです:
- モニタリングシステムのセットアップ (PagerDutyなど)
- バリデータノードの停止、再開の手順確認
- Execution/Consensus Clientの切り替え手順確認
- Shapella Upgrade後、withdrawの手順確認
- テストネットで全て検証を終えてからメインネット展開を行う。
もし今後の展開に興味ありましたら、是非次の記事もチェックしてくださいね!
Discussion