eth-dockerを利用してstakingの報酬を引き出そう
この記事はeth-dockerを利用してステーキングを行なっている人向けに書かれています。
Shanghai/Capellaのアップデート完了🎉
Shanghai/Capellaのアップデートが4月12日(日本時間では4月13日)に完了しました。
ステークされていたETHの出金がとうとう可能になります!
出金資格情報の変更
eth-dockerのドキュメントページであるChanging Withdrawal Credentials
の手順に沿って説明します。
まずは現在の出金資格情報を確認
Ethereum公式ページのCurrent stakersまたは、Staking LaunchpadのStaking withdrawalsで現在の状態を確認することができます。
設定されてない場合は画面の表示結果が赤色に、設定されている場合は画面の表示結果が緑色になります。
eth-dockerの準備
eth-dockerの環境を最新版にアップデートしてください。筆者はVersion 2.2.9.4を使用しました。
cd eth-docker
# 現在のvalidator public keysを確認
./ethd keys list
# eth-dockerによるアドレス設定準備(内部的にはethdoを利用)
./ethd keys prepare-address-change.
ethdoの設定されていない場合は、ethdoの設定を追加する選択肢が表示されます。
# Please edit the .env file and make sure ":ethdo.yml" is added to the "COMPOSE_FILE" line
# For example, "nano .env" will open the nano text editor with the ".env" file loaded.
# Without it, this step cannot be run
# Do you want me to make this change for you? (n/y)
表示をよく読んで、納得できたらy
を選択します。以上でethdo準備が完了します。
Linux Live USBの作成
Make Linux Live USBを参照して、Linux Live USBを作成します。
eth-docker/.eth/ethdo
のフォルダをLive USBにコピーしてオフライン環境で作業を続けます。フォルダ内には以下のファイルが含まれています
- README.md
- ethdo
- ethdo-arm64
- offline-preparation.json
- create-withdrawal-change.sh
どうしてもLive USBを作成したくない人向け(非推奨)
ファイルの移動が困難な場合や、eth-docker自体の動作検証を行う場合であれば、以下の方法で擬似的にオフライン環境を作成することができます。
# Ubuntuのコンテナイメージを利用して擬似的なオフライン環境を作成
# コンテナ内のシェルに接続して、オフライン環境での作業を実行
docker run --network none -v "$(pwd)"/.eth/ethdo:/app -it ubuntu /bin/bash
dockerのボリューム機能を使うことで、コンテナ内の/app
フォルダに、ホストのeth-docker/.eth/ethdo
をマウントすることができます。
コンテナ内のシェルで、/app
フォルダに移動して準備完了です。
# コンテナのシェルで以下のコマンドを実行
cd /app
資格情報変更ファイルの作成
Linux Live USBを起動し、eth-docker/.eth/ethdo
をコピーしたフォルダに移動して、オフライン環境下で作業を続けます。
# ethdoフォルダからコピーしたファイルがあるか確認
ls -la
# README.md、ethdo、offline-preparation.json
# create-withdrawal-change.sh、ethdo-arm64
資格情報変更ファイルを作成するコマンドを実行します。
./create-withdrawal-change.sh
スクリプトは以下の手順で進みます。
- Ethereum withdrawal address(出金用アドレス)の入力
- 絶対に間違えないでください
- ValidatorのETHはこのアドレスで受け取ることができます。
- Ethereum withdrawal addressの確認入力
- Validator mnemonicの入力
- バリデータ用の鍵を作成するときにメモしたニーモニックを使います
- 今後も絶対忘れないようにしてください
- Validator mnemonicの確認入力
- (オプション)ニーモニック作成時にパスフレーズ(25番目の単語)を設定したか?
- 通常は利用していないのでNo
- (オプション)StakeFish/Staked.usなどのサードパーティーを利用しているか?
- チェーンの操作に使うバリデータ鍵のインデックスを指定したいかの質問
- 通常は利用していないのでNo
全ての入力が終わると、change-operations.json
が作業フォルダに生成されます。
to_execution_address
に正しい出金用アドレスが設定されていることを確認してください。
cat change-operations.json
出金資格情報のブロードキャスト
change-operations.json
を利用し、資格情報変更ファイルの内容をチェーンに反映します。
beacocha.in エクスプローラの利用する場合(オススメ)
beacocha.in が提供しているSubmit your signed messageを利用することで、資格情報変更ファイルの内容を簡単にブロードキャストすることが可能です。
-
Submit your signed messageのページを開き、
change-operations.json
をアップロードします。 -
change-operations.json
の内容を確認して、「Submit & Broadcast」をクリックします。 - アップロードが正常に終了すると、Withdrawal Credentials Change Request Job の画面が表示されます。Statusが
PENDING
からCOMPLETED
になったらブロードキャスト完了です。 - Broadcastが完了したら、Staking LaunchpadのStaking withdrawals等のページで、資格情報変更ファイルの内容がチェーンに正しく反映されたか確認してください。
eth-dockerのCLクライアントを利用する場合
eth-dockerのethdo
フォルダ内に、change-operations.json
をコピーします。
# 資格情報変更ファイルをethdoの作業フォルダにコピー
cp change-operations.json eth-docker/.eth/ethdo
eth-dockerのCLクライアントを利用して、資格情報変更ファイルの内容をチェーンにブロードキャストします。
# 資格情報変更ファイルの内容をチェーンにブロードキャスト
./ethd keys send-address-change
しばらく待てば、資格情報変更ファイルの内容がチェーンに反映されます。
Staking LaunchpadのStaking withdrawals等のページで、資格情報変更ファイルの内容がチェーンに正しく反映されたか確認してください。
出金先アドレスが完了後の動作
ステーキングの報酬が4~5日ごとに出金用アドレスに振り込まれます。
Metrikaを利用することで、出金用アドレスにいつ出金が行われたのか確認することができます。(GoerliのようなTestnet用でも利用できるか不明)
バリデータの退出
eth-dockerのドキュメントページであるVoluntary exitの手順に沿って説明します。
eth-dockerでTekuを動かしている場合は、以下のコマンドを入力するだけです。
./ethd cmd run --rm validator-exit
入力したあと、以下の情報が表示されます。
- 終了予定のバリデータ公開鍵のダイジェスト一覧
- 現在のepoch
- 確認メッセージ
どんな情報が出るかは、各CLクライアントの実装に依存します。Tekuの場合はさらに確認メッセージが表示されます。
# These validators won't be able to be re-activated once this operation is complete.
# Are you sure you wish to continue (yes/no)?
内容を読んで、本当にバリデータの退出をしても大丈夫な場合はyes
を入力してください。バリデータの退出リクエストは以上で完了です。
退出リクエストが完了した後、今度は出金の許可のために約27時間待機します。その後出金の順番が来たら、ステーキング用にデポジットしたETHが出金用アドレスに全て振り込まれます。
以上で、バリデータの退出処理は完了です。手順は簡単ですが処理に時間がかかるため、バリデータの退出は1週間程度の余裕をみて準備を行うことをオススメします。
謝辞
この記事の執筆にあたり、日本語の文献として以下のページを参考にしました。
Discussion