FABRKNT
Reth Expert — 本番エンジニアリング
Reth ベースのチェーン — 拡張パターンを読む
レッスン 22 / 25·CONTENT16 分45 XP
コース
Reth Expert — 本番エンジニアリング
レッスンの役割
CONTENT
順序
22 / 25

レッスン21 — Custom payload builder(sequencer モードの block 生成)

問い

Ethereum mainnet では block を validator が consensus client 動かして execution client から pull。L2 や中央集権 sequencer chain では sequencer がそのまま block producerPayload builder が「どうやって作るか」を担う — 何を制御し、何を制御しないか?

原理(最小モデル)

  • PayloadBuilder の入出力. 入力 = Parent block / chain state / Pending tx pool / Timestamp / slot、出力 = 構築済み block("payload")。
  • 3 種の本番 builder. Default Ethereum builder(mainnet validator)+ OP payload builder(OP Stack sequencer)+ op-rbuilderflashbots/rbuilder、OP 向け高性能 external block builder)。
  • L2 builder の 5 つの追加責務. ① Deposit tx 強制 include(L1 oracle queue から)+ ② FIFO or priority-fee ソート + ③ L1 block oracle slot 更新(最初の state write)+ ④ L2 gas limit でキャップ + ⑤ Sequencer signature でタグ付け。
  • Builder と executor の境界. Builder = block に何が入るか を制御、Executor = block に入っているもの を実行。
  • MEV 3 立場. MEV-blind(厳格 FIFO)/ MEV-aware public(MEV-share bid)/ MEV-extracting(内部 searcher)。chain の MEV policy は payload builder ソースに現れる
  • op-rbuilder. Bundle merging + Sealing strategy + Builder API、OP Stack 向け本番グレードリファレンス。

具体例

3 種 builder:

Builder場所用途
Default Ethereum buildercrates/payload/builder/Mainnet validator
OP payload buildercrates/optimism/payload/OP Stack sequencer
op-rbuilderflashbots/rbuilderOP Stack 向け高性能 external builder

L2 builder の 5 責務:

  1. Deposit tx を block 先頭に強制 include(既知の L1 oracle queue から)
  2. 残りを FIFO か priority-fee でソート
  3. 最初の state write として L1 block oracle storage slot を更新
  4. L2 gas limit で block をキャップ(mainnet limit ではない)
  5. Sequencer signature で block にタグ付け(一部 L2 は sequencer identity にコミット)

MEV 3 立場:

Position意味
MEV-blind厳格 FIFO、tx 意味に踏み込まない一部小規模 L2 が主張
MEV-aware public公開 order flow、builder が MEV-share 風 bid 受けるOP Stack + op-rbuilder
MEV-extractingSequencer が内部 searcher 運用不透明、中央集権 chain は何でも可能

op-rbuilder の特徴:

  • Bundle merging(private order flow + public mempool)
  • Sealing strategy(greedy、並列化可能)
  • Builder API(第三者 bundle 提出可能)
  • オープンソースで「本物の」本番 block builder に最も近い

Tempo 予測:

  • 決済認識型 payload builder — 決済 tx が汎用 tx より優先される可能性
  • Builder レベル merchant 認可フィルタ
  • merchant 単位レート制限
  • ローンチ時公開 mempool なし(sequencer-private)

失敗例(誤解)

「mempool を FIFO に流せば sequencer 完成」— 間違い。3 攻撃が抜けている: ① tx 提出の latency 攻撃(低レイテンシピアが優位)、② toxic order flow(malicious tx が次の被害者を釣る)、③ reorg 攻撃(sequencer 自身が短期 reorg)。FIFO + 防御層が必要

「builder と executor は同じこと」— 間違い。Builder = 何を入れるか(順序 + フィルタ)、Executor = 入っているものをどう走らせるか(state 遷移)。順序は builder が決定 + executor が忠実に実行。

「MEV-blind が常に倫理的」— 半分間違い。MEV-blind 主張でも実際は order flow の見え方で抽出可能(mempool 公開 vs sequencer 専有)。公開された主張ではなく builder source code が真実

🛑 予測。 ジュニアエンジニアが「mempool を FIFO に流せば sequencer 完成」と言う。そこに考慮が抜けている攻撃を 3 つ。(答え: ① tx 提出 latency 攻撃 — 低レイテンシピアが MEV 機会を独占(先着 FIFO で)、② toxic order flow — bait tx が後続 tx の被害者を釣る、sequencer が一律 FIFO だと罠が成功、③ reorg / sequencer 自身の MEV — sequencer 自身が短期 reorg で過去 block を書き換えて利益抽出(中央集権なので何でもできる)。FIFO は 公平に見えて公平でない — 防御層必要。)

ステップで組み立てる

Step 1: 3 種 builder を即答

Default / OP payload / op-rbuilder(external)。

Step 2: L2 builder の 5 責務

Deposit tx 強制 / FIFO or priority-fee / L1 oracle slot 更新 / L2 gas cap / Sequencer signature。

Step 3: Builder vs Executor の境界

Builder = 何を入れるか(順序 + フィルタ)、Executor = 入っているものを実行。

Step 4: MEV 3 立場の判別

source code を読む — extend_builder_with_mev_share のような feature flag、external builder 統合の有無、internal searcher hook。

Step 5: op-rbuilder を読む準備

OP Stack 向けの「本物の」本番 builder 参考実装、Bundle merging + Sealing + Builder API。

答え合わせ

  • 3 攻撃(latency / toxic flow / reorg)が FIFO で防げない理由: ① latency は network 層の話 → application 層の順序付けでは介入不能、低レイテンシピアが mempool の自分の tx を先に入れる、② toxic flow は順序付けロジックが意味解釈しない FIFO だと罠 tx + 被害者 tx を順に通す、③ sequencer 自身の reorg は順序付けではなく consensus 層の問題、中央集権 sequencer は何でも可能。FIFO は平等の幻想、防御層必要。
  • Tempo の予測差分(5 つ): 決済認識型優先 / merchant 認可フィルタ / merchant rate limit / 公開 mempool なし / sequencer signature。各々が payload-builder crate の trait impl として現れる。
  • MEV policy が source code に現れる理由: feature flag や external builder 統合は public API 露出 / 内部 searcher hook は private 関数だが GitHub source で見える / Bundle merging の有無 / Order flow privacy 設定。主張ではなくコードを読む — 「MEV-blind」と言いながら internal_searcher::bid() が呼ばれているかもしれない。

合格基準

  • 3 種 builder を即答できる。
  • L2 builder の 5 責務を言える。
  • Builder vs Executor の境界を 1 文で説明できる。
  • MEV 3 立場を判別できる。
  • 3 攻撃(latency / toxic / reorg)が FIFO で防げない理由を言える。

まとめ(3行)

  • Payload builder = block 内容(順序 + フィルタ)を制御、Executor = 内容を実行。Mainnet validator vs L2 sequencer で「誰がトリガーするか」が違うだけ。
  • L2 builder の 5 責務(Deposit tx / FIFO or priority-fee / L1 oracle slot / L2 gas cap / Sequencer signature)+ MEV 3 立場が source code に現れる。
  • op-rbuilder が OP Stack 向け本番グレードリファレンス、Bundle merging + Sealing + Builder API。