ChainSafe / ChainSafe/lodestar

EIP-8025: optional execution proofs

Open
#9,016 0 comments 0 reactions 0 assignees View on GitHub
epic
Dominant language
TypeScript
Stars
1.4k
Forks
483
Avg merge
1d 18h
Merged PRs (30d)
156

Description

Tracking issue for [EIP-8025: Optional Execution Proofs](https://ethereum-magicians.org/t/eip-8025-optional-execution-proofs/)

Work was initially being done by @lodekeeper on [optional-proofs branch](https://github.com/ChainSafe/lodestar/compare/unstable...optional-proofs)

## TODOs

- [ ] align types. Lodestar currently only has `ExecutionProof`. We need also [`SignedExecutionProof` and `PublicInput`](https://github.com/ethereum/consensus-specs/blob/26b2af1b149f25da174365649276c1af3c021522/specs/_features/eip8025/beacon-chain.md#containers)
- [ ] update everywhere to use `SignedExecutionProof`, keyed by `new_payload_request_root` instead of `blockRoot`
- [ ] P2P - Add the [spec's REJECT/IGNORE rules](https://github.com/ethereum/consensus-specs/blob/master/specs/_features/eip8025/p2p-interface.md#the-gossip-domain-gossipsub) (BLS sig check, active validator check, dedup by (request_root, proof_type, validator_index))
- [ ] [Proof engine](https://github.com/ethereum/consensus-specs/blob/master/specs/_features/eip8025/proof-engine.md#new-verify_execution_proof) - Right now we have [`IZkvmExecutionProofVerifier` interface](https://github.com/ChainSafe/lodestar/blob/fe88e1eec51fc59b5ce88386cd7c9f75adaeafa2/packages/beacon-node/src/chain/validation/executionProofVerifier.ts#L13-L15):

```typescript
export interface IZkvmExecutionProofVerifier {
verifyProofs(input: VerifyExecutionProofsInput): VerifyExecutionProofsResult;
}
```

which is implemented by [`DummyZkvmExecutionProofVerifier` in the same file](https://github.com/ChainSafe/lodestar/compare/unstable...optional-proofs#diff-adfc195b060219919ede131505c8629104335e6b34edcb09eab0204b963411b6R26) and its `verifyProofs` just ensures 3 things:
1. a non-empty proof data,
2. proof blockRoot == beacon block root,
3. and proof blockHash == execution payload block hash

We need a fully featured proof engine as linked above.

Contributor guide

Open the contributing guide

Research direction

Start with the EIP-8025 consensus-specs links and the existing executionProofVerifier.ts interface, then compare the optional-proofs branch. Map the TODOs for proof types, request-root usage, P2P reject/ignore rules, and proof-engine behavior. Done means the implementation matches the linked EIP interfaces and rules rather than the current dummy checks.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
blockchain
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.