自分のイーサリアムノードの立ち上げ
最終更新: 2026年2月26日
自分自身のノードを立ち上げ、運用することは、さまざまなメリットがあります。新しい可能性が開かれ、エコシステムのサポートへの貢献にもつながります。 このページは、自分のノードを立ち上げ、イーサリアムのトランザクション検証に参加する方法について説明します。
注:The Merge以降、イーサリアムノードを実行するには、**実行レイヤー (EL)クライアントとコンセンサスレイヤー (CL)**クライアントの2つのクライアントが必要です。 このページでは、この2つのクライアントをインストール、設定、接続してイーサリアムノードを立ち上げる方法を紹介します。
前提条件
イーサリアムノードが何か、なぜクライアントを実行するのかに関する理解が必要です。 これについては、ノードとクライアントで説明しています。
ノードの実行が初めての方や、技術的な詳細を省いた手順をお探しの方は、まずイーサリアムノードの実行に関するユーザーフレンドリーな入門ガイドをお読みになることをお勧めします。
アプローチの選択
ノードを立ち上げる最初のステップは、アプローチを選ぶことです。 要件やさまざまな可能性に基づき、クライアントの実装(実行クライアントとコンセンサスクライアント両方)、環境(ハードウェア、システム)、クライアント設定のパラメータを選択する必要があります。
本ページではこれらについて説明し、あなたにとって最適なイーサリアムインスタンスの実行方法を見つけるサポートをします。
クライアント実装を選択するには、利用可能なすべてのメインネット対応の実行クライアント、コンセンサスクライアントを確認し、クライアントの多様性について学んでください。
クライアントの要件を考慮し、ソフトウェアを自身のハードウェアで実行するか、クラウドで実行するかを決定します。
環境を準備した後、初心者向けのインターフェースを使用するか、高度なオプションを備えたターミナルを使用して手動で、選択したクライアントをインストールします。
ノードが実行・同期されると、使用できるようになりますが、そのメンテナンスにも注意を払うようにしてください。
環境とハードウェア
ローカルかクラウドか
イーサリアムクライアントは、コンシューマーグレードのコンピュータで動作します。マイニング専用マシンのような特別なハードウェアは必要ありません。 そのため、ノードのデプロイメントには、ニーズに合わせた様々なオプションがあります。 簡単にするため、ローカルの物理マシンとクラウドサーバの両方でノードを実行することしましょう。
- クラウド
- プロバイダーは高可用性のサーバと静的なパブリックIPアドレスを提供
- 専用または仮想サーバを構築するよりも容易に利用可能
- サードパーティであるサーバプロバイダーを信頼しなければならないトレードオフが発生
- フルノードに必要なストレージ容量により、レンタルサーバの価格が高くなることがある
- 自分のハードウェア
- トラストレスで主権的なアプローチ
- 1回限りの投資
- 事前設定された専用マシンを購入することも可能
- マシンやネットワークの物理的な準備、メンテナンス、トラブルシューティングが必要
どちらの選択肢も、上記のような異なるメリットがあります。 従来型のクラウドコンピューティングプロバイダーに加えて、クラウドソリューションを探している場合は、ノードのデプロイに焦点を当てたサービスもあります。 ホストされたノードに関するその他のオプションについては、ノード・アズ・ア・サービスをご覧ください。
ハードウェア
しかし、検閲耐性を備えた分散型ネットワークは、クラウドプロバイダーに依存すべきではありません。 クラウドではなく、ローカルハードウェア上でノードを実行することが、エコシステムにとってより健全です。 推計 (opens in a new tab)によると、ノードの大部分はクラウド上で実行されており、これが単一障害点になる可能性があります。
イーサリアムクライアントは、デスクトップパソコン、ノートパソコン、サーバ、あるいはシングルボードコンピュータ上で動作させることができます。 パーソナルコンピュータでクライアントを実行することも可能ですが、ノード専用マシンを用意することで、プライマリコンピュータへの影響を最小限に抑えながら、パフォーマンスとセキュリティを大幅に向上させることができます。
自分のハードウェアを使うのは非常に簡単です。 シンプルなオプションだけでなく、より技術的な方向けの高度なセットアップ方法も多数用意されています。 それでは、自分のマシンでイーサリアムクライアントを実行するための要件と方法を見ていきましょう。
要件
ハードウェア要件はクライアントによって異なりますが、ノードは同期を維持する必要があるだけなので、通常はそれほど高くありません。 マイニングとは異なり、ノードは多くの計算能力を必要としないため、混同しないでください。 ただし、より強力なハードウェアでは、同期時間とパフォーマンスは向上します。
クライアントをインストールする前に、コンピュータに十分なリソースがあることを確認してください。 最小システム要件と推奨システム要件は以下のとおりです。
ハードウェアのボトルネックは、主にディスク容量です。 イーサリアムブロックチェーンの同期は、非常に多くの入出力を必要とし、多くのディスクスペースが必要です。 同期後も数百GBの空き容量を確保できる、**ソリッドステートドライブ(SSD)**を用意することをお勧めします。
データベースのサイズと初期同期の速度は、選択したクライアント、その設定、および同期戦略によって異なります。
また、ご使用のインターネット接続が帯域幅の上限 (opens in a new tab)によって制限されていないことを確認してください。 ネットワークにブロードキャストされたデータが制限を超える可能性があるため、従量制限のない接続を使用することをお勧めします。
オペレーティングシステム
すべてのクライアントは、Linux、MacOS、Windowsなどの主要なオペレーティングシステムに対応しています。 自分に最適なオペレーティングシステム(OS)を使って、通常のデスクトップまたはサーバマシンでノードを実行できます。 潜在的な問題やセキュリティの脆弱性を回避するために、お使いのOSが最新の状態になっていることを確認してください。
最小システム要件
- CPU: デュアルコア以上
- RAM: 8GB
- 2TB: SSD
- 帯域幅: 10MB/秒以上
推奨される仕様
- 高速CPU: クアッドコア以上
- RAM: 16GB以上
- 高速SSD: 2TB以上
- 帯域幅: 25MB/秒以上
選択した同期モードとクライアントによって必要容量が変わります。以下に各クライアントに必要なディスク容量の概算を記載します。
| クライアント | ディスクサイズ(スナップ同期) | ディスクサイズ(フルアーカイブ) |
|---|---|---|
| ベス | 800GB以上 | 12TB以上 |
| Erigon | N/A | 2.5TB以上 |
| Geth | 500GB以上 | 12TB以上 |
| Nethermind | 500GB以上 | 12TB以上 |
| Reth | N/A | 2.2TB以上 |
- 注意: ErigonとRethはスナップ同期を提供していませんが、フルプルーニングが可能です (Erigonで約2TB、Rethで約1.2TB) 。
コンセンサスクライアントの場合、必要な容量はクライアントの実装と有効化された機能(例:バリデータスラッシャー)によっても異なりますが、通常はビーコンデータ用にさらに200GBが必要になると考えてください。 また、多数のバリデータを実行すると、帯域幅への負荷も大きくなります。 こちらの分析で、コンセンサスクライアントの要件に関する詳細 (opens in a new tab)をご覧いただけます。
プラグアンドプレイ・ソリューション
自分のハードウェアでノードを実行する最も簡単な方法は、プラグ・アンド・プレイ・ボックスを使用することです。 事前に設定されたマシンを使うと、注文、接続、実行まで、最も簡単に実行することができます。 すべてが事前設定されており、自動実行され、直感的なガイドとダッシュボードでソフトウェアを監視・制御できます。
シングルボードコンピュータ上のイーサリアム
Raspberry PiのようなARMアーキテクチャのシングルボードコンピュータを使用すると、イーサリアムノードを簡単かつ安価に実行できます。 Ethereum on ARM (opens in a new tab)は、Raspberry Piやその他のARMボード向けに、複数の実行クライアントとコンセンサスクライアントを簡単に実行できるイメージを提供しています。
これらのデバイスは、小型で価格も手頃、効率も良く、自宅でノードを運用するのに適していますが、性能には限界があることに注意が必要です。
ノードの起動
実際のクライアント設定は、自動ランチャーを使うか、または手動で直接設定できます。
上級者でない場合は、ランチャー(インストールをガイドし、クライアントの設定を自動化するソフトウェア)を使用することをお勧めします。 ターミナルの操作に慣れている方は、手動設定も可能です。
ガイド付きセットアップ
複数のプロジェクトが、クライアント設定のユーザーエクスペリエンスの向上を目指しています。 ランチャーは、クライアントのインストールと設定を自動化します。また、クライアントのガイド付きセットアップと監視用にグラフィック・インターフェースを提供しているランチャーもあります。
数回クリックするだけで、クライアントのインストールや制御ができる便利なプロジェクトを紹介します。
- DappNode (opens in a new tab) - DappNodeは、ベンダー提供のマシンに付属しているだけではありません。 ノードランチャーやコントロールセンターのソフトウェアは多くの機能があり、任意のハードウェアで使用可能。
- EthPillar (opens in a new tab) - フルノードをセットアップする最も迅速で簡単な方法です。 ワンライナーのセットアップツールおよびノード管理TUI。 無料で オープンソースです。 ソロステーカーによるイーサリアムの公共財。 ARM64およびAMD64をサポートしています。
- eth-docker (opens in a new tab) - Dockerを使用した自動セットアップで、簡単かつ安全なステーキングに焦点を当てています。ターミナルとDockerの基本的な知識が必要で、やや上級のユーザーに推奨されます。
- Stereum (opens in a new tab) - GUIセットアップガイド、コントロールセンター、その他多くの機能を備え、SSH接続を介してリモートサーバーにクライアントをインストールするためのランチャー。
- NiceNode (opens in a new tab) - コンピュータでノードを実行するための、分かりやすいユーザーエクスペリエンスを備えたランチャー。 クライアントを選択し、数回クリックするだけで開始可能。 現在、開発中。
- Sedge (opens in a new tab) - CLIウィザードを使用してDocker構成を自動的に生成するノードセットアップツール。 NethermindによってGoで開発。
手動でのクライアントセットアップ
もう1つのオプションは、クライアントソフトウェアを手動でダウンロードして、確認・設定することです。 グラフィック・インターフェースを提供するクライアントもありますが、手動設定にはターミナルの基本的なスキルが必要となります。ただし、より幅広い用途に対応できます。
前述したように、自分のイーサリアムノードを立ち上げるには、コンセンサスクライアントと実行クライアントをペアで実行する必要があります。 一部のクライアントには、他の種類のライトクライアントが含まれているものがあり、それ以外のソフトウェアをインストールする必要なく同期できます。 しかし、完全にトラストレスな検証を行うためには、コンセンサスクライアントと実行クライアントの両方が必要です。
クライアントソフトウェアの入手
まず、お好みの実行クライアントとコンセンサスクライアントのソフトウェアを入手する必要があります。
オペレーティングシステムとアーキテクチャに適した、実行可能なアプリケーションやインストールパッケージをダウンロードするだけです。 ダウンロードしたパッケージの署名とチェックサムも必ず確認してください。 インストールやアップデートを簡単に行うためのリポジトリやDockerイメージを提供するクライアントもあります。 クライアントはすべてオープンソースなので、ソースからビルドすることもできます。 これはより高度な方法ですが、場合によっては必要になることがあります。
クライアントごとの手順は、上記のクライアントリストにリンクされているドキュメントに記載されています。
ここでは、ビルド済みのバイナリやインストール方法が掲載されているクライアントのリリースページを紹介します。
実行クライアント
- Besu (opens in a new tab)
- Erigon (opens in a new tab)
- Geth (opens in a new tab)
- Nethermind (opens in a new tab)
- Reth (opens in a new tab)
クライアントの多様性が実行レイヤー上の問題であることも特筆すべき点です。 マイノリティの実行クライアントの運用を検討することをお勧めします。
コンセンサスクライアント
- Lighthouse (opens in a new tab)
- Lodestar (opens in a new tab) (ビルド済みバイナリは提供されておらず、Dockerイメージまたはソースからのビルドのみ)
- Nimbus (opens in a new tab)
- Prysm (opens in a new tab)
- Teku (opens in a new tab)
バリデータを実行するコンセンサスノードにとって、クライアントの多様性は非常に重要です。 大多数のバリデータが単一のクライアントを実行していると、ネットワークのセキュリティが危険にさらされます。 そのため、マイノリティクライアントを選択することをお勧めします。
最新のネットワーククライアントの使用状況 (opens in a new tab)を確認し、クライアントの多様性についてさらに学びましょう。
ソフトウェアの検証
インターネットからソフトウェアをダウンロードする場合は、ダウンロードしたファイルの完全性を検証することをお勧めします。 このステップは任意ですが、特にイーサリアムクライアントのような重要なインフラストラクチャの一部では、潜在的な攻撃ベクトルを認識し、回避することが重要です。 ビルド済みのバイナリをダウンロードした場合、その出所を信頼する必要がありますが、攻撃者が実行ファイルを悪意のあるものにすり替えるというリスクもあります。
デベロッパーはリリースしたバイナリに、デベロッパーのPGPキーで署名しています。そのため、デベロッパーが作成したソフトウェアそのものを間違いなく実行していることを暗号的に検証できます。 デベロッパーが使用した公開鍵は、クライアントのリリースページやドキュメントに記載されており、そこから入手できます。 クライアントリリースとその署名をダウンロードした後、GnuPG (opens in a new tab)などのPGP実装を使用すると、それらを簡単に検証できます。 linux (opens in a new tab)またはWindows/MacOS (opens in a new tab)で gpg を使用してオープンソースソフトウェアを検証する方法に関するチュートリアルを確認してください。
ダウンロードしたソフトウェアを検証するもう1つの方法は、ハッシュが(一意の暗号論的指紋)、デベロッパーによって提供されたものと一致するかどうかを確認することです。 これはPGPを使うよりもさらに簡単で、ハッシュだけを提供するクライアントもあります。 ダウンロードしたソフトウェアに対しハッシュ関数を実行し、リリースページに記載されているものと比較してください。 以下の例をご覧ください:
1sha256sum teku-22.6.1.tar.gz239b2f8c1f8d4dab0404ce70ea314ff4b3c77e9d27aff9d1e4c1933a5439767ddeクライアントのセットアップ
クライアントソフトウェアのインストール、ダウンロード、またはコンパイルが完了したら、実行する準備が整い、 あとは適切な設定を行うだけです。 クライアントには、さまざまな機能を有効化できる豊富な設定オプションが提供されています。
まずは、クライアントのパフォーマンスやデータ使用量に大きく影響するオプションから紹介します。 同期モードは、ブロックチェーンデータをダウンロードして検証するためのさまざまな方法を表します。 ノードを開始する前に、使用するネットワークと同期モードを決める必要があります。 考慮すべき最も重要なことは、クライアントに必要なディスク容量と同期にかかる時間です。 クライアントのドキュメントで、デフォルトの同期モードを確認してください。 デフォルトの同期モードが適切でない場合は、セキュリティレベル、利用可能なデータ、コストを考慮して、別の同期モードを選択します。 同期アルゴリズムとは別に、さまざまな種類の古いデータをプルーニングすることもできます。 プルーニングにより、古いデータの削除、つまり最近のブロックから到達できないステートトライノードの削除が可能になります。
その他の基本的な設定オプションには、ネットワーク(メインネットまたはテストネット)の選択、RPCまたはWebSocket用のHTTPエンドポイントの有効化などがあります。 クライアントのドキュメントには、すべての機能とオプションが記載されています。 CLI(コマンドラインインターフェース)または設定ファイルに直接、対応するフラグを指定してクライアントを実行することで、さまざまなクライアント設定ができます。 ただし、各クライアントによって設定オプションが多少異なるため、詳細については、公式ドキュメントまたはヘルプページを必ず参照してください。
テストを行う場合は、テストネットの1つでクライアントを実行することをお勧めします。 サポートされているネットワークの概要を見る。
基本設定による実行クライアントの実行例は、次のセクションに記載されています。
実行クライアントの起動
イーサリアムクライアントソフトウェアを起動する前に、環境が整っていることを最終チェックします。 具体的には、以下の事項などを確認してください。
- 選択したネットワークと同期モードを考慮した十分なディスク容量があること。
- メモリやCPUが他のプログラムによって妨害されないこと。
- オペレーティングシステムが最新バージョンに更新されていること。
- システムが正しい時刻と日付になっていること。
- リスニングポートに接続できるようにルーターとファイアウォールを設定していること。 イーサリアムクライアントは、デフォルトでリスナー(TCP)ポートとディスカバリー(UDP)ポートを使用し、30303に設定していること。
最初にテストネットでクライアントを実行して、すべてが正常に動作していることを確認します。
最初にデフォルトではないクライアントを設定する必要があります。 フラグや設定ファイルを使って、希望の設定に変更できます。 各クライアントにより機能や設定構文が異なるため、 具体的な内容については、お使いのクライアントのドキュメントを確認してください。
実行クライアントとコンセンサスクライアントは、Engine API (opens in a new tab)で指定された認証済みエンドポイントを介して通信します。 コンセンサスクライアントに接続するためには、実行クライアントが既知のパスにjwtsecret (opens in a new tab)を生成する必要があります。 セキュリティと安定性の理由から、両方のクライアントは同じマシン上で実行する必要があり、ローカルRPC接続で相互認証を行うため、両方のクライアントがこのパスを共有していなければなりません。 また、実行クライアントは認証されたAPIのリスニングポートを定義する必要があります。
このトークンは、通常はクライアントソフトウェアによって自動的に生成されます。ただし、自分で作成しなければならないこともあります。その場合は、 OpenSSL (opens in a new tab) を使用して生成できます。
1openssl rand -hex 32 > jwtsecret実行クライアントの実行
このセクションでは、実行クライアントの開始について説明します。 あくまでも基本的な設定例となりますが、以下の設定でクライアントを起動します。
- 接続するネットワークを指定する。例ではメインネットを使用
- 代わりに、セットアップの予備テスト用にテストネットのいずれかを選択することもできます
- ブロックチェーンを含むすべてのデータが格納されるデータディレクトリを定義
- パスを実際のパス(例:外部ドライブを指すパス)に置き換えるようにしてください
- クライアントと通信するためのインターフェースを有効化
- コンセンサスクライアントとの通信のために、JSON-RPCおよびエンジンAPIを含む
- 認証済みAPIの
jwtsecretへのパスを定義します- サンプルパスを、クライアントがアクセスできる実際のパス(例:
/tmp/jwtsecret)に置き換えるようにしてください
- サンプルパスを、クライアントがアクセスできる実際のパス(例:
これは基本的な例であることに注意してください。それ以外の設定はすべてデフォルトになっています。 各クライアントのドキュメントをよく読み、デフォルト、設定、機能について理解しましょう。 バリデータの実行やモニタリングなど、その他の機能の詳細については、各クライアントのドキュメントを参照してください。
注:例にあるバックスラッシュ `` は書式設定のみを目的としており、設定フラグは1行で定義できます。
Besuの実行
この例では、Besuをメインネットで起動し、ブロックチェーンデータを/data/ethereumにデフォルト形式で保存し、コンセンサスクライアントに接続するためにJSON-RPCおよびエンジンRPCを有効にします。 Engine APIはjwtsecretトークンで認証され、localhostからの呼び出しのみが許可されます。
1besu --network=mainnet \2 --data-path=/data/ethereum \3 --rpc-http-enabled=true \4 --engine-rpc-enabled=true \5 --engine-host-allowlist="*" \6 --engine-jwt-enabled=true \7 --engine-jwt-secret=/path/to/jwtsecretBesuには、一連の質問に答えることで設定ファイルを生成できるランチャーオプションもあります。 対話型ランチャーは、以下のように実行できます。
1besu --XlauncherBesuのドキュメント (opens in a new tab)には、追加のオプションと設定の詳細が含まれています。
Erigonの実行
この例では、Erigonをメインネットで起動し、ブロックチェーンデータを /data/ethereum に保存し、JSON-RPCを有効にし、許可されるネームスペースを定義し、jwtsecretパスで定義されたコンセンサスクライアント接続用の認証を有効にします。
1erigon --chain mainnet \2 --datadir /data/ethereum \3 --http --http.api=engine,eth,web3,net \4 --authrpc.jwtsecret=/path/to/jwtsecretErigonは、デフォルトで8GBのHDDでフル同期を行います。アーカイブデータは2TB以上になるので、 datadirが十分な空き容量のあるディスクを指していることを確認するか、さまざまな種類のデータを削除できる--pruneフラグを検討してください。 詳細については、Erigonの--helpを確認してください。
Gethの実行
この例では、Gethをメインネットで起動し、ブロックチェーンデータを/data/ethereumに保存し、JSON-RPCを有効にして、許可されるネームスペースを定義します。 また、コンセンサスクライアント接続のための認証も有効にします。これにはjwtsecretへのパスと、許可する接続を定義するオプション(この例ではlocalhostからのみ)が必要です。
1geth --mainnet \2 --datadir "/data/ethereum" \3 --http --authrpc.addr localhost \4 --authrpc.vhosts="localhost" \5 --authrpc.port 85516 --authrpc.jwtsecret=/path/to/jwtsecretすべての設定オプションに関するドキュメント (opens in a new tab)を確認し、Gethをコンセンサスクライアントと共に実行する (opens in a new tab)方法についてさらに学びましょう。
Nethermindの実行
Nethermindは、さまざまなインストールオプション (opens in a new tab)を提供しています。 パッケージには、ガイド付きセットアップ機能を備えたランチャーなどのさまざまなバイナリが含まれており、インタラクティブに設定できます。 他にも、設定フラグを付けて実行できるランナーなどがあります。 JSON-RPCはデフォルトで有効になっています。
1Nethermind.Runner --config mainnet \2 --datadir /data/ethereum \3 --JsonRpc.JwtSecretFile=/path/to/jwtsecretNethermindのドキュメントでは、Nethermindをコンセンサスクライアントと共に実行するための完全なガイド (opens in a new tab)を提供しています。
実行クライアントは、コア機能と選択したエンドポイントを起動し、ピアを探し始めます。 ピアが見つかったら、同期を開始します。 また、コンセンサスクライアントからの接続を待ちます。 クライアントが正常に現在の状態に同期されると、現在のブロックチェーンデータが利用できるようになります。
Rethの実行
この例では、Rethをメインネットで起動し、デフォルトのデータ保存場所を使用します。 jwtsecretパスで定義されたコンセンサスクライアントに接続するためのJSON-RPCおよびEngine RPC認証を有効にし、localhostからの呼び出しのみを許可します。
1reth node \2 --authrpc.jwtsecret /path/to/jwtsecret \3 --authrpc.addr 127.0.0.1 \4 --authrpc.port 8551デフォルトのデータディレクトリの詳細については、Rethの設定 (opens in a new tab)を参照してください。 Rethのドキュメント (opens in a new tab)には、追加のオプションと設定の詳細が含まれています。
コンセンサスクライアントの起動
実行クライアントへのローカルRPC接続を確立させるために、コンセンサスクライアントを正しいポート設定で起動する必要があります。 コンセンサスクライアントは、公開した実行クライアントのポートを引数に設定して実行します。
コンセンサスクライアントは、それらの間のRPC接続を認証するために、実行クライアントのjwt-secretへのパスも必要とします。 上記の実行例と同様に、各コンセンサスクライアントには、jwtトークンファイルパスを引数とする設定フラグがあります。 これは、実行クライアントに提供されたjwtsecretパスと一致している必要があります。
バリデータを実行する予定がある場合は、フィーを受け取るイーサリアムアドレスを指定する設定フラグを必ず追加してください。 このアドレスは、バリデータのイーサ報酬が蓄積されるアドレスです。 各コンセンサスクライアントには、例えば --suggested-fee-recipient=0xabcd1 のように、イーサリアムアドレスを引数として取るオプションがあります。
テストネットでビーコンノードを起動する場合、チェックポイント同期 (opens in a new tab)にパブリックエンドポイントを使用することで、同期時間を大幅に短縮できます。
コンセンサスクライアントの実行
Lighthouseの実行
Lighthouseを実行する前に、Lighthouse Book (opens in a new tab)でインストールと設定の方法について詳しく学んでください。
1lighthouse beacon_node \2 --network mainnet \3 --datadir /data/ethereum \4 --http \5 --execution-endpoint http://127.0.0.1:8551 \6 --execution-jwt /path/to/jwtsecretLodestarの実行
Lodestarソフトウェアをコンパイルするか、Dockerイメージをダウンロードしてインストールしてください。 詳細はドキュメント (opens in a new tab)および、より包括的なセットアップガイド (opens in a new tab)でご確認ください。
1lodestar beacon \2 --dataDir="/data/ethereum" \3 --network=mainnet \4 --eth1.enabled=true \5 --execution.urls="http://127.0.0.1:8551" \6 --jwt-secret="/path/to/jwtsecret"Nimbusの実行
Nimbusには、コンセンサスクライアントと実行クライアントの両方を備えています。 計算能力の低いデバイスでも実行可能です。 依存関係とNimbus自体をインストール (opens in a new tab)した後、そのコンセンサスクライアントを実行できます。
1nimbus_beacon_node \2 --network=mainnet \3 --web3-url=http://127.0.0.1:8551 \4 --rest \5 --jwt-secret="/path/to/jwtsecret"Prysmの実行
Prysmには、簡単に自動インストールできるスクリプトがあります。 詳細はPrysmのドキュメント (opens in a new tab)で確認できます。
1./prysm.sh beacon-chain \2 --mainnet \3 --datadir /data/ethereum \4 --execution-endpoint=http://localhost:8551 \5 --jwt-secret=/path/to/jwtsecretTekuの実行
1teku --network mainnet \2 --data-path "/data/ethereum" \3 --ee-endpoint http://localhost:8551 \4 --ee-jwt-secret-file "/path/to/jwtsecret"コンセンサスクライアントが実行クライアントに接続し、デポジットコントラクトを読み込みバリデータを識別します。同時に、他のビーコンノードのピアにも接続し、ジェネシスブロック(最初のブロック)からコンセンサススロットの同期を開始します。 ビーコンノードが現在のエポックに到達すると、バリデータはビーコンAPIを使用できるようになります。 ビーコンノードAPI (opens in a new tab)についての詳細はこちら。
バリデータの追加
コンセンサスクライアントは、バリデータが接続するビーコンノードとして機能します。 各コンセンサスクライアントは、それぞれのバリデータソフトウェアを搭載しています。詳細については、各ドキュメントに記載されています。
自身のバリデータを実行することで、イーサリアムネットワークをサポートする最もインパクトがありトラストレスな方法であるソロステーキングが可能になります。 ただし、32 ETHのデポジットが必要となります。 より少額で自身のノードでバリデータを実行するには、Rocket Pool (opens in a new tab)のようなパーミッションレスなノードオペレーターがいる分散型プールがおすすめです。
ステーキングとバリデータキーの生成を始める最も簡単な方法は、Hoodiテストネットステーキング・ローンチパッド (opens in a new tab)を使用することです。これにより、Hoodiでノードを実行 (opens in a new tab)してセットアップをテストできます。 メインネットの準備ができたら、メインネット・ステーキング・ローンチパッド (opens in a new tab)を使用して、これらの手順を繰り返すことができます。
ステーキングページでステーキングオプションの概要を確認してください。
ノードの使用
実行クライアントは、さまざまな方法でトランザクションを送信したり、イーサリアムネットワーク上のスマートコントラクトと対話したり、デプロイしたりするために使用できるRPC APIエンドポイントを提供しています。
- 適切なプロトコル(例:
curlを使用)で手動で呼び出す - 提供されているコンソールをアタッチする(例:
geth attach) - web3.py (opens in a new tab)やethers (opens in a new tab)などのWeb3ライブラリを使用してアプリケーションに実装する
クライアントによって、RPCエンドポイントの実装は異なります。 しかし、すべてのクライアントで使用できる標準的なJSON-RPCがあります。 概要については、JSON-RPCのドキュメントをお読みください。 イーサリアムネットワークからの情報を必要とするアプリケーションは、このRPCを使用できます。 例えば、人気のウォレットであるMetaMaskでは、自身のRPCエンドポイントに接続 (opens in a new tab)でき、プライバシーとセキュリティ面で大きなメリットがあります。
すべてのコンセンサスクライアントはBeacon API (opens in a new tab)を公開しており、Curl (opens in a new tab)などのツールを使用してリクエストを送信することで、コンセンサスクライアントのステータスを確認したり、ブロックやコンセンサスデータをダウンロードしたりできます。 詳細については、各コンセンサスクライアントのドキュメントを参照してください。
RPCへのアクセス
実行クライアントのJSON-RPCのデフォルトポートは8545ですが、設定でローカルエンドポイントのポートを変更できます。 デフォルトでは、RPCインターフェースはコンピュータのローカルホストからしかアクセスできません。 リモートからアクセスできるようにするには、アドレスを0.0.0.0に変更して公開するとよいでしょう。 これにより、ローカルネットワーク内だけでなく、パブリックIPアドレスでも接続できるようになります。 また、ほとんどの場合、ルーターでポート転送を設定する必要があります。
インターネットにポートを公開するアプローチは、インターネット上の誰でもノードをコントロールできるようになるため、注意が必要です。 悪意のある者がノードにアクセスしてシステムをダウンさせたり、クライアントをウォレットとして使用している場合は、資金が盗まれる可能性があります。
これを回避するには、危険性のあるRPCメソッドを変更できないようにすることです。 例えば、Gethでは、--http.api web3,eth,txpoolというフラグで変更可能なメソッドを宣言できます。
RPCインターフェースへのアクセスは、エッジレイヤーAPIの開発、もしくはNginxのようなWebサーバアプリケーションから、クライアントのローカルアドレスやポートに接続することで拡張できます。 中間レイヤーを活用することで、開発者はRPCインターフェースへの安全なhttps接続のための証明書を設定することもできます。
ノードのRPCエンドポイントへのアクセスを付与する方法は、Webサーバやプロキシ、外向けのREST APIを設定するだけではありません。 プライバシーを保護しながら一般に到達可能なエンドポイントを設定するもう1つの方法は、独自のTor (opens in a new tab)オニオンサービスでノードをホストすることです。 これにより、静的なパブリックIPアドレスやオープンポートを使用せずに、ローカルネットワーク外からRPCにアクセスできます。 ただし、Torネットワークはすべてのアプリケーションでサポートされているわけではなく、接続が不安定なネットワーク経由からのみRPCエンドポイントにアクセスできる点に注意してください。
そのためには、独自のオニオンサービス (opens in a new tab)を作成する必要があります。 独自のサービスをホストするには、オニオンサービスのセットアップに関するドキュメント (opens in a new tab)を確認してください。 RPCポートへのプロキシを使ってWebサーバを指すか、直接RPCを指すことができます。
最後に、最も一般的なVPNを使って、内部ネットワークへのアクセスを提供することもできます。 ユースケースやノードへのアクセスが必要なユーザーの人数によっては、安全なVPN接続は選択肢の1つとなります。 OpenVPNは、OSIレイヤー2やレイヤー3の安全なネットワーク拡張機能を実装した、フル機能のSSL VPNです。業界標準のSSL/TLSプロトコルを用いており、証明書ベースの認証やスマートカード認証、ユーザ名/パスワード認証など、さまざまな柔軟なクライアント認証方法に対応しています。また、ファイアウォールルールを使って、ユーザーやグループ固有のアクセスコントロールポリシーを設定し、VPNの仮想インターフェースに適用することもできます。
ノードの運用
ノードが正常に動作するためには、定期的に監視し、 必要に応じてメンテナンスを行う必要があります。
ノードのオンライン状態を維持する
ノードが常時オンラインになっている必要はありませんが、ネットワークと同期させるためにできるだけオンラインにしておく必要があります。 シャットダウンして再起動することもできますが、以下の点に注意してください。
- 最新の状態をディスクに書き込み中の場合は、シャットダウンには数分程度かかることがある。
- 強制シャットダウンを行うと、データベースに損傷を与え、ノード全体の再同期が必要になることがある。
- クライアントはネットワークとの同期が解除され、再起動時に再同期が必要になる。 ノードは最後にシャットダウンされたところから同期を開始できるが、オフラインになっていた時間に応じて処理時間が増加する。
これはコンセンサスレイヤーのバリデータノードには適用されません。 ノードをオフラインにすると、ノードに依存するすべてのサービスに影響を及ぼします。 もし_ステーキング_目的でノードを実行している場合は、ダウンタイムをできるだけ最小限に抑えるようにしてください。
クライアントサービスの作成
起動時にクライアントを自動起動するサービスを作成することを検討してください。 例えば、Linuxサーバでは、systemdなどでサービスを作成し、権限が制限されたユーザーの下で、適切な設定でクライアントを実行し、自動的に再起動するように作成するのがお勧めです。
クライアントの更新
クライアントソフトウェアは、最新のセキュリティパッチ、機能、 EIPの最新バージョンを常にインストールしておく必要があります。 特にハードフォークの前には、正しいクライアントバージョンを実行していることを確認してください。
重要なネットワーク更新の前には、イーサリアム・ファウンデーション(EF)のブログ (opens in a new tab)で投稿されます。 これらのお知らせを購読 (opens in a new tab)することで、ノードの更新が必要なときにメールで通知を受け取ることができます。
クライアントの更新は非常に簡単です。 各クライアントのドキュメントに具体的な手順が記載されていますが、一般的には、最新版をダウンロードし、新しい実行ファイルを使ってクライアントを再起動するだけです。 アップデートが適用され、クライアントは前回終了したところから再開します。
各クライアントは、ピアツーピアプロトコルで使用される、人間が判読できるバージョン文字列を持っており、この文字列はコマンドラインからもアクセスできます。 このバージョン文字列を使って、ユーザーは自分が正しいバージョンを実行していることを確認できるほか、ネットワーク上で特定のクライアントの分散を定量化するために使われるブロックエクスプローラーやその他の分析ツールにも役立ちます。 バージョン文字列の詳細については、個々のクライアントのドキュメントを参照してください。
追加サービスの実行
自分でノードを実行すると、イーサリアムクライアントRPCへの直接アクセスを必要とするサービスを利用できます。 これらは、レイヤー2ソリューション、ウォレットのバックエンド、ブロックエクスプローラー、デベロッパーツール、その他のイーサリアムインフラストラクチャのような、イーサリアム上に構築されたサービスです。
ノードの監視
ノードを適切に監視するために、メトリクスの収集を検討してください。 クライアントが提供するメトリクスエンドポイントから、ノードに関する包括的なデータを取得できます。 InfluxDB (opens in a new tab)やPrometheus (opens in a new tab)などのツールを使用してデータベースを作成し、Grafana (opens in a new tab)などのソフトウェアで視覚化やチャートに変換することができます。 このソフトウェアを使用するには、さまざまなセットアップ方法があり、ノードやネットワーク全体を視覚化するためのGrafanaダッシュボードも多種用意されています。 例として、Gethの監視に関するチュートリアルをご覧ください。
モニタリングを行う際は、必ずマシンのパフォーマンスも監視してください。 ノードの初期同期中は、クライアントソフトウェアがCPUとRAMに大きな負荷をかけることがあります。 Grafanaに加えて、OSが提供するhtopやuptimeなどのツールでも監視できます。
参考リンク
- Ethereum Staking Guides (opens in a new tab) - Somer Esat、頻繁に更新
- ガイド | メインネットでイーサリアムステーキングのバリデータを設定する方法 (opens in a new tab) – CoinCashew、頻繁に更新
- ETHStakerによるテストネットでのバリデータ運用ガイド (opens in a new tab) – ETHStaker、定期的に更新
- Sample AWS Blockchain Node Runner app for Ethereum Nodes (opens in a new tab) - AWS、頻繁に更新
- ノードオペレーター向けThe Merge FAQ (opens in a new tab) - 2022年7月
- Analyzing the hardware requirements to be an Ethereum full validated node (opens in a new tab) – Albert Palau、2018年9月24日
- イーサリアムフルノードの実行:やる気のない人向けガイド (opens in a new tab) – Justin Leroux、2019年11月7日
- Running a Hyperledger Besu Node on the Ethereum Mainnet: Benefits, Requirements, and Setup (opens in a new tab) – Felipe Faraggi、2020年5月7日
- Deploying Nethermind Ethereum Client with Monitoring Stack (opens in a new tab) – Nethermind.eth、2020年7月8日
