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 - Execution proof
- Constructing the
SignedExecutionProof - Honest prover relay
Introduction¶
This document represents the prover guide accompanying EIP-8025. Provers are active validators 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¶
Execution proof¶
Constructing the SignedExecutionProof¶
An honest prover who is an active validator and wants to generate execution
proofs for a BeaconBlock performs the following steps:
- Extract
NewPayloadRequestfromBeaconBlock: -execution_payload = block.body.execution_payload-versioned_hashes = [kzg_commitment_to_versioned_hash(c) for c in block.body.blob_kzg_commitments]-parent_beacon_block_root = block.parent_root-execution_requests = block.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. - Setvalidator_indexto the prover's validator index. - 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 MUST be an active validator.
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 validator index and signature. - Broadcast on theexecution_proofgossip topic.