Skip to content

feat(el): use ENR bootnodes and run discv5-only - #181

Open
barnabasbusa wants to merge 1 commit into
masterfrom
bbusa/el-enr-bootnodes
Open

feat(el): use ENR bootnodes and run discv5-only#181
barnabasbusa wants to merge 1 commit into
masterfrom
bbusa/el-enr-bootnodes

Conversation

@barnabasbusa

Copy link
Copy Markdown
Contributor

Why

Execution clients are moving to discv5-only for devnet-8, and discv5 bootstraps from ENRs, not enodes:

  • besu swaps its bootnode list to ENR-only the moment discv5 is enabled and rejects enodes with Invalid ENR bootnode: ... must start with 'enr:'.
  • nimbus-eth1 now hard-disables discv4 (status-im/nimbus-eth1#4582, merged), so the enodes it receives feed a protocol that no longer runs.

What

Swap both EL bootnode sources to their ENR equivalents:

before after
ethereum_node_fact_discovery_el_enode ethereum_node_fact_discovery_el_enr
bootnodoor_fact_enode bootnodoor_fact_el_enr

covering ethereum_el_bootnodes, ethereum_el_bootnode, the geth bootnode's own --bootnodes list, and the mev-relay reth node.

Then turn discv4 off on every EL that supports the switch:

client flag
geth --discovery.v4=false --discovery.v5=true
erigon --discovery.v4=false --discovery.v5=true
ethrex --p2p.discv4=false --p2p.discv5=true
reth --disable-discv4-discovery
nethermind --Discovery.DiscoveryVersion=V5
besu --discovery-mode=V5
nimbusel none needed — discv4 disabled upstream

The 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_enr reads bootnodoor's existing /el-enr endpoint; ethereum_node_fact_discovery_el_enr derives the ENR from the node key via devp2p key to-enr.

Note on besu

--discovery-mode is on besu main only (#10800, unreleased). Verified empirically: hyperledger/besu:latest (26.7.0) leaves --discovery-mode=V5 unmatched and accepts the older --Xv5-discovery-enabled=true, while ethpandaops/besu:main is the exact inverse. The two are mutually exclusive, so besu nodes need a main-based build.

Testing

ansible-lint reports an identical 77 failures / 3 warnings across 37 files before and after this change — all pre-existing formatting noise, nothing new introduced.

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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant