Skip to content

Remove v0 blob sidecar support (follow go-ethereum#35191): produce & store only v1 cell-proof sidecars #6927

Description

@ElFantasma

Context

go-ethereum#35191 removed v0 blob sidecar support entirely — geth now always produces and gossips v1 (EIP-7594 cell-proof) sidecars, even pre-Osaka, and rejects v0. ethrex still creates and stores v0 sidecars:

All networks ethrex targets are already post-Osaka (mainnet osakaTime ~2025-12-03; sepolia/hoodi earlier), so v0 sidecars are legacy weight.

Goal

Move ethrex to v1-only sidecars internally, matching geth:

  • create_from_blobs → always v1 (cell proofs); drop the v0 branch.
  • L2 committer (crates/l2/sequencer/l1_committer.rs:1213, Some(0)) → v1.
  • validate_cheap → require v1 (remove the pre-Osaka v0 acceptance added in fix(l1): accept v1 blob sidecars pre-osaka and relax pooled-tx size check #6919); delete the now-dead v0 verify/length branches.
  • Audit all create_from_blobs callers (defaults / None args).

Pre-Osaka Engine API paths (no recompute needed)

This is a standalone cleanup — it does not require deriving v0 proofs on demand. geth removed v0 from the pool without any v1→v0 conversion path (it explicitly prohibits proof conversion as too expensive), and handles the pre-Osaka Engine API by declining:

  • engine_getBlobsV1 — geth returns all-null for a v1-only pool; ethrex already does the same after fix(l1): accept v1 blob sidecars pre-osaka and relax pooled-tx size check #6919 (getBlobsV1 returns null for v1 bundles). No change needed here.
  • engine_getPayloadV3/V4 — geth copies cell proofs through unconverted and relies on Osaka being live so pre-Osaka blocks aren't built. ethrex is in the same position (all target networks post-Osaka), so this is a latent path unreachable in production. If we want it correct for pre-Osaka CI/private chains, the geth-consistent option is to skip v1 blob txs when building a pre-Osaka payload (upholds geth's "pre-Osaka packs only v0" invariant) — not recompute.

(Supersedes the earlier plan in #6926, which assumed on-demand v0 derivation was required; that was closed as not-planned once geth's decline-don't-derive behavior was confirmed.)

Verification

unit + EF state/blockchain + hive (devp2p, engine getBlobs, execute-blobs) + L2 integration.

Metadata

Metadata

Assignees

No one assigned

    Labels

    L1Ethereum clientengine-apiCommunication between Consensus and Executiontech debtRefactors, cleanups, etc

    Type

    No type

    Projects

    Status
    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions