Skip to content

Conversation

@kevaundray
Copy link

Issue Addressed

Which issue # does this PR address?

Proposed Changes

Please list or describe the changes introduced by this PR.

Additional Info

Please provide any additional information. For example, future considerations
or information useful for reviewers.

@kevaundray
Copy link
Author

Network tests need to be modified now that we are post Fulu -- also checking to see if any other behaviour has changed

@kevaundray
Copy link
Author

Having a proof generating node also verify the execution payload via an EL introduces edge cases in the logic:

  • We don't have the invariant that all nodes on the execution proof subnet have the proof when they import a block
  • This is an issue for sync because we need to filter on nodes who say they have the block and are not proof generating nodes. It's likely that these nodes will have the proofs for blocks far in history, but the closer we get to the tip, the more likely they will have imported the block and have not seen the proofs
  • The reason this invariant was introduced is because we need debug_executionWitness from an updated EL on the block we want to generate proofs for. Removing the EL from the CL that has denoted themselves as a proof generating node, means we need to have another CL that is attached to an EL that may be out of sync with the proof generating CL.
    - This is likely okay and we can have the CL that is attached to the EL for debug_executionWitness have higher bandwidth; sentry node.

* - update tests to have special zkvm nodes
- check for zkvm capability in the enr
- execution_proof_lookup_request filters zkvm nodes

* remove proof generation service

* cargo fmt

* fix

* update proof-gen-types

* endpoints exposed

* add basic tests

* cargo fmt

* remove executionWitness
@kevaundray
Copy link
Author

kevaundray commented Dec 21, 2025

One scenario, we should explicitly document is what happens when a zkVM enabled CL falls behind and needs to catch up; pre and post glamsterdam. Noting that pre glamsterdam, the node will be in optimistic sync mode. Post glamsterdam, we'd want to know what happens when proving takes longer than the alloted deadline

)

* execution-witness

* update dummyEL wrapper

* Merge Execution Witness Sentry into ExecutionProofsByRange (#9)

* add execution proofs by range and persist proofs in blobs_db

* use the same caching mechanism for proofsbyrange that columnsbyrange uses

* also fix proofsbyroot to hit da_checker then store

* cargo fmt

* lint fix

* fmt

* update database schema

* small cleanup

* update configs

* update to ignore new geth flags

* cargo fmt

* cargo lint

* sync: wire execution proofs through range/backfill sync

- track execution proof requests in block coupling logic
- add proof-by-range retries with zkvm peer selection
- skip proof processing when DA cache already satisfies minimum
- add testss

* make cargo fmt

* cargo sort

* update kurtosis script

* update cargo lock
@kevaundray
Copy link
Author

TODO: We can remove execution-witness-sentry

@kevaundray
Copy link
Author

I've squash merged in different PRs/branches into this branch

@kevaundray
Copy link
Author

dummy EL kurtosis PR for kurtosis added here: ethpandaops/ethereum-package#1276

@kevaundray
Copy link
Author

Note:

We will copy all of this over to a new branch called optional-proofs-old, then reset this branch.

@frisitano will eventually make a new PR with the new changes in the consensus-specs that would initially target unstable for ease of development, then target the optional-proofs branch (which should be easy since we've reset it to unstable)

Nothing urgent here, just a notice for anyone following this branch and for future reference

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.

2 participants