From 632903952fbdc99e890b049ede96b24174820a25 Mon Sep 17 00:00:00 2001 From: Barnabas Busa Date: Thu, 30 Jul 2026 10:37:56 +0200 Subject: [PATCH] feat(el): ENR bootnodes and discv5-only, staged for devnet-8 Discv5 bootstraps from ENRs, not enodes. Besu discards its enode bootnode list entirely once discv5 is on, and nimbus-eth1 now hard-disables discv4 upstream (status-im/nimbus-eth1#4582), so the bootnode list has to be all-ENR rather than mixed. Swap both EL bootnode sources to their ENR equivalents and turn discv4 off on every client that supports the switch. Applied to the devnet-7 inventory because devnet-8 is cut from it. Requires besu and reth images rebased on their respective mains: besu --discovery-mode landed in #10800 (2026-07-22) and reth enr: bootnodes in #26448 (2026-07-29), neither of which is in a release or on the current devnet branches. --- ansible/inventories/devnet-7/group_vars/besu.yaml | 1 + ansible/inventories/devnet-7/group_vars/bootnode.yaml | 4 ++-- ansible/inventories/devnet-7/group_vars/erigon.yaml | 2 ++ ansible/inventories/devnet-7/group_vars/ethereum_node.yaml | 4 ++-- ansible/inventories/devnet-7/group_vars/ethrex.yaml | 2 ++ ansible/inventories/devnet-7/group_vars/geth.yaml | 2 ++ ansible/inventories/devnet-7/group_vars/nethermind.yaml | 1 + ansible/inventories/devnet-7/group_vars/reth.yaml | 1 + 8 files changed, 13 insertions(+), 4 deletions(-) diff --git a/ansible/inventories/devnet-7/group_vars/besu.yaml b/ansible/inventories/devnet-7/group_vars/besu.yaml index a633b57..e66ecc1 100644 --- a/ansible/inventories/devnet-7/group_vars/besu.yaml +++ b/ansible/inventories/devnet-7/group_vars/besu.yaml @@ -21,6 +21,7 @@ besu_container_volumes: besu_container_command_extra_args: - --genesis-file=/network-config/besu.json - --bootnodes={{ ethereum_el_bootnodes | join(',') }} + - --discovery-mode=V5 - --rpc-http-api=ADMIN,DEBUG,ETH,MINER,NET,TRACE,TXPOOL,WEB3 - --sync-mode=FULL - --data-storage-format=BONSAI diff --git a/ansible/inventories/devnet-7/group_vars/bootnode.yaml b/ansible/inventories/devnet-7/group_vars/bootnode.yaml index 1a11d30..b7dbc69 100644 --- a/ansible/inventories/devnet-7/group_vars/bootnode.yaml +++ b/ansible/inventories/devnet-7/group_vars/bootnode.yaml @@ -1,6 +1,6 @@ --- # ethereum_cl_bootnode: "{{ hostvars[primary_bootnode]['bootnodoor_fact_enr'] }}" -# ethereum_el_bootnode: "{{ hostvars[primary_bootnode]['bootnodoor_fact_enode'] }}" +# ethereum_el_bootnode: "{{ hostvars[primary_bootnode]['bootnodoor_fact_el_enr'] }}" ethereum_cl_bootnodes: >- {{ @@ -16,7 +16,7 @@ ethereum_el_bootnodes: >- {{ ( ['prysm-ethrex-1', 'prysm-geth-1', 'lodestar-ethrex-1', 'lodestar-geth-1'] - | map('extract', hostvars, ['ethereum_node_fact_discovery_el_enode']) + | map('extract', hostvars, ['ethereum_node_fact_discovery_el_enr']) | select('defined') | list ) diff --git a/ansible/inventories/devnet-7/group_vars/erigon.yaml b/ansible/inventories/devnet-7/group_vars/erigon.yaml index 7a347dd..861ff42 100644 --- a/ansible/inventories/devnet-7/group_vars/erigon.yaml +++ b/ansible/inventories/devnet-7/group_vars/erigon.yaml @@ -22,6 +22,8 @@ erigon_container_command_extra_args: - --networkid={{ ethereum_network_id }} - --db.size.limit=500GB - --bootnodes={{ ethereum_el_bootnodes | join(',') }} + - --discovery.v4=false + - --discovery.v5=true - --log.console.verbosity=debug erigon_init_custom_network: true erigon_init_custom_network_genesis_file: "{{ eth_testnet_config_dir }}/genesis.json" diff --git a/ansible/inventories/devnet-7/group_vars/ethereum_node.yaml b/ansible/inventories/devnet-7/group_vars/ethereum_node.yaml index 0381ed6..030f7ab 100644 --- a/ansible/inventories/devnet-7/group_vars/ethereum_node.yaml +++ b/ansible/inventories/devnet-7/group_vars/ethereum_node.yaml @@ -20,14 +20,14 @@ ethereum_el_bootnodes: >- {{ ( [primary_bootnode] - | map('extract', hostvars, ['bootnodoor_fact_enode']) + | map('extract', hostvars, ['bootnodoor_fact_el_enr']) | select('defined') | list ) + ( [primary_bootnode, 'prysm-ethrex-1', 'prysm-geth-1', 'lodestar-ethrex-1', 'lodestar-geth-1', 'nimbus-ethrex-1', 'nimbus-geth-1', 'lighthouse-ethrex-1', 'lighthouse-geth-1'] - | map('extract', hostvars, ['ethereum_node_fact_discovery_el_enode']) + | map('extract', hostvars, ['ethereum_node_fact_discovery_el_enr']) | select('defined') | list ) diff --git a/ansible/inventories/devnet-7/group_vars/ethrex.yaml b/ansible/inventories/devnet-7/group_vars/ethrex.yaml index 8af2be0..ead3370 100644 --- a/ansible/inventories/devnet-7/group_vars/ethrex.yaml +++ b/ansible/inventories/devnet-7/group_vars/ethrex.yaml @@ -25,6 +25,8 @@ ethrex_container_volumes: ethrex_container_command_extra_args: - --network=/network-config/genesis.json - --bootnodes={{ ethereum_el_bootnodes | join(',') }} + - --p2p.discv4=false + - --p2p.discv5=true - --http.api=eth,net,web3,admin,debug - --syncmode=full diff --git a/ansible/inventories/devnet-7/group_vars/geth.yaml b/ansible/inventories/devnet-7/group_vars/geth.yaml index 4f76420..2a19c87 100644 --- a/ansible/inventories/devnet-7/group_vars/geth.yaml +++ b/ansible/inventories/devnet-7/group_vars/geth.yaml @@ -26,6 +26,8 @@ geth_container_command_extra_args: - --networkid={{ ethereum_network_id }} - --syncmode=full - --bootnodes={{ ethereum_el_bootnodes | join(',') }} + - --discovery.v4=false + - --discovery.v5=true geth_container_pull: true prometheus_config: | diff --git a/ansible/inventories/devnet-7/group_vars/nethermind.yaml b/ansible/inventories/devnet-7/group_vars/nethermind.yaml index 61aba9d..049b13c 100644 --- a/ansible/inventories/devnet-7/group_vars/nethermind.yaml +++ b/ansible/inventories/devnet-7/group_vars/nethermind.yaml @@ -24,6 +24,7 @@ nethermind_container_command_extra_args: - --Init.ChainSpecPath=/network-config/chainspec.json - --JsonRpc.EnabledModules=Eth,Subscribe,Trace,TxPool,Web3,Personal,Proof,Net,Parity,Health,Rpc,Debug,Admin - --Discovery.Bootnodes={{ ethereum_el_bootnodes | join(',') }} + - --Discovery.DiscoveryVersion=V5 - --Discovery.DiscoveryVersion=All - --Pruning.Mode=None - --config=none diff --git a/ansible/inventories/devnet-7/group_vars/reth.yaml b/ansible/inventories/devnet-7/group_vars/reth.yaml index 5910d11..14bd32a 100644 --- a/ansible/inventories/devnet-7/group_vars/reth.yaml +++ b/ansible/inventories/devnet-7/group_vars/reth.yaml @@ -22,6 +22,7 @@ reth_container_volumes: reth_container_command_extra_args: - --chain=/network-config/genesis.json - --bootnodes={{ ethereum_el_bootnodes | join(',') }} + - --disable-discv4-discovery - --http.api=trace,rpc,eth,net,debug,web3,admin,txpool - --builder.gaslimit=150000000 prometheus_config: |