ChainSafe / ChainSafe/lodestar
EIP-8025: optional execution proofs
- 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
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