From 26accffbfd2d55fe3af9450ef3cf68e3f2a1a547 Mon Sep 17 00:00:00 2001 From: Stefan Date: Wed, 23 Sep 2026 22:44:15 +0200 Subject: [PATCH 1/2] bootnode: teku master-deb3e80 (stable teku cannot start on a Gloas genesis) consensys/teku:latest (26.9.0) exits at startup on a Gloas-at-genesis state: 'Genesis block root ... does not match genesis state latest block root'. ethpandaops/teku:master-deb3e80 followed the chain through bogota in kurtosis with the frames config, same head root as lighthouse. Claude-Session: https://claude.ai/code/session_017oM6BuiHivCb3CXVx2kboG --- ansible/inventories/devnet-0/group_vars/all/images.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ansible/inventories/devnet-0/group_vars/all/images.yaml b/ansible/inventories/devnet-0/group_vars/all/images.yaml index 2455623..fb3c130 100644 --- a/ansible/inventories/devnet-0/group_vars/all/images.yaml +++ b/ansible/inventories/devnet-0/group_vars/all/images.yaml @@ -8,7 +8,9 @@ default_ethereum_client_images: nimbus: statusim/nimbus-eth2:multiarch-latest prysm: gcr.io/offchainlabs/prysm/beacon-chain:latest prysm_validator: gcr.io/offchainlabs/prysm/validator:latest - teku: consensys/teku:latest + # Bootnode CL. Stable teku (26.9.0) fails a Gloas genesis ("Genesis block root ... does not + # match genesis state latest block root"); master handles it. Pinned like lighthouse. + teku: ethpandaops/teku:master-deb3e80 grandine: ethpandaops/grandine:develop ### Execution layer clients besu: hyperledger/besu:latest From 7ffadfe594fed9f8c5bdfb2376d39f255e6c56cf Mon Sep 17 00:00:00 2001 From: Stefan Date: Wed, 23 Sep 2026 22:45:13 +0200 Subject: [PATCH 2/2] bootnode: lighthouse (pinned unstable-4b1f3c2, --archive) instead of teku Reverts the teku master pin: run the bootnode on the same lighthouse build the validator nodes use, the only CL tested on this config. --archive replaces teku's ARCHIVE data-storage mode. Boot-node wiring follows blob-devnets' lighthouse bootnode. Claude-Session: https://claude.ai/code/session_017oM6BuiHivCb3CXVx2kboG --- .../devnet-0/group_vars/all/images.yaml | 4 +-- .../devnet-0/group_vars/bootnode.yaml | 34 +++++++++---------- 2 files changed, 17 insertions(+), 21 deletions(-) diff --git a/ansible/inventories/devnet-0/group_vars/all/images.yaml b/ansible/inventories/devnet-0/group_vars/all/images.yaml index fb3c130..2455623 100644 --- a/ansible/inventories/devnet-0/group_vars/all/images.yaml +++ b/ansible/inventories/devnet-0/group_vars/all/images.yaml @@ -8,9 +8,7 @@ default_ethereum_client_images: nimbus: statusim/nimbus-eth2:multiarch-latest prysm: gcr.io/offchainlabs/prysm/beacon-chain:latest prysm_validator: gcr.io/offchainlabs/prysm/validator:latest - # Bootnode CL. Stable teku (26.9.0) fails a Gloas genesis ("Genesis block root ... does not - # match genesis state latest block root"); master handles it. Pinned like lighthouse. - teku: ethpandaops/teku:master-deb3e80 + teku: consensys/teku:latest grandine: ethpandaops/grandine:develop ### Execution layer clients besu: hyperledger/besu:latest diff --git a/ansible/inventories/devnet-0/group_vars/bootnode.yaml b/ansible/inventories/devnet-0/group_vars/bootnode.yaml index fda7468..9b93e5c 100644 --- a/ansible/inventories/devnet-0/group_vars/bootnode.yaml +++ b/ansible/inventories/devnet-0/group_vars/bootnode.yaml @@ -39,31 +39,29 @@ bootnodoor_container_env: # role: ethpandaops.general.ethereum_node ethereum_node_el: geth -ethereum_node_cl: teku +ethereum_node_cl: lighthouse ethereum_node_cl_validator_enabled: false -# role: ethpandaops.general.teku -teku_container_name: beacon -teku_container_image: "{{ default_ethereum_client_images.teku }}" -teku_container_env: +# role: ethpandaops.general.lighthouse +# Same pinned lighthouse as the validator nodes: the only CL tested on this config +# (stable teku cannot start on a Gloas genesis). --archive keeps every state, as the +# teku ARCHIVE mode did, for xatu-cannon and dora. +lighthouse_container_name: beacon +lighthouse_validator_container_name: validator +lighthouse_container_image: "{{ default_ethereum_client_images.lighthouse }}" +lighthouse_container_env: VIRTUAL_HOST: "{{ ethereum_node_beacon_hostname }}" VIRTUAL_PORT: "{{ ethereum_node_cl_ports_http_beacon | string }}" LETSENCRYPT_HOST: "{{ ethereum_node_beacon_hostname }}" -teku_container_volumes: - - "{{ teku_datadir }}:/data" - - "{{ teku_auth_jwt_path }}:/execution-auth.jwt:ro" +lighthouse_container_volumes: + - "{{ lighthouse_datadir }}:/data" + - "{{ lighthouse_auth_jwt_path }}:/execution-auth.jwt:ro" - "{{ eth_testnet_config_dir }}:/network-config:ro" -teku_container_command_extra_args: - - --network=/network-config/config.yaml - - --genesis-state=/network-config/genesis.ssz - - --p2p-peer-upper-bound=100 - - --data-storage-non-canonical-blocks-enabled=true - - --data-storage-mode=ARCHIVE - - --logging=info - - --Xlog-include-p2p-warnings-enabled - - --metrics-block-timing-tracking-enabled +lighthouse_container_command_extra_args: + - --testnet-dir=/network-config + - --archive - >- - --p2p-discovery-bootnodes={{ + --boot-nodes={{ ( ( groups['bootnode']