Commit c6c1688
## Motivation
Implements devnet4
([leanSpec#449](leanEthereum/leanSpec#449)):
separate attestation and proposal keys for validators, replacing the
single-key model and removing the proposer attestation wrapper.
## Description
### Phase 1: Types (#230)
- `Validator` gains `attestation_pubkey` + `proposal_pubkey` (replaces
single `pubkey`)
- `SignedBlockWithAttestation` → `SignedBlock`, `BlockWithAttestation`
deleted
- Genesis config updated to dual-key YAML format
### Phase 2: Key manager + block proposal (#231)
- `ValidatorKeyPair` with separate attestation/proposal secret keys
- Block proposal signs `hash_tree_root(block)` with proposal key (no
proposer attestation)
- All validators now attest at interval 1 (proposer no longer skipped)
### Phase 3: Store + verification (#232)
- Signature verification uses `get_attestation_pubkey()` /
`get_proposal_pubkey()` as appropriate
- Removed ~40 lines of proposer attestation handling from
`on_block_core`
- Storage reads/writes `SignedBlock` directly
### Phase 4: Network + tests (#233)
- Type rename cascade across all network layer files
- Test harness updated: removed `ProposerAttestation`, simplified
`build_signed_block()`
- Added proposal signing metrics
- leanSpec bumped to 9c30436 (dual-key test fixtures)
- Skipped `test_reorg_with_slot_gaps` (fixture relies on gossip proposer
attestation state)
## Supersedes
Closes #230, closes #231, closes #232
## Blockers
- **lean-quickstart**: needs devnet4 genesis config support for manual
devnet testing
---------
Co-authored-by: Tomás Grüner <47506558+MegaRedHand@users.noreply.github.com>
1 parent 23bb6f5 commit c6c1688
34 files changed
Lines changed: 2308 additions & 1949 deletions
File tree
- .claude/skills/devnet-log-review/references
- bin/ethlambda/src
- crates
- blockchain
- src
- state_transition/tests
- tests
- common
- crypto
- src
- test-fixtures/src
- types/src
- net
- api/src
- p2p
- src
- gossipsub
- req_resp
- test_data
- storage/src
- api
- docs/infographics
Lines changed: 0 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
54 | 54 | | |
55 | 55 | | |
56 | 56 | | |
57 | | - | |
58 | 57 | | |
59 | 58 | | |
60 | 59 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
48 | 48 | | |
49 | 49 | | |
50 | 50 | | |
51 | | - | |
| 51 | + | |
52 | 52 | | |
53 | 53 | | |
54 | 54 | | |
| |||
106 | 106 | | |
107 | 107 | | |
108 | 108 | | |
109 | | - | |
| 109 | + | |
110 | 110 | | |
111 | 111 | | |
112 | 112 | | |
| |||
310 | 310 | | |
311 | 311 | | |
312 | 312 | | |
313 | | - | |
314 | | - | |
| 313 | + | |
| 314 | + | |
315 | 315 | | |
316 | 316 | | |
317 | 317 | | |
| |||
363 | 363 | | |
364 | 364 | | |
365 | 365 | | |
366 | | - | |
| 366 | + | |
367 | 367 | | |
368 | 368 | | |
369 | 369 | | |
| |||
0 commit comments