Skip to content

Conversation

@kevaundray
Copy link
Contributor

@kevaundray kevaundray commented Sep 15, 2025

This PR adds the scaffolding needed to have zk stateless clients. Most of these changes have been integrated here: sigp/lighthouse#7755

Notes

  • The cryptography part has been stubbed out/implemented in a insecure way, it might be a non-trivial effort to have zkEVM proofs properly working even for tests because they generally need GPUs to create
  • This is the variant of executionProofs that does not require a fork upgrade

TODO

  • rebase ontop of gloas (will follow up with this)

@kevaundray
Copy link
Contributor Author

(This still requires beacon-chain and p2p-interface changes)

@ethereum-code-reviewer

This comment was marked as spam.

@ethereum-code-reviewer

This comment was marked as spam.

@ethereum-code-reviewer

This comment was marked as spam.

@ethereum-code-reviewer

This comment was marked as spam.

Verify an execution proof against a payload header using zkEVM verification.
"""

# Note: proof.beacon_root verification would be done at a higher level
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is not checked anywhere and is mostly useful for mapping the pending beacon block to a payload

"""
# `retrieve_execution_proofs` is implementation and context dependent
# It returns all the execution proofs for the given payload block hash
execution_proofs = retrieve_execution_proofs(block_hash)
Copy link
Contributor Author

@kevaundray kevaundray Sep 16, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

copied this from the blobs file -- proofs will appear from the ether. Note that zkevm.md has proof generation logic, though its not hooked up to generate_execution_proof

# Verify all execution proofs
for proof in execution_proofs:
# Get EL program from proof system ID
# TODO: The proof system ID is really an ID for a proof system and EL combination
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TODO is noting that proofID has a 1-1 mapping with subnet which is really a 1-1 mapping between EL and zkEVM combinations. Not just the proof system being used


```python
def process_execution_payload(
state: BeaconState, body: BeaconBlockBody, execution_engine: ExecutionEngine, stateless_validation: bool = False
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

main change is additional stateless_validation parameter. When set to false, nothing changes from the fork it was built upon

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This file is more akin to an api file than a naive impl. This is different to polynomial-commitments whereby it actually has a naive impl of proof generation and creation. Its not really possible in this case, but we can mock the behaviour

@ethereum-code-reviewer

This comment was marked as spam.

@kevaundray
Copy link
Contributor Author

There should be a note on the fact that the specs uses one EL program but implementations should/can use multiple EL programs for their K out of N assumption

@kevaundray
Copy link
Contributor Author

The difference between an ExecutionProof and a ZkProof is a bit confusing; In the code an ExecutionProof is just a ZKProof but with added context about the CL

Copy link
Contributor Author

@kevaundray kevaundray left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

.

@kevaundray kevaundray changed the title feat: Add specs for zkEVM feat(zkEVM): Add specs for optionally validating the execution payload using zkEVM proofs Sep 16, 2025
@kevaundray kevaundray marked this pull request as ready for review September 16, 2025 22:34
@jtraglia jtraglia added the eip8025 Optional Execution Proofs label Sep 17, 2025
Copy link
Member

@jtraglia jtraglia left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good enough for an initial spec to me! Thanks @kevaundray, exciting stuff. I expect there will be follow-up PRs with improvements/integrations. But no rush on that.

@jtraglia jtraglia changed the title feat(zkEVM): Add specs for optionally validating the execution payload using zkEVM proofs Add specs for EIP-8025 (Optional Execution Proofs) Sep 17, 2025
@jtraglia jtraglia merged commit 72424aa into ethereum:master Sep 17, 2025
15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

eip8025 Optional Execution Proofs

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants