EIP-8025 -- Honest Prover¶
Note: This document is a work-in-progress for researchers and implementers.
Table of contents¶
- Table of contents
- Introduction
- Helpers
- New
get_execution_proof_signature - Constructing
SignedExecutionProof - Honest prover relay
Introduction¶
This document represents the prover guide accompanying EIP-8025. Provers are whitelisted network participants who voluntarily generate and submit execution proofs without direct protocol-level compensation. They provide a public good by enabling stateless validation during the optional proof phase.
Note: Provers are a transitional mechanism. In future mandatory proof forks, builders will be required to produce and gossip execution proofs as part of their block production duties, and the prover role will be deprecated.
Note: This specification is built upon Fulu and imports proof types from proof-engine.md.
Helpers¶
New get_execution_proof_signature¶
Constructing SignedExecutionProof¶
An honest prover who has been whitelisted and wants to generate execution proofs
for a BeaconBlockBody performs the following steps:
- Extract
NewPayloadRequestfromBeaconBlockBody: -execution_payload = body.execution_payload-versioned_hashes = [kzg_commitment_to_versioned_hash(c) for c in body.blob_kzg_commitments]-parent_beacon_block_root = state.latest_block_header.parent_root-execution_requests = body.execution_requests - Create
ProofAttributeswith desired proof types. - Call
proof_gen_id = proof_engine.request_proofs(new_payload_request, proof_attributes)to initiate proof generation. - The proof engine generates proofs asynchronously and delivers them to the
prover via
POST /eth/v1/prover/execution_proofs. Each proof is delivered with its associatedproof_gen_idto link it to the original request. - Upon receiving each
ExecutionProofwith itsproof_gen_id: - Validate the proof matches a pendingproof_gen_id. - Setmessageto theExecutionProof. - Setprover_pubkeyto the prover's public key. - Sign the proof usingget_execution_proof_signature(state, proof, prover_privkey). - Broadcast theSignedExecutionProofon theexecution_proofgossip topic.
Honest prover relay¶
A prover relay is a trusted intermediary that accepts unsigned execution proofs from proof engines and signs them for broadcast. The relay's public key MUST be in the prover whitelist.
When a prover relay receives an unsigned ExecutionProof via
POST /eth/v1/prover/execution_proofs:
- Validate that
proof_datais non-empty. - Verify the execution proof is valid using
proof_engine.verify_execution_proof(proof). - Check the proof is not a duplicate (same
new_payload_request_root,proof_type). - If valid and not a duplicate:
- Create a
SignedExecutionProofwith the relay's public key and signature. - Broadcast on theexecution_proofgossip topic.