独自のイーサリアムノードを立ち上げる
独自のノードを実行することで、さまざまなメリットが得られ、新たな可能性が開かれ、エコシステムのサポートに役立ちます。このページでは、独自のノードを立ち上げ、イーサリアムのトランザクションの検証に参加する手順を説明します。
マージ以降、イーサリアムのノードを実行するには、**実行レイヤー(EL)クライアントとコンセンサス・レイヤー(CL)**クライアントの2つのクライアントが必要になることに注意してください。このページでは、イーサリアムのノードを実行するために、これら2つのクライアントをインストール、設定、接続する方法を説明します。
前提条件
イーサリアムのノードとは何か、なぜクライアントを実行するのかを理解しておく必要があります。これについては、ノードとクライアントで説明されています。
ノードの実行について初めて学ぶ場合や、技術的でない方法を探している場合は、まずイーサリアムノードの実行に関するユーザーフレンドリーな入門記事を確認することをお勧めします。
アプローチの選択
ノードを立ち上げる最初のステップは、アプローチを選択することです。要件とさまざまな可能性に基づいて、クライアントの実装(実行クライアントとコンセンサス・クライアントの両方)、環境(ハードウェア、システム)、およびクライアント設定のパラメータを選択する必要があります。
このページでは、これらの決定について説明し、イーサリアムのインスタンスを実行するのに最も適した方法を見つけるお手伝いをします。
クライアントの実装を選択するには、利用可能なメインネット対応の実行クライアント、コンセンサス・クライアントをすべて確認し、クライアント・ダイバーシティについて学んでください。
クライアントの要件を考慮し、ソフトウェアを独自のハードウェアで実行するか、クラウドで実行するかを決定します。
環境を準備したら、初心者向けのインターフェースを使用するか、高度なオプションを備えたターミナルを使用して手動で、選択したクライアントをインストールします。
ノードが実行され、同期している場合は、使用する準備ができていますが、そのメンテナンスには常に注意を払うようにしてください。
環境とハードウェア
ローカルまたはクラウド
イーサリアムのクライアントは、コンシューマー向けのコンピューターで実行でき、マイニングマシンのような特別なハードウェアは必要ありません。したがって、ニーズに基づいてノードをデプロイするためのさまざまなオプションがあります。 簡単に言うと、ローカルの物理マシンとクラウドサーバーの両方でノードを実行することを考えてみましょう。
- クラウド
- プロバイダーは、高いサーバー稼働率と静的なパブリックIPアドレスを提供します
- 専用サーバーや仮想サーバーを取得する方が、自分で構築するよりも快適な場合があります
- トレードオフは、サードパーティ(サーバープロバイダー)を信頼することです
- フル・ノードに必要なストレージサイズのため、レンタルサーバーの価格が高くなる可能性があります
- 独自のハードウェア
- よりトラストレスで主権的なアプローチ
- 1回限りの投資
- 事前設定されたマシンを購入するオプション
- マシンとネットワークを物理的に準備、保守し、潜在的なトラブルシューティングを行う必要があります
どちらのオプションにも、上記にまとめたような異なる利点があります。クラウドソリューションを探している場合、多くの従来のクラウドコンピューティングプロバイダーに加えて、ノードのデプロイに特化したサービスもあります。ホスト型ノードのその他のオプションについては、サービスとしてのノードを確認してください。
ハードウェア
ただし、検閲耐性のある分散型ネットワークは、クラウドプロバイダーに依存すべきではありません。代わりに、独自のローカルハードウェアでノードを実行する方が、エコシステムにとって健全です。推定 (opens in a new tab)によると、ノードの大部分がクラウド上で実行されており、これが単一障害点になる可能性があります。
イーサリアムのクライアントは、コンピューター、ラップトップ、サーバー、さらにはシングルボードコンピューターでも実行できます。パーソナルコンピューターでクライアントを実行することも可能ですが、ノード専用のマシンを用意することで、メインのコンピューターへの影響を最小限に抑えながら、パフォーマンスとセキュリティを大幅に向上させることができます。
独自のハードウェアを使用するのは非常に簡単です。技術的な知識がある人向けの高度な設定だけでなく、多くのシンプルなオプションもあります。それでは、マシンでイーサリアムのクライアントを実行するための要件と手段を見ていきましょう。
要件
ハードウェア要件はクライアントによって異なりますが、ノードは同期を維持するだけでよいため、一般的にはそれほど高くありません。はるかに多くの計算能力を必要とするマイニングと混同しないでください。ただし、より強力なハードウェアを使用すると、同期時間とパフォーマンスは向上します。
クライアントをインストールする前に、コンピューターにそれを実行するのに十分なリソースがあることを確認してください。最小要件と推奨要件は以下のとおりです。
ハードウェアのボトルネックは、主にディスク容量です。イーサリアムのブロックチェーンの同期は、入出力が非常に集中的に行われ、多くのスペースを必要とします。同期後でも数百GBの空き容量がある**ソリッドステートドライブ(SSD)**を用意するのが最適です。
データベースのサイズと初期同期の速度は、選択したクライアント、その設定、および同期ストラテジーによって異なります。
また、インターネット接続が帯域幅の制限 (opens in a new tab)によって制限されていないことを確認してください。初期同期やネットワークにブロードキャストされるデータが制限を超える可能性があるため、従量制ではない接続を使用することをお勧めします。
オペレーティングシステム
すべてのクライアントは、主要なオペレーティングシステム(Linux、macOS、Windows)をサポートしています。つまり、自分に最適なオペレーティングシステム(OS)を搭載した通常のデスクトップマシンやサーバーマシンでノードを実行できます。潜在的な問題やセキュリティの脆弱性を回避するために、OSが最新であることを確認してください。
最小要件
- 2コア以上のCPU
- 8 GBのRAM
- 2TBのSSD
- 10 MBit/s以上の帯域幅
推奨スペック
- 4コア以上の高速なCPU
- 16 GB以上のRAM
- 2TB以上の高速なSSD
- 25 MBit/s以上の帯域幅
選択した同期モードとクライアントはスペース要件に影響しますが、各クライアントに必要なディスク容量の推定値を以下に示します。
| クライアント | ディスクサイズ(スナップ同期) | ディスクサイズ(フルアーカイブ) |
|---|---|---|
| ベス | 800GB以上 | 12TB以上 |
| エリゴン | 該当なし | 2.5TB以上 |
| ゲス | 500GB以上 | 12TB以上 |
| ネザーマインド | 500GB以上 | 12TB以上 |
| レス | 該当なし | 2.2TB以上 |
- 注:エリゴンとレスはスナップ同期を提供していませんが、フルプルーニングは可能です(エリゴンは約2TB、レスは約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接続を介してリモートサーバーにクライアントをインストールするためのランチャー。
- Sedge (opens in a new tab) - CLIウィザードを使用してDocker設定を自動的に生成するノードセットアップツール。ネザーマインドによってGoで記述されています。
- Chainstack Self-Hosted (opens in a new tab) - Kubernetes上に実行クライアントとコンセンサス・クライアントをデプロイするためのWeb UIとCLI。スナップショットのブートストラップと組み込みの監視が含まれています。無料。Chainstackアカウントは不要です。Chainstackによって構築されています。
クライアントの手動セットアップ
もう1つのオプションは、クライアントソフトウェアを手動でダウンロード、検証、および設定することです。一部のクライアントがグラフィカルインターフェースを提供している場合でも、手動セットアップにはターミナルの基本的なスキルが必要ですが、はるかに高い汎用性を提供します。
前述のように、独自のイーサリアムノードをセットアップするには、コンセンサス・クライアントと実行クライアントのペアを実行する必要があります。一部のクライアントには、もう一方の種類のライト・クライアントが含まれており、他のソフトウェアを必要とせずに同期できる場合があります。ただし、完全なトラストレスな検証には、両方の実装が必要です。
クライアントソフトウェアの入手
まず、好みの実行クライアントとコンセンサス・クライアントのソフトウェアを入手する必要があります。
オペレーティングシステムとアーキテクチャに合った実行可能なアプリケーションまたはインストールパッケージをダウンロードするだけです。ダウンロードしたパッケージの署名とチェックサムは常に検証してください。一部のクライアントは、インストールと更新を容易にするために、リポジトリまたはDockerイメージも提供しています。すべてのクライアントはオープンソースであるため、ソースからビルドすることもできます。これはより高度な方法ですが、場合によっては必要になることがあります。
各クライアントのインストール手順は、上記のクライアントリストにリンクされているドキュメントに記載されています。
以下は、ビルド済みのバイナリやインストール手順を見つけることができるクライアントのリリース・ページです。
実行クライアント
- ベス (opens in a new tab)
- エリゴン (opens in a new tab)
- ゲス (opens in a new tab)
- ネザーマインド (opens in a new tab)
- レス (opens in a new tab)
クライアント・ダイバーシティが実行レイヤーにおける課題であることにも注意が必要です。読者は、マイノリティの実行クライアントを実行することを検討することをお勧めします。
コンセンサス・クライアント
- ライトハウス (opens in a new tab)
- ロードスター (opens in a new tab)(ビルド済みのバイナリは提供されておらず、Dockerイメージのみ、またはソースからビルドする必要があります)
- ニンバス (opens in a new tab)
- プリズム (opens in a new tab)
- テク (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を使用してオープンソースソフトウェアを検証するチュートリアルを確認してください。
別の検証方法は、ダウンロードしたソフトウェアのハッシュ(一意の暗号学的フィンガープリント)が、開発者が提供したものと一致することを確認することです。これはPGPを使用するよりもさらに簡単で、一部のクライアントはこのオプションのみを提供しています。ダウンロードしたソフトウェアでハッシュ関数を実行し、リリース・ページのものと比較するだけです。例:
sha256sum teku-22.6.1.tar.gz
9b2f8c1f8d4dab0404ce70ea314ff4b3c77e9d27aff9d1e4c1933a5439767dde
クライアントのセットアップ
クライアントソフトウェアをインストール、ダウンロード、またはコンパイルしたら、実行する準備が整います。これは、適切な設定で実行する必要があることだけを意味します。クライアントは豊富な設定オプションを提供しており、さまざまな機能を有効にすることができます。
クライアントのパフォーマンスとデータ使用量に大きな影響を与える可能性のあるオプションから始めましょう。同期モードは、ブロックチェーンデータをダウンロードして検証するさまざまな方法を表します。ノードを起動する前に、使用するネットワークと同期モードを決定する必要があります。考慮すべき最も重要なことは、クライアントが必要とするディスク容量と同期時間です。クライアントのドキュメントに注意して、どの同期モードがデフォルトであるかを確認してください。それが適していない場合は、セキュリティのレベル、利用可能なデータ、およびコストに基づいて別のものを選択してください。同期アルゴリズムとは別に、さまざまな種類の古いデータのプルーニングを設定することもできます。プルーニングにより、古いデータを削除できます。つまり、最近のブロックから到達できないステート・トライのノードを削除します。
その他の基本的な設定オプションには、ネットワーク(メインネットまたはテストネット)の選択、RPCまたはWebSocketsのHTTPエンドポイントの有効化などがあります。すべての機能とオプションは、クライアントのドキュメントに記載されています。さまざまなクライアント設定は、CLIまたは設定ファイルで対応するフラグを使用してクライアントを実行することで設定できます。各クライアントは少し異なります。設定オプションの詳細については、常に公式ドキュメントまたはヘルプページを参照してください。
テスト目的で、テストネットのネットワークのいずれかでクライアントを実行することをお勧めします。サポートされているネットワークの概要を参照してください。
基本的な設定で実行クライアントを実行する例は、次のセクションにあります。
実行クライアントの起動
イーサリアムのクライアントソフトウェアを起動する前に、環境の準備ができているかどうかの最終確認を行ってください。たとえば、次のことを確認します。
- 選択したネットワークと同期モードを考慮して、十分なディスク容量があること。
- メモリと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)を使用して生成できます。
openssl rand -hex 32 > jwtsecret
実行クライアントの実行
このセクションでは、実行クライアントの起動について説明します。これは基本的な設定の例としてのみ機能し、次の設定でクライアントを起動します。
- 接続するネットワークを指定します(この例ではメインネット)
- 代わりに、セットアップの予備テストのためにテストネットのいずれかを選択することもできます
- ブロックチェーンを含むすべてのデータが保存されるデータディレクトリを定義します
- パスを実際のパス(外部ドライブを指すなど)に置き換えてください
- クライアントと通信するためのインターフェースを有効にします
- コンセンサス・クライアントとの通信のためのJSON-RPCおよびEngine APIを含みます
- 認証済みAPIの
jwtsecretへのパスを定義します- サンプルのパスを、クライアントがアクセスできる実際のパス(例:
/tmp/jwtsecret)に置き換えてください
- サンプルのパスを、クライアントがアクセスできる実際のパス(例:
これは単なる基本的な例であり、他のすべての設定はデフォルトに設定されることに注意してください。デフォルト値、設定、および機能については、各クライアントのドキュメントに注意してください。バリデータの実行、監視などのその他の機能については、特定のクライアントのドキュメントを参照してください。
例のバックスラッシュ
\はフォーマット目的のみであることに注意してください。設定フラグは1行で定義できます。
ベスの実行
この例では、メインネットでベスを起動し、ブロックチェーンデータをデフォルトの形式で/data/ethereumに保存し、コンセンサス・クライアントを接続するためのJSON-RPCとEngine RPCを有効にします。Engine APIはトークンjwtsecretで認証され、localhostからの呼び出しのみが許可されます。
besu --network=mainnet \
--data-path=/data/ethereum \
--rpc-http-enabled=true \
--engine-rpc-enabled=true \
--engine-host-allowlist="*" \
--engine-jwt-enabled=true \
--engine-jwt-secret=/path/to/jwtsecret
ベスには、一連の質問をして設定ファイルを生成するランチャーオプションも付属しています。次を使用してインタラクティブなランチャーを実行します。
besu --Xlauncher
ベスのドキュメント (opens in a new tab)には、追加のオプションと設定の詳細が含まれています。
エリゴンの実行
この例では、メインネットでエリゴンを起動し、ブロックチェーンデータを/data/ethereumに保存し、JSON-RPCを有効にし、許可される名前空間を定義し、jwtsecretパスで定義されるコンセンサス・クライアントを接続するための認証を有効にします。
erigon --chain mainnet \
--datadir /data/ethereum \
--http --http.api=engine,eth,web3,net \
--authrpc.jwtsecret=/path/to/jwtsecret
エリゴンはデフォルトで8GBのHDDを使用してフル同期を実行し、その結果、2TBを超えるアーカイブデータが生成されます。datadirが十分な空き容量のあるディスクを指していることを確認するか、さまざまな種類のデータをトリミングできる--pruneフラグを調べてください。詳細については、エリゴンの--helpを確認してください。
ゲスの実行
この例では、メインネットでゲスを起動し、ブロックチェーンデータを/data/ethereumに保存し、JSON-RPCを有効にして、許可される名前空間を定義します。また、コンセンサス・クライアントを接続するための認証も有効にします。これには、jwtsecretへのパスと、許可される接続を定義するオプション(この例ではlocalhostからのみ)が必要です。
geth --mainnet \
--datadir "/data/ethereum" \
--http --authrpc.addr localhost \
--authrpc.vhosts="localhost" \
--authrpc.port 8551
--authrpc.jwtsecret=/path/to/jwtsecret
すべての設定オプションのドキュメント (opens in a new tab)を確認し、コンセンサス・クライアントでゲスを実行する (opens in a new tab)方法について詳しく学んでください。
ネザーマインドの実行
ネザーマインドはさまざまなインストールオプション (opens in a new tab)を提供しています。パッケージには、ガイド付きセットアップを備えたランチャーなど、さまざまなバイナリが付属しており、インタラクティブに設定を作成するのに役立ちます。または、実行可能ファイル自体であるRunnerを見つけて、設定フラグを使用して実行することもできます。JSON-RPCはデフォルトで有効になっています。
Nethermind.Runner --config mainnet \
--datadir /data/ethereum \
--JsonRpc.JwtSecretFile=/path/to/jwtsecret
ネザーマインドのドキュメントには、コンセンサス・クライアントでネザーマインドを実行するための完全なガイド (opens in a new tab)が用意されています。
実行クライアントは、コア機能、選択したエンドポイントを初期化し、ピアの検索を開始します。ピアを正常に発見した後、クライアントは同期を開始します。実行クライアントは、コンセンサス・クライアントからの接続を待機します。クライアントが現在の状態に正常に同期されると、現在のブロックチェーンデータが利用可能になります。
レスの実行
この例では、デフォルトのデータの場所を使用して、メインネットでレスを起動します。jwtsecretパスで定義されるコンセンサス・クライアントを接続するためのJSON-RPCおよびEngine RPC認証を有効にし、localhostからの呼び出しのみが許可されます。
reth node \
--authrpc.jwtsecret /path/to/jwtsecret \
--authrpc.addr 127.0.0.1 \
--authrpc.port 8551
デフォルトのデータディレクトリの詳細については、レスの設定 (opens in a new tab)を参照してください。レスのドキュメント (opens in a new tab)には、追加のオプションと設定の詳細が含まれています。
コンセンサス・クライアントの起動
実行クライアントへのローカルRPC接続を確立するには、コンセンサス・クライアントを適切なポート設定で起動する必要があります。コンセンサス・クライアントは、公開された実行クライアントのポートを設定引数として実行する必要があります。
コンセンサス・クライアントは、それらの間のRPC接続を認証するために、実行クライアントのjwt-secretへのパスも必要とします。上記の実行例と同様に、各コンセンサス・クライアントには、jwtトークンのファイルパスを引数として受け取る設定フラグがあります。これは、実行クライアントに提供されるjwtsecretパスと一致している必要があります。
バリデータを実行する予定がある場合は、手数料の受取人のイーサリアムのアドレスを指定する設定フラグを必ず追加してください。ここに、バリデータのイーサの報酬が蓄積されます。各コンセンサス・クライアントには、イーサリアムのアドレスを引数として受け取るオプション(例:--suggested-fee-recipient=0xabcd1)があります。
テストネットでビーコン・ノードを起動する場合、チェックポイント同期 (opens in a new tab)のパブリックエンドポイントを使用することで、同期時間を大幅に節約できます。
コンセンサス・クライアントの実行
ライトハウスの実行
ライトハウスを実行する前に、Lighthouse Book (opens in a new tab)でインストールと設定の方法について詳しく学んでください。
lighthouse beacon_node \
--network mainnet \
--datadir /data/ethereum \
--http \
--execution-endpoint http://127.0.0.1:8551 \
--execution-jwt /path/to/jwtsecret
ロードスターの実行
ロードスターのソフトウェアをコンパイルするか、Dockerイメージをダウンロードしてインストールします。詳細については、ドキュメント (opens in a new tab)と、より包括的なセットアップガイド (opens in a new tab)を参照してください。
lodestar beacon \
--dataDir="/data/ethereum" \
--network=mainnet \
--eth1.enabled=true \
--execution.urls="http://127.0.0.1:8551" \
--jwt-secret="/path/to/jwtsecret"
ニンバスの実行
ニンバスには、コンセンサス・クライアントと実行クライアントの両方が付属しています。非常に控えめな計算能力のデバイスでも実行できます。 依存関係とニンバス自体をインストール (opens in a new tab)した後、そのコンセンサス・クライアントを実行できます。
nimbus_beacon_node \
--network=mainnet \
--web3-url=http://127.0.0.1:8551 \
--rest \
--jwt-secret="/path/to/jwtsecret"
プリズムの実行
プリズムには、簡単な自動インストールを可能にするスクリプトが付属しています。詳細はプリズムのドキュメント (opens in a new tab)に記載されています。
./prysm.sh beacon-chain \
--mainnet \
--datadir /data/ethereum \
--execution-endpoint=http://localhost:8551 \
--jwt-secret=/path/to/jwtsecret
テクの実行
teku --network mainnet \
--data-path "/data/ethereum" \
--ee-endpoint http://localhost:8551 \
--ee-jwt-secret-file "/path/to/jwtsecret"
コンセンサス・クライアントが実行クライアントに接続してデポジット・コントラクトを読み取り、バリデータを識別すると、他のビーコン・ノードのピアにも接続し、ジェネシスからコンセンサススロットの同期を開始します。ビーコン・ノードが現在のエポックに到達すると、バリデータでBeacon 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を使用できます。たとえば、人気のあるウォレットであるメタマスクを使用すると、独自のRPCエンドポイントに接続 (opens in a new tab)でき、プライバシーとセキュリティの面で大きなメリットがあります。
コンセンサス・クライアントはすべて、Curl (opens in a new tab)などのツールを使用してリクエストを送信することで、コンセンサス・クライアントのステータスを確認したり、ブロックやコンセンサスデータをダウンロードしたりするために使用できるBeacon API (opens in a new tab)を公開しています。これに関する詳細情報は、各コンセンサス・クライアントのドキュメントに記載されています。
RPCへのアクセス
実行クライアントのJSON-RPCのデフォルトポートは8545ですが、設定でローカルエンドポイントのポートを変更できます。デフォルトでは、RPCインターフェースはコンピューターのローカルホストでのみアクセス可能です。リモートからアクセスできるようにするには、アドレスを0.0.0.0に変更して公開することをお勧めします。これにより、ローカルネットワークとパブリックIPアドレス経由でアクセスできるようになります。ほとんどの場合、ルーターでポートフォワーディングを設定する必要もあります。
ポートをインターネットに公開すると、インターネット上の誰もがノードを制御できるようになるため、慎重に行ってください。悪意のあるアクターがノードにアクセスしてシステムをダウンさせたり、クライアントをウォレットとして使用している場合は資金を盗んだりする可能性があります。
これを回避する方法は、潜在的に有害なRPCメソッドを変更できないようにすることです。たとえば、ゲスでは、フラグ--http.api web3,eth,txpoolを使用して変更可能なメソッドを宣言できます。
RPCインターフェースへのアクセスは、エッジレイヤーAPIやNginxなどのWebサーバーアプリケーションを開発し、それらをクライアントのローカルアドレスとポートに接続することで拡張できます。ミドルレイヤーを活用することで、開発者はRPCインターフェースへの安全なhttps接続のための証明書をセットアップすることもできます。
Webサーバー、プロキシ、または外部向けRest APIをセットアップすることだけが、ノードのRPCエンドポイントへのアクセスを提供する方法ではありません。パブリックにアクセス可能なエンドポイントをセットアップするプライバシーを保護するもう1つの方法は、独自のTor (opens in a new tab)オニオンサービスでノードをホストすることです。これにより、静的なパブリックIPアドレスや開いているポートがなくても、ローカルネットワークの外部からRPCにアクセスできるようになります。ただし、この設定を使用すると、Torネットワーク経由でのみRPCエンドポイントにアクセスできるようになる場合があり、すべてのアプリケーションでサポートされているわけではないため、接続の問題が発生する可能性があります。
これを行うには、独自のオニオンサービス (opens in a new tab)を作成する必要があります。独自にホストするためのオニオンサービスのセットアップに関するドキュメント (opens in a new tab)を確認してください。RPCポートへのプロキシを備えたWebサーバーを指すか、RPCを直接指すことができます。
最後に、内部ネットワークへのアクセスを提供する最も一般的な方法の1つは、VPN接続を使用することです。ユースケースやノードへのアクセスを必要とするユーザーの数によっては、安全なVPN接続がオプションになる場合があります。OpenVPN (opens in a new tab)は、業界標準のSSL/TLSプロトコルを使用してOSIレイヤー2または3の安全なネットワーク拡張を実装するフル機能のSSL VPNであり、証明書、スマートカード、および/またはユーザー名/パスワードの認証情報に基づく柔軟なクライアント認証方法をサポートし、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ダッシュボードがあります。たとえば、ゲスの監視に関するチュートリアルを確認してください。
監視の一環として、マシンのパフォーマンスに常に注意を払うようにしてください。ノードの初期同期中、クライアントソフトウェアはCPUとRAMに非常に大きな負荷をかける可能性があります。Grafanaに加えて、htopやuptimeなど、OSが提供するツールを使用してこれを行うことができます。
参考文献
- イーサリアム・ステーキング・ガイド (opens in a new tab) - Somer Esat、頻繁に更新
- ガイド | メインネットでのイーサリアム・ステーキング用のバリデータをセットアップする方法 (opens in a new tab) – CoinCashew、頻繁に更新
- テストネットでバリデータを実行するためのEthStakerガイド (opens in a new tab) – EthStaker、定期的に更新
- イーサリアムノード用のサンプルAWS Blockchain Node Runnerアプリ (opens in a new tab) - AWS、頻繁に更新
- ノードオペレーター向けのマージFAQ (opens in a new tab) - 2022年7月
- イーサリアムの完全に検証されたノードになるためのハードウェア要件の分析 (opens in a new tab) – Albert Palau、2018年9月24日
- イーサリアムのフル・ノードの実行:モチベーションが低い人向けのガイド (opens in a new tab) – Justin Leroux、2019年11月7日
- イーサリアム・メインネットでのHyperledger Besuノードの実行:メリット、要件、およびセットアップ (opens in a new tab) – Felipe Faraggi、2020年5月7日
- 監視スタックを使用したネザーマインドのイーサリアムクライアントのデプロイ (opens in a new tab) – Nethermind.eth、2020年7月8日
