レッスン9 — Revmという「実行エンジン」
問い
Revm = Rust 製の EVM 実行エンジン。Reth、Foundry、Hyperliquid、Tempo、Berachain — Rust エコシステムで「EVM を実行する」必要がある場所すべてが Revm を使う。なぜ Revm か、ライブラリとして何を提供するか?
原理(最小モデル)
- Revm はライブラリ. チェーンでもノードでもない、EVM の実行エンジン のみ、Reth が状態 + コンセンサスを足し、Foundry がテストハーネスを足す。
- モジュラー設計. インタープリター / 命令テーブル / Database トレイト / Inspector がそれぞれ独立、差し替え可能 = Hyperliquid がカスタム precompile を足したり、MEV ボットが Inspector で観測したり。
- Database トレイト. state を供給する抽象、HashMap(テスト)/ JSON-RPC(メインネットフォーク)/ MDBX(本番)全部同じトレイトで動く。
- Foundry / Reth / OP-Reth / zkVM / MEV ボット採用. Rust EVM が必要な場所すべてが Revm を使う、エコシステムの共通基盤。
- Inside Revm コース(中級). add Opcode / 命令テーブル / Database trait を 1 行ずつ歩く深掘り、本レッスンはその入口。
具体例 + ステップで組み立てる
Revmという「実行エンジン」
ここまででAlloy(外側のRPC)と、EVMがスタックマシンであることを学んだ。次の主役は Revm、実際にOpcodeを実行する エンジン そのものである。
Revmの位置づけ
+----------------+
| Reth | ← フルノード(同期・保存・コンセンサス)
+----------------+
| Revm | ← 実行エンジン(このレイヤーをこれから学ぶ)
+----------------+
| Database / DB | ← 状態(Trie、KVS)
+----------------+
Revmの本物の高レベルAPI
Revmは以下を公開(crates/revm/src/lib.rs):
| 型 | 役割 |
|---|---|
MainnetEvm | 事前構築されたEthereumメインネットEVM |
ExecuteEvm, ExecuteCommitEvm | トランザクション実行(commit = 状態変更も書き戻し) |
SystemCallEvm | システムレベル呼び出し(例:Cancun以降のBEACONROOT) |
InspectEvm, InspectCommitEvm | トレース版 — 同じ実行、フック付き |
Context | 実行環境(block、tx、cfg) |
Journal, JournalEntry | 状態変更追跡(revert用) |
Database, DatabaseRef, DatabaseCommit | ストレージインターフェース(中級で扱う) |
Inspector | 実行にフックするトレイト |
要点:Revmは 設計からしてモジュラー。ExecuteEvm、InspectEvm、ExecuteCommitEvm は別のEVMではなく、同じエンジンを異なるレイヤーで組み合わせた もの。必要なものだけ選ぶ。
Revmが提供するもの
- EVM 命令の解釈(Interpreter)
- 状態アクセスのトレイト(
Database) - ガス計算と例外処理
- ログとトレース (Inspector経由)
なぜRevmが「業界標準」になったのか
| 採用先 | 役割 |
|---|---|
| Foundry | Solidityのテストランナー・フォークシミュレーション |
| Reth | フルノードの実行エンジン |
| OP-Reth / Tempo | L2やApp-chainの基盤 |
| zkVM(Risc0等) | 証明可能なEVM実行 |
| MEV/シミュレーション | 1msでも速く取引を再現したい場面 |
「ライブラリ利用しやすい」「Rustで組み込みやすい」「カスタマイズ容易」という3点が、ほぼ独占を生んだ理由である。
次のステップ
Revmは「動かすための部品」が分かれば、コードを読み始められる。次のレッスン で Foundry(日常的に使う Rust EVM ツールチェイン)を扱い、その後 中級 ティアで Interpreter フォルダに入る。
📺 関連動画
xRuDWTWuxKA | Dragan Rakita — Revm Endgame (Devcon SEA 2024)
まとめ(3行)
- Revm = Rust 製 EVM 実行エンジン(ライブラリ)、Reth / Foundry / Hyperliquid / Tempo / Berachain 等が共通基盤として採用。
- モジュラー設計(インタープリター / 命令テーブル / Database / Inspector 独立)、Database トレイトで HashMap / JSON-RPC / MDBX を同じ trait で扱う。
- 中級 Inside Revm コースで内部を深掘り、次は Foundry ツールチェイン紹介で Solidity 側の手触り。