Skip to content

Add commit-reveal wrapper for loadL2Executions (MEV protection via CommittedExecutionLoader)#4

Open
e3o8o wants to merge 1 commit into
eez-association:mainfrom
e3o8o:feat/committed-execution-loader
Open

Add commit-reveal wrapper for loadL2Executions (MEV protection via CommittedExecutionLoader)#4
e3o8o wants to merge 1 commit into
eez-association:mainfrom
e3o8o:feat/committed-execution-loader

Conversation

@e3o8o
Copy link
Copy Markdown

@e3o8o e3o8o commented Feb 27, 2026

CommittedExecutionLoader is a commit-reveal scheme adapted from ENS name registration to prevent builder front-running of execution table submissions.

Flow:

  1. User computes commitment = hash(executions, proof, secret)
  2. User submits opaque commitment on-chain
  3. After MIN_COMMITMENT_AGE (1 block), user reveals and loads

The contract includes 15 tests that cover deterministic commitment generation, the C/R lifecycle, replay protection and the full flow commit → reveal → cross-rollup execute.

The contract enforces timing constraints (min 1 block, max 256 blocks) and forwards verified reveals to Rollups.loadL2Executions().

This implementation acknowledges that in the current architecture the block builder typically constructs execution tables (since it requires knowing pending L1 state). Thus, making commit-reveal a stepping-stone for a future decentralized prover market where independent parties submit proven execution tables. I expounded on the idea in https://ethresear.ch/t/synchronous-composability-between-rollups-via-realtime-proving/23998/22?u=e3o8o

Add CommittedExecutionLoader — a commit-reveal scheme adapted from
ENS name registration to prevent builder front-running of execution
table submissions.

Flow:
  1. User computes commitment = hash(executions, proof, secret)
  2. User submits opaque commitment on-chain
  3. After MIN_COMMITMENT_AGE (1 block), user reveals and loads

The contract enforces timing constraints (min 1 block, max 256 blocks)
and forwards verified reveals to Rollups.loadL2Executions().

Note: In the current architecture the block builder typically constructs
execution tables (since it requires knowing pending L1 state). This
makes commit-reveal a stepping-stone for a future decentralized prover
market where independent parties submit proven execution tables.

Includes 15 tests covering:
- Deterministic commitment generation
- Commit/reveal lifecycle (success, too early, too late, wrong secret)
- Replay protection (commitment consumed after reveal)
- Builder front-running resistance
- Multi-user independent commitments
- Full flow: commit → reveal → cross-rollup execute
@e3o8o e3o8o force-pushed the feat/committed-execution-loader branch from c6535ff to a7497b2 Compare February 27, 2026 19:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant