feat(el): use ENR bootnodes and run discv5-only - #181
Open
barnabasbusa wants to merge 1 commit into
Open
Conversation
Execution clients are moving to discv5-only, which bootstraps from ENRs rather than enodes. Besu rejects enode:// bootnodes outright once discv5 is enabled, and nimbus-eth1 now hard-disables discv4 upstream, so its enode bootnodes feed a protocol that no longer runs. Swap the EL bootnode sources to their ENR equivalents: ethereum_node_fact_discovery_el_enode -> ethereum_node_fact_discovery_el_enr bootnodoor_fact_enode -> bootnodoor_fact_el_enr and turn discv4 off on every EL that supports the switch. Nimbus needs no flag, its discv4 is already disabled upstream. Both facts come from ethpandaops/ansible-collection-general#568.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Execution clients are moving to discv5-only for devnet-8, and discv5 bootstraps from ENRs, not enodes:
Invalid ENR bootnode: ... must start with 'enr:'.What
Swap both EL bootnode sources to their ENR equivalents:
ethereum_node_fact_discovery_el_enodeethereum_node_fact_discovery_el_enrbootnodoor_fact_enodebootnodoor_fact_el_enrcovering
ethereum_el_bootnodes,ethereum_el_bootnode, the geth bootnode's own--bootnodeslist, and the mev-relay reth node.Then turn discv4 off on every EL that supports the switch:
--discovery.v4=false --discovery.v5=true--discovery.v4=false --discovery.v5=true--p2p.discv4=false --p2p.discv5=true--disable-discv4-discovery--Discovery.DiscoveryVersion=V5--discovery-mode=V5The bootnode list has to be all-ENR rather than mixed: besu discards the enode list entirely in discv5 mode, so leaving one enode in would strand it.
Depends on
ethpandaops/ansible-collection-general#568 — provides both new facts.
bootnodoor_fact_el_enrreads bootnodoor's existing/el-enrendpoint;ethereum_node_fact_discovery_el_enrderives the ENR from the node key viadevp2p key to-enr.Note on besu
--discovery-modeis on besu main only (#10800, unreleased). Verified empirically:hyperledger/besu:latest(26.7.0) leaves--discovery-mode=V5unmatched and accepts the older--Xv5-discovery-enabled=true, whileethpandaops/besu:mainis the exact inverse. The two are mutually exclusive, so besu nodes need a main-based build.Testing
ansible-lintreports an identical 77 failures / 3 warnings across 37 files before and after this change — all pre-existing formatting noise, nothing new introduced.