本文へ移動
← 全コースを見る
Reth トピック

Reth の NodeBuilder

NodeBuilder は、Reth ベースのチェーンをバイナリにする仕組みです。NodeConfig(ChainSpec を含む)、データベース、タスク実行環境を受け取り、続いてノードの型とコンポーネント(プール・ネットワーク・payload builder・EVM・コンセンサス)と RPC などのアドオンを受け取って、ノードを起動します。

コンポーネントの各スロットが、独自チェーンが Reth と違う部分になります。コンセンサス・EVM 設定・payload builder を差し替え、残りは Reth のまま使います。

API の早見表

NodeConfig::new(chain) / NodeConfig::test().dev().with_chain(spec)
ノードの設定(chain spec・datadir・RPC・ネットワーク・dev モード)です。with_chain・with_rpc・with_datadir_args で各部を設定します。
NodeBuilder::new(config).with_database(db).with_launch_context(executor)
データベースとタスク実行環境を渡します。テストでは testing_node(executor)(feature test-utils)が一時データベースで両方を済ませます。
.node(EthereumNode::default())
既製のノードから型・コンポーネント・アドオンを一度に受け取ります。
.with_types::<N>().with_components(…).with_add_ons(…)
同じ手順を 1 つずつ行う書き方で、コンポーネントを 1 つだけ(コンセンサス・EVM・payload builder)差し替えられます。
.install_exex(id, f) / .extend_rpc_modules(f) / .on_node_started(f)
起動前に付けるフックです。Execution Extension、追加の RPC 名前空間、ノードが動き出したときのコールバック。
.launch().await → NodeHandle { node, node_exit_future }
ノードを起動します。node から provider・プール・ネットワークと、アドオンのハンドル経由で RPC レジストリを取り出せ、node_exit_future を await すると終了まで動き続けます。

paradigmxyz/reth の eb4c15e(2026-04-07)で確認: crates/node/builder/src/builder/mod.rs, crates/node/builder/src/handle.rs, crates/node/builder/src/node.rs, crates/node/core/src/node_config.rs

このトピックのレッスン