Amazon Web Services ブログ
AWS CDKを使用したAmazon EC2上でのEthereumノードバリデーターの自動展開
この記事は、Automate Ethereum node validator deployment on Amazon EC2 using AWS CDKを翻訳したものです。
イーサリアムは、スマートコントラクト機能を持つ分散型のオープンソースブロックチェーンです。 Beacon chain(ETH2)は、イーサリアムのアップグレード版で、イーサリアムのエコシステムにプルーフ・オブ・ステークの概念を導入したものです。ETH2でのステークは、Ethereumネットワークのセキュリティとスケーラビリティを向上させるために、認証や新しいブロック作成の提案などのアクションを実行するバリデーターによって行われます。バリデーターは、ステーキングを行うことで報酬を得ることができます。 AWSは現在、Amazon Managed Blockchain (AMB)を提供しています。これは、一般的なオープンソースフレームワークを使用して、スケーラブルなブロックチェーンネットワークを簡単に作成・管理できるフルマネージドサービスです。現在、私たちはHyperledger Fabric としてプライベート許可型ネットワークを、またパブリックのmainnetと2つの人気テストネットであるRinkebyとRopsten(*)に接続するイーサリアムフルノードをサポートしています。Amazon Managed Blockchainは、現時点ではEthereum Beaconチェーンをサポートしていません。 Rocket Poolは、Beaconチェーンをサポートする分散型ステーキングプールの1つです。ステーキングで報酬を得たいバリデーターは、Rocket Poolを使用して自分の検証ノードを作成することができます。これらの検証ノードは、Graviton2プロセッサを搭載したAmazon Elastic Compute Cloud (Amazon EC2) 上で実行することができます。この記事では、Amazon Elastic Compute Cloud上での Rocket Pool のデプロイを簡素化する AWS Cloud Development Kit(AWS CDK) アプリについて紹介します。
(*) 2022/11/1時点でGoerilのテストネットもサポートされています。
ソリューションの概要
CDKは、オープンソースのソフトウェア開発フレームワークで、使い慣れたプログラミング言語を使ってクラウドアプリケーションリソースを定義することができます。 私たちのCDKアプリは、8つのvCPUと16GBのメモリを含むc6g.2xlargeインスタンスを使用して、Rocket Pool検証ノードを作成します。c6gインスタンスはGraviton2プロセッサを搭載しており、Ethereum検証のようなブロックチェーンワークロードに理想的です。また、高性能なブロックストレージとして2TBのAmazon Elastic Block Store(EBS)デバイスを、安全なアクセスとしてAWS Systems Manager Session Managerを構成しています。 次の図は、AWS CDKを使用してアプリを初期化、合成、デプロイするプロセスを示しています。
このデプロイメントでは、ETH1とETH2の両方のブロックチェーンネットワークの検証を実行します。デフォルトでは、このノードはETH1検証用にGethクライアント、ETH2検証用にLighthouseクライアントを使用するように設定されています。デプロイ後にRocket Pool CLIを使用してこれらのクライアント設定を変更することができます。 ローカルのデスクトップでAWS CDKを使用することができます。手順のドキュメントを参照してAWS CDKを使い始めることができます。
依存関係とRocket Pool AWS CDKアプリケーションをダウンロードしインストール
以下のコードを使用して、AWS CDKと前提アプリをダウンロードおよびインストールします。
Rocket Poolは16GBまたは32GBのメモリを搭載したノードをデプロイすることを推奨しています。この記事では、16GBのインスタンスでデプロイしています。ただし、メモリを増やしたい場合は lib/cdk-rocketpool-validator-stack.ts ファイルを修正します。例えば、以下のデプロイコードで、ec2.InstanceSize.XLARGE2 を ec2.InstanceSize.XLARGE3 または XLARGE4 に変更します。
デプロイメントが完了すると、次のような出力が得られます。
この時点で、AWS CDK Outputsからsshコマンドを実行し、インスタンスにログインしてください。
以下は出力例です。
インストールの完了
接続が完了したら、以下のコマンドを実行して残りのインストールを完了させることができます。
(オプション) ETH1/ ETH2 のクライアントを変更したい場合は、以下のコマンドを実行します。ETH1のデフォルトクライアントはGeth、ETH2のデフォルトクライアントはLighthouseです。
詳細については、Configuring the Smartnode Stackを参照してください。前述のスタックはPraterテストネットワークで実装されています。メインネットに切り替えたい場合は、Pool Staking on Mainnetを参照してください。 Rocket pool には Grafana のサポートが付属しており、ETH2 クライアントごとにあらかじめダッシュボードが構築されています。ブラウザで http://<your node IP>:<grafana port> に移動して、Grafana にログインすることができます。Grafana ポートは、デフォルトで 3100 に設定されています。デフォルトのログイン認証情報やダッシュボードのインポート方法などの追加情報は、Rocket Pool のドキュメントの Setting up Grafana セクションに記載されている場合があります。以下は、Prysm ETH2 クライアントのメトリクスを表示するダッシュボードのサンプル画像です。
クリーンアップ
この記事で作成したリソースを次のコードでクリーンアップします。
まとめ
Rocket Poolは、Ethereumノードバリデーターがプルーフ・オブ・ステーキングによって報酬を得ることを可能にします。この投稿では、AWS CDKを使用して最小限のセットアップ時間でAWSクラウドのRocket PoolにETH2バリデーターをデプロイする方法を示しました。また、Session Managerを使用してノードに安全にアクセスする方法も紹介しました。ETHバリデータをメインネットにデプロイする前に、テストネットで試してみることをお勧めします。 フィードバックや追加の質問がある場合は、コメントを残すことをお勧めします。
本稿はソリューションアーキテクト畑が翻訳を担当しました。