-
Notifications
You must be signed in to change notification settings - Fork 960
Closed
Description
Description
As a node operator, I want full loop ENR support with DNS and P2P discovery so that finding and becoming a Goerli node is less awful.
Every 8 hours the Ethereum Foundation runs a sweeper that polls the Distributed Hash Table of the DNS discovery and updates the ENR records in their DNS resolver, and the results are stored in https://github.com/ethereum/discv4-dns-lists
Ultimately we want to support ENS so we both gather nodes from that DNS list to boost our discovery efforts as well as add info to our discovery packets so that the EF adds us to that list of nodes.
Acceptance Criteria
- Besu nodes start showing up on https://github.com/ethereum/discv4-dns-lists
- Besu nodes use DNS lookup for mainnet, rinkeby, ropsten, and goerli to seed the p2p discovery pool and as initial peer candidates.
Relevant Standards
- EIP-778: Ethereum Node Records (ENR)
- Probably implemented by https://github.com/ConsenSys/discovery already, just need to integrate
- EIP-868: Node Discovery v4 ENR Extension
- EIP-1459: Node Discovery via DNS
There are roughly 3 things we need to do:
- Create and update local ENR entries for the node. This will likely involve storing them in the key value store between runs and generating a new record in case things change. There are likely corner cases around node keys changing between runs.
- Add the current ENR record information to the P2P discovery broadcasts (EIP-868).
- Seed the discovery manager with results from the DNS entries at the discv4-dns-lists. Treat these as query responses, not as static nodes or boot nodes. Although when we do a boot node refresh we may want to do a DNS refresh. We my not want to dump all of them into discovery immediately but perhaps dribble them in 25 at a time or so.
2 and 3 can swap order if desired
Metadata
Metadata
Assignees
Labels
No labels