Eigenlayerは、ステーキング済みのETHを更にロック(リステーキング)することによって利回りを得ることが出来るプロトコルです。このマニュアルでは、バリデータのセットアップからEigenlayerでのリステーキングの設定を説明します。 ※マニュアル作成の都合上、メインネットではなく、Goerli(Prater)テストネット上での動作を行っていますが、仕様上変更はありません。
- BloxStakingでステーキングしてEigenlayerにリステーキング
BloxStakingは、Ethereumのバリデータを運用するサービスを展開しています。また、このバリデータはMEVを効率的に活用するクライアントとしてカスタムされており、比較的、他サービスに比べて年間の利率が高くなっています。
BloxStakingでは、ノンカストディかつバリデータの署名鍵(ブロックに対して署名する際の秘密鍵のこと)を自サービスで保管しません。 そのため、BloxStakingから他のサービスへの移行や、自分のノードへの移行がしやすくなっています。
このメリットは、自分の署名鍵の保有権はあくまで自分にある(という形)ということです。 このデメリットは、リモート署名に対応した署名鍵保管サービスを利用しなければならないことです。BloxStakingでは、AWSを使用してリモート署名を行うので、BloxStakingのアカウントだけではなく、AWSのアカウントも必要になります。
この際、リモート署名用のIAMユーザーを設定する必要があります。EC2のフルアクセス権を設定するため、必要であれば、新規にアカウントを取得してください。
Eigenlayerでは、バリデータの引き出し先及び手数料の送信先をEigenlayerのコントラクト=Eigenpod(このコントラクトは個人ごとに生成されます)に設定することで、バリデータの制御を行います。Eigenpodの作成手順を紹介します(Eigenlayer側はこの作業だけしかありません。簡単ですね)。
-
https://app.eigenlayer.xyz/details?asset=ETH にアクセスしてください。
-
"Connect to Wallet"ボタンをクリックし、自身のウォレットに接続してください。
-
"Create EigenPod"ボタンをクリックし、トランザクションに署名してください。
-
トランザクションが承認されると、以下の画面が表示されます。EigenPod Addressの右側のコピー(アイコン)ボタンをクリックし、アドレスをメモ帳等に転記してください(画面は閉じないでください)。
AWSでのアカウント開設には、メールアドレスとクレジットカードが必要です。
-
https://portal.aws.amazon.com/billing/signup にアクセスし、アカウント開設ウィンドウを開きましょう。メールアドレス・AWSアカウント名(どちらも任意)を入力し、"認証コードをEメールアドレスに送信"ボタンをクリックします。
-
メールアドレスに認証コードが届いたら、確認コード欄に入力し、"認証を完了して次へ"ボタンをクリックします。
-
以下スキップ・画面の指示に従ってください。
BloxStakingで署名用の鍵をアップロードするために、AWSに特定の権限を持つユーザーを設定します。
-
ログインしたら、コンソールという画面になっています。左上AWSのロゴの右側にある、"サービス"メニューをクリックします。
-
サービスメニューが開いたら、下にスクロールして、"セキュリティ、IDおよびコンプライアンス"をクリックします。すると、右側にサービス一覧が表示されるので、"IAM AWSリソースへのアクセスの管理"をクリックします。
-
IAMダッシュボードが開いたら、ページ中段の"IAM リソース"内、"ユーザー"欄の0をクリックします。※赤四角箇所
-
ユーザー一覧が開いたら、"ユーザーを追加"ボタンをクリックします。
-
ユーザーの詳細が開いたら、ユーザー名として、任意の名前を入力し、"次へ"ボタンをクリックします。
-
許可を設定が開いたら、許可のオプションとして"ポリシーを直接アタッチする"を選び、下へスクロールします。
-
許可ポリシーの欄が広がっているので、検索バーに"EC2Full"と入力して、出てきたポリシー("AmazonEC2FullAccess")にチェックを入れます。
-
チェックを入れたら、下にスクロールして"次へ"ボタンをクリックします。
-
確認して作成が開いたら、ユーザ名(ステップ5で設定)と許可の概要(ステップ7で設定)が間違っていないか確認し、"ユーザーの作成"ボタンをクリックします。
-
ユーザー一覧画面で、自身が設定したユーザー名(ここではblox-staking-goerli-test01 )をクリックします。
-
ユーザーの詳細を表示する画面が開いたら、"セキュリティ認証情報"をクリックします。※赤四角箇所
-
コンソールサインイン、多要素認証の設定画面が表示されたら、下へスクロールして"アクセスキーを作成"ボタンをクリックします。※赤四角箇所
-
アクセスキーを作成画面が表示されたら、ユースケースとして、"AWSの外部で実行されるアプリケーション"を選択します。
-
説明タグを設定-オプション画面が表示されたら、自分がわかりやすいよう、適当に説明タグ値に入力します(ここでは、"blox-staking-goerli")。その後、"アクセスキーを作成"ボタンをクリックします。
-
アクセスキーを取得画面が表示され、アクセスキー及びシークレットアクセスキーが表示されます。※シークレットアクセスキーは"表示"をクリックすると表示されます。
-
アクセスキー、シークレットアクセスキーをコピーして、メモ帳等に転記してください(BloxStakingの設定で貼り付けます)(画面は閉じないでください)。
- BloxStaking: https://www.bloxstaking.com/download/
- WagyuKeyGenerator: https://wagyu.gg/ よりそれぞれ自身の使用するOSに合わせた種類のソフトウェアをインストールしてください。 BloxStakingは、Ethereumチェーン上でのステーキングのためのバリデータセットアップ、運用のためのソフトウェアです。 WagyuKeyGeneratorは、バリデータを設定する上で必要となるアカウントのキーを生成するためのソフトウェアです。
インストールした、BloxStakingのソフトウェアを起動してください。すると、以下の画面のように、Google/Github/Microsoftアカウントでのアカウント開設を要求されますので、好きな方法でアカウントを開設してください。
BloxStakingでは、リモート署名を使用するため、KeyVault(署名鍵をAWS上にアップロードする機能)を利用する必要があります。
-
Start Your Staking Journeyという表示とともに、"KeyVault Setup"ボタンが表示されたら、クリックしてください。
-
Select your Cloud Providerという画面が表示されたら、awsのロゴがついている、"Amazon Web Server"ボタンをクリックします。
-
Create your Staking KeyVaultという画面が表示されたら、アクセスキー、シークレットアクセスキーの設定 のステップ7で転記した、アクセスー、シークレットアクセスキーをそれぞれ、"Access Key ID", "Secret Access Key"に転記してください。
-
転記が完了したら、"Continue"ボタンをクリックします。
-
"Continue"ボタンの真下に、青いバーが表示されるので、100%になり、次の画面に変わるまで待ってください。※体感5分~10分くらい
-
完了後、"KeyVault created successfully!"と画像のように表示されるので、"Set Account Password"ボタンをクリックしてください。
-
Account Passwordという画面が表示されたら、自身の好きなパスワードを入力、"Confirm"ボタンをクリックしてください(パスワードが漏洩しても資産が消失することはありませんが、バリデータの動作を停止されることはあり得ます)。
-
Seed Phrase or Keystore Fileという画面が表示されたら、"Keystore File"ボタンをクリックしてください。
-
Select your Staking networkという画面が表示されたら、"Stake on Mainnet"ボタンをクリックしてください(Goerliテストネットで試す場合は、"Test on Prater"ボタンをクリックしてください)。
Ethereumのバリデータを作成するには、バリデータ用の秘密鍵、署名鍵及びデポジット用のデータを生成する必要があります。WagyuKeyGenerator以外にも、Ethdoなど様々なアプリケーションがあります。
-
インストールした、WagyuKeyGenのソフトウェアを起動してください。
-
Welcome!という表示とともに、画像のような画面が表示されます。"CREATE NEW SECRET RECOVERY PHRASE" をクリックしてください。※もしGoerliテストネットで試したい場合は、右上の"Select Network: MAINNET"をクリックし、"Goerli"を選択して"Ok"ボタンをクリックしてください。
-
Create Secret Recovery Phrase という画面が表示されたら、"CREATE"ボタンをクリックしてください。※この画面では、リカバリーフレーズも重要だし、この作業で生成するバリデータキーも非常に重要だから、大事に扱ってねということ及び、オフラインでやることを推奨と記載しています。リカバリーフレーズが流出した場合、勝手にバリデータを止められたり、意図的に不正な検証を行うことで、スラッシングを誘発することがあるだけでなく、ステーキングした32ETHを奪われることもあります(今回のガイドの方法で設定したバリデータについては、奪われることは基本的にありません)。
-
24個の英単語が表示されます。右のコピーボタン(アイコン)をクリックし、安全な場所に保存してください。保存したら、"NEXT"ボタンをクリックしてください。
-
保存していることを再確認したら、"IM SURE"ボタンをクリックしてください。
-
先ほどコピーした24個の英単語をペーストし、"CHECK"ボタンをクリックしてください。
-
Create Keysという画面が表示されたら、"Number of New Keys"に何個バリデータを作成したいか数字で入力し、"Password"に任意のパスワード(バリデータキーの暗号化パスワードになります。忘れるとバリデータを設定できなくなります)を、"Ethereum Withdrawal Address(Optional)"にEigenlayerでの設定 ステップ4で転記したEigenPodのアドレスを入力してください。その後、"NEXT"ボタンをクリックしてください。
-
パスワードの再入力画面が表示されたら、"Retype Password"に先ほど入力したパスワードを入力して、"NEXT"ボタンをクリックしてください。
-
ファイルの保存先設定画面が表示されます。"BROWSE"ボタンをクリックして、ファイルをどこに保存するか選んでください。※作業完了時には、安全な場所に移してください。
今生成した、keystore-xxx.json/deposit_data-xxx.jsonを用いて、BloxStakingにバリデータの情報を追加し、32ETHのデポジットを行います。
-
BloxStakingでの初期設定 ステップ10で表示されている、Upload Keystore Fileの画面に戻ります。"Drag & Drop"ボタンをクリックし、keystore-xxx.jsonを選択してください(ドラッグアンドドロップでもOK)。
-
正しく選択した場合、"Uploaded Files"に選択したkeystore-xxx.jsonのファイル名が表示されます。"Keystore Password"に、WagyuKeyGeneratorでのバリデータのアカウント設定 ステップ7で入力したパスワードを入力してください。その後、"Next"ボタンをクリックしてください。
-
Validators Summaryという画面が表示されたら、"I agree to Blox's Privacy Policy and License and Service Agreement"及び"I confirm that I haven't deposited any of my validators above"にチェックを入れてください。ここでは、中断にバリデータのアドレスが表示されています。※プライバシーポリシーとサービス合意は一度確認してください。
-
チェック後、灰色から青色に変わった"Run Validator with BloxStaking"ボタンをクリックしてください。
-
Fee Recipient Addressという画面が表示されたら、中央の表(ステップ3でのバリデータアドレスが表示されている部分の右)のFee Recipient Addressに、Eigenlayerでの設定 ステップ4で転記したEigenPodのアドレスを入力してください。
-
"I confirm that I have access to the addresses above"にチェックを入れ、"Next"ボタンをクリックしてください。
-
Mainnet Staking Depositという画面が表示されたら、"Continue to Web Deposit"ボタンをクリックしてください。この画面では、メインネットのバリデータは現在手数料無料で実施するが、将来的には0.5ETH/年の費用が発生することが説明されています。※手数料高いなぁと思ったら、keystore-xxx.jsonを他のバリデータに提供することにより将来的に移管することもできます(業者に依存します)。
-
Moving to the Browserという画面が表示されたら、"Continue to Staking Deposit"ボタンをクリックしてください。
-
ブラウザが開き、Upload Deposit Fileという画面が表示されたら、"Drag & Drop"ボタンをクリックし、WagyuKeyGeneratorでのバリデータのアカウント設定 ステップ11で生成した、deposit_data-xxx.jsonを選択してください(ドラッグアンドドロップでもOK)。
-
正しく選択できていれば、画像のように"Uploaded File"欄に選択したdeposit_data-xxx.jsonのファイル名が表示されます。"Next"ボタンをクリックしてください。
Eigenlayerのアップデートにより、手数料振り込み先のアドレスを自身のアドレス(EigenPodではなく、自分の管理するアドレス)に変更する必要があります。以下にその手順を示します。
- BloxStakingを起動し、ログインしましょう。
- 以下のウィンドウ(メインネットではなくテストネットなため、残高の表示等は異なりますが気にしないでください)が開いたら、赤四角で囲っている、Fee Recipient Addressの右にある鉛筆マークをクリックしてください。
- BloxStakingのパスワードを入力しましょう。
- 手数料の振込先アドレス変更ウィンドウが表示されます。
- Fee Recipient Address の欄に、自分のウォレット(EigenPodのアドレスではない)を入力し、I confirm that I have access to the addresses above にチェックを入れ、Nextボタンをクリックしましょう。 ** 複数バリデータがある場合には、全てにアドレスをそれぞれ入力しましょう**
- 2のウィンドウで、アドレスが変わっていることを確認しましょう。
BloxStakingのサービスが終了するため、サーバーの移動が必要となっています。ここでは、引越しの作業について紹介します。
BloxStakingから移動する前に、どのサービスにするか選択しましょう。BloxStakingでは、keystore.jsonをアップロードして、それを利用する形式だったので、同じような形式に対応しているバリデータサービスを検索してみました(他にもあるかもしれませんので、これ以外はぜひ検索してみてください)。検索ワードは、"Self custody ethereum validator service" です。おそらくEthereumの公式サイト:https://ethereum.org/en/staking/saas/ にも記載があります(Sensei Nodeは記載が間違っている気がしますが)
- stake.fish: https://stake.fish/dashboard
- ethpool: https://ethpool.org
- allnodes: https://www.allnodes.com/eth/host
このガイドでは、allnodesに移行する場合を考えてみます。バリデータの移行では、二重署名(同時に同じkeystoreに対応するバリデータを起動すること)を避けるよう注意してください。バリデータを一時的にオフラインにしますが、報酬額が大きく変動するわけではないのでご安心ください。 バリデータを停止だけさせたい場合は、次のセクションをご確認ください。
-
AWSにログインしましょう。(リンク)
-
EC2をクリックしましょう。
-
インスタンス(実行中)をクリックしましょう。画像のように、ボタンの右側に1と書いてあることも確認しましょう。もし1と書かれていない場合、右上のリージョン選択ボタンをクリックし、米国西部(北カリフォルニア) us-west-1を選択して下さい。bloxstakingのサーバーは、そこに設置されることが多いです。
-
blox-stakingという名前のサーバーが表示されます。このサーバーが、バリデータの鍵データを保有しています。
-
右上の「インスタンスの状態」ボタンをクリックし、「インスタンスを終了」を選択しましょう。これで、バリデータが停止します。
-
BloxStakingのバリデータを停止できたので、別のバリデータサービスのサイトを開きましょう。ここでは、Allnodesのサイトを開きましょう。
-
アカウントを作成しましょう。必要事項を入力ください。
-
ログインできたら、「ステーク」ボタンをクリックしましょう。
-
次に、Ethereumの右にある「→」ボタンをクリックしましょう。
-
「ノードをホストする」をクリックしましょう。
-
「Host Validator Node」をクリックし、直下のネットワーク選択ボタンがMainnetになっていることを確認しましょう。
-
次に、ウォレットの接続を求められますが、「手動」ボタンをクリックし、入力欄に、Mainnetでバリデータを起動させる際、32ETHをデポジットするときに使ったアドレスを入力し、「見つける」をクリックしましょう。
-
アドレスが合っていれば、「ETHをスマートコントラクトに正しくデポジットし、必要なJSONファイルを生成しました。これらのファイルは安全に保管ください。これで、ノードをホストする準備が整いました。」と表示されますので、「次のステップ」をクリックしましょう。
-
この画面で、幾つのバリデータをAllnodesで実行するか選ぶ必要があります。BloxStakingから移したい数を選んでください(このマニュアルでは、1を選択します)。
-
選び終わったら、「続行する」ボタンをクリックしましょう。
-
次に、バリデータのサーバーを選択します。2種類ありますが、アドバンスの方がおすすめです(MEV Boostがあるためですが、ベーシックにもある気がします)。選択して、「次のステップ」ボタンをクリックしましょう。
-
重大な警告にチェックを入れ、「次へ」をクリックしましょう。
-
keystoreのアップロード画面に変わるので、BloxStakingから移したいkeystore.jsonを(複数)選択しましょう。なお、下側にパスワードを入力する欄があります。パスワード欄は一つしか出ないため、もしkeystoreごとに異なるパスワードの場合、その度だけ同じ手続きを行ってください。
-
入力を終わらせたら、ボタンをクリックしましょう。
-
少し待つと、自動的にバリデータの一覧が表示されます(画像はHoleskyの例です)。移行お疲れ様でした!
このタイミングで、移行せずに終了させたい人もいるのではないでしょうか。引き出しの手続きを説明します。 まず、必要なツールで、ethdoというものがありますので、ダウンロードしてください(接続すると、ダウンロード可能なクライアントの一覧が表示されるので、利用するOSに合ったクライアントを選びましょう):https://github.com/wealdtech/ethdo/releases
- ethdoを解凍する(.zip等になっているため)
- QuickNodeでEthereumのエンドポイントを生成する(バリデータの情報を取得するため)
- QuickNodeにアクセスする:https://www.quicknode.com
- QuickNodeに登録する
- QuickNodeにログインし、Ethereumのエンドポイントを生成する(左のツールバーより、Create > Create Endpoint > Ethereumと選んでください。)
- メインネットを選び、オプションはつけなくてOK
- 生成したら、HTTP Providerのリンクをコピーする
- コマンドプロンプトで次のコマンドを入力する。これにより、Beacon Chainのバリデータ情報を取得する(ethdoのあるフォルダに、offline-preparation.json というファイルが作られる)
./ethdo validator exit --prepare-offline --timeout 2m --allow-insecure-connections --connection $QuikNodeのEthereumエンドポイント(例:https://xxx-xxx-xxx.ethereum.quiknode.pro/xxxx)
- バリデータを作成したときに生成した、シードフレーズをコピーする
- beaconcha.in で自分のバリデータのインデックス(https://beaconcha.in/validator/128757 では、128757)をコピーする
- コマンドプロンプトで次のコマンドを実行する
./ethdo validator exit --mnemonic="4でコピーしたシードフレーズ" --validator=5でコピーした番号
- 実行後、うまくいけばethdoと同じフォルダに、exit-operation.json というファイルが生成されています。 画像を添付
- beaconcha.in のツールにて、exit-operation.jsonの中身を貼り付けましょう。
- あとは引き出しが完了するまで、そのまま待ちましょう!引き出しが完了するまで(Eigenpodに32ethが移るまで)は、次の作業には移らないでください。
- バリデータの移行の1-6を実施してください。
- Eigenpodから32ETHを引き出すには、Eigenlayerのdappから、Eigenpodを開いてください。
- Eigenpodの残高に32ETHがあることが確認できれば、Unstakeをクリックし、メタマスク等からトランザクションを送信しましょう。
- また7日後に戻ってくると、Available Withdrawに32ETHが追加されるので、Withdrawボタンをクリックすれば、引き出しは完了です。
メインネットでは、バリデータへデポジットしても稼働開始まで45日程度の待ち時間が発生します。忘れてしまうと思うので、状況を確認する手段を記載します。
-
BloxStakingで、Validatorの一覧画面を開きましょう。表のPublic Key(ここでは0xa...8)をクリックしてください。
-
以下画像のようにbeaconcha.in(バリデータのエクスプローラー)が表示され、どれくらいの待ち時間でバリデータが開始するか表示されます。メインネットでは現状45日くらいかかります。テストネットでは1日くらい。
-
無事、バリデータが稼働した場合、次のような表示になります。
-
バリデータが稼働している場合、Eigenlayerからも確認することが出来ます。
以上、定期的にバリデータの様子を見たり、beaconcha.inで自分のバリデータに通知を設定するなど、モニタリングをしっかり実施することがノード運用の大事なところなので、稼働率の管理にお気を付けください。