Skip to content

Add in-process ERE verification for execution proofs - #49

Draft
frisitano wants to merge 6 commits into
unstablefrom
review/proof-engine-ere-bindings
Draft

frisitano wants to merge 6 commits into
unstablefrom
review/proof-engine-ere-bindings

Conversation

@frisitano

@frisitano frisitano commented Sep 17, 2026

Copy link
Copy Markdown
Collaborator

Important

This PR is stacked on sigp/lighthouse#10063 and should be reviewed only after that PR has merged. Until then, this diff also contains its execution-proof refactor.

After the upstream PR lands, this branch will be rebased onto unstable and this PR will be marked ready for review.

Issue Addressed

Follow-up to sigp/lighthouse#10063.

This adds production verification for EIP-8025 execution proofs using ERE. It also incorporates the proof-type assignments and verification keys merged in eth-act/lighthouse#50, aligned with zkBoost and ERE v0.17.1.

Proposed Changes

  • Replace the runtime HTTP proof-engine integration with in-process ERE verification.
  • Align the seven assigned proof types with zkBoost: Ethrex on OpenVM, SP1, and Zisk; reth on OpenVM, SP1, and Zisk; and Zesu on Zisk.
  • Configure built-in program verification keys for every assigned proof type registered by eth-act/ere-guests v0.17.0.
  • Make ProofEngine a cheaply clonable handle backed by Arc<dyn ProofEngineT>.
  • Run proof verification through spawn_blocking so CPU-bound verification does not block the async runtime.
  • Add --proof-engine [PATH], using the built-in verifier configuration when no path is supplied and a JSON ProofEngineConfig otherwise.
  • Add safe ownership wrappers for the ERE C API, including cleanup of malformed error outputs.
  • Require exact public-output representations: 256 bytes for OpenVM and Zisk, and an exact byte match for SP1.
  • Add end-to-end fixtures for all six published Ethrex and reth proof types. zkBoost does not currently publish a Zesu proof fixture, so Zesu is covered by configuration tests only.
  • Provide MockProofEngine behind the test-only test-utils feature.

Additional Info

The ere-verifier feature uses the checksummed ERE v0.17.1 native verifier artifacts. It currently supports:

  • aarch64-apple-darwin
  • x86_64-unknown-linux-gnu
  • aarch64-unknown-linux-gnu

Proof fixtures are embedded only in the integration-test target and are not included in the production Lighthouse binary.

The Arc<dyn ProofEngineT> handle adds one virtual call per verification and atomic reference counting when cloned. This overhead is negligible compared with proof verification, and the handle itself does not serialize concurrent calls.

Validation

  • cargo check
  • cargo test -p proof_engine --features ere-verifier (20 tests)
  • cargo test -p proof_engine --features test-utils (6 tests)
  • FORK_NAME=fulu cargo test -p beacon_chain --test beacon_chain_tests --features fork_from_env envelope_verification::lookup_imports_gloas_payload_after_restart -- --exact
  • cargo test -p beacon_chain --test beacon_chain_tests --features fork_from_env --no-run
  • cargo fmt --all -- --check
  • cargo sort --workspace --check
  • git diff --check

Reviewer Focus

After the upstream PR has merged, the main review areas are:

  • ERE FFI ownership and error handling.
  • Public-value construction and exact-length validation.
  • Proof-type-to-verifier configuration and built-in verification keys.
  • The Arc-backed proof-engine handle and spawn_blocking boundary.
  • End-to-end verification coverage across the six available Ethrex and reth fixtures.

@frisitano
frisitano force-pushed the review/proof-engine-ere-bindings branch from bb1af75 to 1fd27de Compare September 18, 2026 11:16
frisitano and others added 6 commits September 18, 2026 19:24
Separate signed gossip envelopes from locally reconstructed proof-engine input and use progressive versioned hashes for Gloas and Heze.
* Align execution proof types with zkBoost

* Clarify ERE verifier and guest versions
@frisitano
frisitano force-pushed the review/proof-engine-ere-bindings branch from 1fd27de to 19bdf39 Compare September 18, 2026 11:26
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