Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
818f54a
feat(p2p): add opt-in discv5 peer discovery
MegaRedHand Aug 12, 2026
52dae8b
refactor(p2p): tighten the discv5 discovery surface
MegaRedHand Aug 13, 2026
a1d306f
Merge remote-tracking branch 'origin/main' into feat/discv5-discovery
MegaRedHand Aug 13, 2026
2425c2d
docs: keep the discovery entry inside the Operations section
MegaRedHand Aug 13, 2026
084caaf
chore(deps): bump ethrex to the feat/discovery-peer-requirements tip
MegaRedHand Aug 13, 2026
0bf322c
test(p2p): build admission-test ENRs through the extras accessors
MegaRedHand Aug 13, 2026
337e4ba
chore(deps): serve the ENR we report, on the ethrex branch tip
MegaRedHand Aug 13, 2026
7a02f09
revert(rpc): drop the ENR from the node identity endpoint
MegaRedHand Aug 18, 2026
9ad8007
refactor(p2p): spawn the discovery server inside P2P::spawn
MegaRedHand Aug 18, 2026
bda834d
feat(p2p): make the discovery peer target configurable
MegaRedHand Aug 19, 2026
30574a0
refactor(p2p): express the discovery result branches as combinators
MegaRedHand Aug 19, 2026
5f25d18
refactor(p2p): keep the DiscoveredPeer test builder with the tests
MegaRedHand Aug 19, 2026
419b526
Merge remote-tracking branch 'origin/main' into feat/discv5-discovery
MegaRedHand Aug 19, 2026
6ec0b7a
refactor(p2p): read a NodeRecord's fields through one set of helpers
MegaRedHand Aug 19, 2026
718788c
docs(discovery): drop the speculative sections and home the metric wi…
MegaRedHand Aug 19, 2026
3978e61
Merge branch 'main' into feat/discv5-discovery
pablodeymo Aug 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -280,6 +280,13 @@ actual_slot = finalized_slot + 1 + relative_index
- Mesh size: 8 (6-12 bounds), heartbeat: 700ms
- **Req/Resp**: Status, BlocksByRoot, BlocksByRange (snappy frame compression + varint length)

### Peer Discovery (discv5, opt-in)
- Off by default; `--discovery.enable` plus `--discovery.port` (own UDP socket, must differ from `--gossipsub-port`)
- Reuses ethrex's `DiscoveryServer` + `PeerTable` with discv4 disabled; `spawn` takes the prepared lean ENR, so the record ethrex serves is the one we report
- ENR follows the beacon phase0 spec: `ip`/`udp`/`quic`/`secp256k1`/`eth2`/`attnets`
- Admission mirrors lighthouse: `eth2.fork_digest` must match, `next_fork_*` may differ, `quic` entry required. Handed to the peer table as `LeanFilter: PeerFilter`, so records are judged on arrival, not at dial time; a reject is re-judged on a higher-`seq` ENR
- Candidates ranked by uncovered attestation subnets. See [`docs/discovery.md`](docs/discovery.md)

### Retry Strategy on Block Requests
- Exponential backoff: doubling from `INITIAL_BACKOFF_MS` (5ms → 2560ms)
- Max `MAX_FETCH_RETRIES` (10) attempts, random peer selection on retry
Expand Down
Loading
Loading