コンテンツへスキップ

ソロステーキング:本番環境とテスト環境の作業相違点

ぶっつけ本番でバリデーター運用をするのはオススメしません。まずはテスト環境で一通りの流れを試して不明点を無くしてください。そして2週間ほどサーバーを起動させておき、ハードウェア構成やインターネット環境に異常がないことを確認してください。

本番環境とテスト環境の作業相違点は以下の通りです。Goerliテストネットは2023年でサービス終了するため、Holeskyテストネットを活用することをお勧めします。

  • 手順4「イーサリアムの実行クライアントの同期」
    • GethまたはNethermindのネットワークをmainnetではなくgoerliまたはholeskyに指定する。
[Unit]
Description=Go Ethereum
After=network.target
Wants=network.target

[Service]
User=goeth
Group=goeth
Type=simple
Restart=always
RestartSec=5
ExecStart=/usr/local/bin/geth \
  --datadir /var/lib/goethereum \
  --holesky \
  --authrpc.jwtsecret /var/lib/jwtsecret/jwt.hex

[Install]
WantedBy=default.target
[Unit]
Description=Nethermind
After=network.target
Wants=network.target

[Service]
User=nethermind
Group=nethermind
Type=simple
Restart=always
RestartSec=5
WorkingDirectory=/var/lib/nethermind
Environment="DOTNET_BUNDLE_EXTRACT_BASE_DIR=/var/lib/nethermind"
ExecStart=/usr/local/bin/nethermind/nethermind \
  --config holesky \
  --datadir /var/lib/nethermind \
  --Sync.SnapSync true \
  --Sync.AncientBodiesBarrier 11052984 \
  --Sync.AncientReceiptsBarrier 11052984 \
  --JsonRpc.JwtSecretFile /var/lib/jwtsecret/jwt.hex

[Install]
WantedBy=default.target
  • 手順5「イーサリアムのコンセンサスクライアントの同期」
    • ネットワークをmainnetではなくgoerliまたはholeskyに指定する。
    • Checkpoint-sync-urlもgoerliまたはholeskyのURLに変更する。
[Unit]
Description=Lighthouse Beacon Node
Wants=network-online.target
After=network-online.target

[Service]
User=lighthousebeacon
Group=lighthousebeacon
Type=simple
Restart=always
RestartSec=5
ExecStart=/usr/local/bin/lighthouse bn \
  --network holesky \
  --datadir /var/lib/lighthouse \
  --http \
  --execution-endpoint http://localhost:8551 \
  --checkpoint-sync-url https://holesky.beaconstate.info \
  --execution-jwt /var/lib/jwtsecret/jwt.hex \
  --builder http://localhost:18550

[Install]
WantedBy=multi-user.target
  • 手順6「ETHのデポジットとウォレット作成」
    • 鍵生成するときのコマンドはmainnetではなくgoerliまたはholeskyを指定する。例:./deposit.sh new-mnemonic --chain holesky
    • デポジットするサイトのURLはgoerli.launchpad.ethereum.orgまたはholesky.launchpad.ethereum.orgです。また、絶対に本番のETHを使用せずに、テスト環境のETH(無料)を使用してください。
    • ウォレット作成時のコマンドはmainnetではなくgoerliまたはholeskyを指定する。
lighthouse account validator import --network holesky --directory $HOME/eth2.0-deposit-cli/validator_keys --datadir /var/lib/lighthouse
  • 手順7「バリデーターの設定」
    • ネットワークをmainnetではなくgoerliまたはholeskyに指定する。
[Unit]
Description=Lighthouse Validator
Wants=network-online.target
After=network-online.target

[Service]
User=lighthousevalidator
Group=lighthousevalidator
Type=simple
Restart=always
RestartSec=5
ExecStart=/usr/local/bin/lighthouse vc \
  --network holesky \
  --datadir /var/lib/lighthouse \
  --suggested-fee-recipient 0x000...000 \
  --builder-proposals

[Install]
WantedBy=multi-user.target
  • 手順8「バリデーター確認用アプリのインストール」
    • 設定でNetworkを切り替えれます。Goerliに繋がっているビーコンチェーンの名称はPraterです。1つのアプリでMainnetとテスト環境の両方の通知を受け取ることができます。
  • 手順10「(任意) MEV relayの設定」
    • 正直、テスト環境ではMEVを試す必要はないと思います。試す場合はserviceファイルのExecStartオプションの-mainnet-goerliにする。MEV-boostはholeskyテストネットにまだ対応していないみたいです(2023年11月7日現在)。
    • Relayのアドレスもテスト環境用のものにしてください。各Relayのドキュメントに記載されてます。例:Flashhbots
[Unit]
Description=MEV-boost
Wants=network-online.target
After=network-online.target

[Service]
User=mev
Type=simple
Restart=always
RestartSec=5
ExecStart=/usr/local/bin/mev-boost \
  -goerli \
  -relay-check \
  -relays https://0xb1559beef7b5ba3127485bbbb090362d9f497ba64e177ee2c8e7db74746306efad687f2cf8574e38d70067d40ef136dc@relay-stag.ultrasound.money \
  -min-bid 0.05

[Install]
WantedBy=multi-user.target

テスト環境(特にGoerli)では「Attestation Missed」という通知が頻繁に来ますが心配しないでください。ブロック生成をするバリデーターのせいで自分ではどうしようもないことが多いです。Attestation Effectivenessが80%以上であれば正常です。本番環境では98%以上が正常です。