🏦

eth-dockerを利用してstakingの報酬を引き出そう

2023/04/15に公開

この記事はeth-dockerを利用してステーキングを行なっている人向けに書かれています。

  • ソロステーキング自体について知りたい方は、過去の記事を参照してください。
  • 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

スクリプトは以下の手順で進みます。

  1. Ethereum withdrawal address(出金用アドレス)の入力
    • 絶対に間違えないでください
    • ValidatorのETHはこのアドレスで受け取ることができます。
  2. Ethereum withdrawal addressの確認入力
  3. Validator mnemonicの入力
    • バリデータ用の鍵を作成するときにメモしたニーモニックを使います
    • 今後も絶対忘れないようにしてください
  4. Validator mnemonicの確認入力
  5. (オプション)ニーモニック作成時にパスフレーズ(25番目の単語)を設定したか?
    • 通常は利用していないのでNo
  6. (オプション)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を利用することで、資格情報変更ファイルの内容を簡単にブロードキャストすることが可能です。

  1. Submit your signed messageのページを開き、change-operations.jsonをアップロードします。
  2. change-operations.jsonの内容を確認して、「Submit & Broadcast」をクリックします。
  3. アップロードが正常に終了すると、Withdrawal Credentials Change Request Job の画面が表示されます。StatusがPENDINGからCOMPLETEDになったらブロードキャスト完了です。
  4. 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