FABRKNT
Reth 入門 — Rust Ethereum の世界へ
なぜRust Ethereumスタックなのか
レッスン 7 / 11·CONTENT10 分20 XP
コース
Reth 入門 — Rust Ethereum の世界へ
レッスンの役割
CONTENT
順序
7 / 11

レッスン6 — Reth vs Geth / Alloy vs ethers-rs — 置き換えの根拠

問い

Reth は Geth(Go)の置き換えを狙う、Alloy は ethers-rs(先行 Rust ライブラリ)の置き換えを狙う。なぜ既存があるのに置き換えるか? 性能 + 設計 + メンテナンスの 3 軸で根拠を整理。

原理(最小モデル)

  • Reth vs Geth — 性能差. Reth の sync は Geth より 2-3 倍速い(実測ベンチ)、Rust の所有権 + ゼロコスト抽象化 + 並列化容易が原因、メモリ使用も少ない。
  • Reth vs Geth — モジュラリティ. Reth SDK でフルノードを SDK 化、precompile / state machine / consensus を差し替え可能 → Hyperliquid が perp 専用 L1、Tempo が決済 L1 構築、Geth は monolithic で改造範囲限定。
  • Alloy vs ethers-rs — 設計. Alloy は Network ジェネリック(Ethereum / Optimism / カスタム L2 横断)+ Provider trait + Filler 層状合成、ethers-rs は Ethereum 固定 + 内部ハードコード、拡張性で根本差。
  • Alloy vs ethers-rs — メンテナンス. ethers-rs は元メンテナが Foundry チーム抜けて停滞、Alloy は Paradigm 中心の活発開発(commit 頻度 + issue 応答)、エコシステムが移行中。
  • 置き換えタイミング. 新規プロジェクトは Reth + Alloy 推奨、既存 Geth / ethers-rs プロジェクトは移行コスト見合いで段階的に、Foundry / Hyperliquid / 主要 rollup は移行済み。

具体例 + ステップで組み立てる

Reth vs Geth / Alloy vs ethers-rs — 置き換えの根拠

プロジェクトの地図は前レッスンで描いた。次の問いはこれである。なぜチームは古い選択肢から積極的に移行するのか。 Geth は 10 年間 Ethereum を走らせ、ethers-rs は長らく Rust Ethereum ライブラリの定番だった。それでも新しいインフラは Reth と Alloy 上に作られる。その理由を、置き換え1件ずつ見る。

1. Reth vs Geth

Geth (Go-Ethereum) は元祖の execution client である。2015 年から mainnet を走らせ続け、現在も execution client シェア 40〜50% を握り、開発チームも強い。Reth は「より良い Geth」ではない。 Geth が構造的にできないことで価値を出す、別種の設計である。

性質GethRethなぜ重要か
言語GoRustCargo workspace で revm をライブラリとして単独利用できる。Geth の execution engine はノードに溶接され再利用しにくい。
アーキテクチャ強結合モジュラな crate (revm、alloy、reth-stages、reth-network、reth-rpc など)ノード全体ではなく 1つの crate(例: カスタム executor)だけを fork できる。App-chain / L1 fork パターンの中核である。
状態ストレージLevelDB ベース、進化中MDBX (メモリマップ B+tree)コンパクション負荷下でも読み取りレイテンシが安定する。Geth は archive node のコンパクション停滞に長く苦戦してきた。
実行エンジンgo-ethereum のインタープリターrevm (Rust、ライブラリ志向)revm は Foundry、Hyperliquid の HyperEVM、Rustベース MEV スタックで再利用される。Geth のインタープリターは Geth 外での消費がほぼない。
同期戦略Snap syncStaged sync (10 段パイプライン)バッチ全体で I/O を償却するため、初期同期が速く、カスタムステージで拡張もしやすい。
拡張 API公式にメンテされた仕組みなしExEx (Execution Extensions) — インプロセスの Rust フックノード 内側で ノード速度のインデクサ・MEV ボット・リスクエンジンを動かせ、RPC を経由しません。Geth には等価物がありません。
チェーン fork困難 (Geth 全体を fork する必要)容易 (Reth SDK で 1 コンポーネントだけ差し替え)Hyperliquid の HyperEVM、Tempo、MegaETH、Base (OP-Reth)、Berachain がこのパターンで作られる。
再利用範囲Geth のコードは Geth が使うrevm、alloy、reth-* crate は 100 超のプロジェクトで再利用触れる Rust EVM ツールの多くは、これら crate のいずれかの上に乗る。

決済優先の独自トランザクション順序付けを持つL1を ship する場面を想像してほしい。fork するのはRethで、しかも全体ではない。Reth crate に依存したまま PoolPayload だけを差し替える。Geth なら全コードベースをforkし、長期リベース税と巨大コード保守を抱える。これを Tempo が実践し、前レッスンで挙げた Reth ベース L1 も同型を採る。

Reth は Geth を退位させるために作られたのではない。 次世代チェーンが上に乗る 基盤 として作られた。Reth と Geth はそもそも別カテゴリである。

2. Alloy vs ethers-rs

ethers-rs は 2020〜2024 年に Rust Ethereum ライブラリの定番だった。2024 年半ば、メンテナ(Georgios Konstantopoulos / Paradigm)が Alloy 移行を進めるため ethers-rs を deprecate した。これは美的判断ではなく、ethers-rs が構造的に届かない性質を狙った再設計である。

性質ethers-rsAlloyなぜ重要か
モジュラ性モノリシックな crate細かい crate 群必要分だけ依存に加えられ、Cargo依存ツリーが縮む。
非同期スタイルasync-trait(呼び出しごとに Box 確保)ネイティブ async trait + ProviderCall (確保なし)ホットパス(MEV、RPC)で呼び出しごとの確保が減り体感差が出る。
マルチチェーンEthereum 専用型Network トレイトで抽象化同じ Provider コードが Ethereum / Optimism / 独自L2で動く。
型のエルゴノミクス独自型、revmと別系列revm の AddressU256B256 をそのまま使用alloy + revm + reth で型がそろい、変換ボイラープレートが減る。
ウォレット / 署名者の合成単一Provider設計に密結合Signer + FillerProviderBuilder で重ねる署名・nonce管理・ガス推定を分離して合成できる。
手続きマクロ (sol!)外部 crate、結合は緩い第一級、alloy 全体で使われるSolidity 型を Rust 側でコンパイル時に定義でき、手書きの ABI struct が要りません。
メンテナンスParadigm 内の 1 人、時間も限定Paradigm が予算をつけ、コミュニティも参加開発が活発で、PR の回りが速く、ロードマップも明確。

2026年に新しい MEV searcher を書く立場を想像すると、Alloy を選ぶ理由は明確である。(a) revm と型共有できる、(b) クラウドKMSやHWウォレットを独自 Signer として差し込める、(c) 型パラメータ1つで Optimism / Base / 任意Reth系L2へ展開できる、(d) ethers-rs に Paradigm 由来の新規修正が来ない。ethers-rs に残る理由は惰性が中心 である。

3. 2 つの置き換えに共通するパターン

Geth と ethers-rs が悪いわけではない。Rust EVM エコシステムが若かった時代に、「合成可能性」より「まず動かす」を優先した設計の産物である。

Reth と Alloy は同じ設計判断を共有する。完全性より合成性である。 どちらも内部を crate として切り出し、下流プロジェクトが混ぜて差し替えられる。Geth と ethers-rs は完成品利用前提、Reth と Alloy は拡張基盤前提で設計される。

これが、このカリキュラム後半が存在する構造的理由である。続く Inside Revm / Reth / Alloy は、その基盤を読むスキルを教える。 読めれば作れる。それが Geth と ethers-rs が構造的に提供しにくかったレバレッジである。

このレッスン後に残すべき答えは2つである。決済優先L1チームが Geth ではなく Reth を fork する理由、そして 2026 年の新規 MEV searcher が ethers-rs ではなく Alloy を選ぶ理由である。どちらも上表に答えがある。

次へ

本レッスンで Module 0 は完了: レッスン 0 の systems-engineering 枠、プロジェクト map(Reth / Revm / Alloy)、Solana / Solidity onramp、そして本レッスンの substitution case。Module 1 で Rust をマシンにセットアップ、ソース読みを始められる状態にする。最初の alloy-rs/alloy ファイルを開いた瞬間から、レッスン 0 の枠が報われ始める。

まとめ(3行)

  • Reth vs Geth = 2-3 倍速い + SDK モジュラリティ(Hyperliquid / Tempo 等で実例)、Alloy vs ethers-rs = Network ジェネリック + 活発メンテナンス。
  • 新規は Reth + Alloy 推奨、既存は移行コスト見合い、Foundry / Hyperliquid / 主要 rollup は移行済み = エコシステムが Rust スタックに動いている。
  • なぜ学ぶか(業界トレンド + キャリア複利 + 性能 + 設計)が固まった、次モジュールで Rust 環境セットアップ。