# bal-devnet-0 spec :::info :mega: bal-devnet-0 targets to launch on end of Oct 2025. ::: ## EIP List for bal-devnet-0 [EIP-7928: Block-Level Access Lists](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-7928.md) :new: **Key:** - :up:, EIP has updated! - :new:, new EIP added. ### Test Releases **Consensus Specs:** [`v1.6.0-beta.0`](https://github.com/ethereum/consensus-specs/releases/tag/v1.6.0-beta.0) :heavy_check_mark: **Execution Specs:** EEST Block-Level Access Lists (BAL) pre-release [v1.5.0](https://github.com/ethereum/execution-spec-tests/releases/tag/bal%40v1.5.0https://github.com/ethereum/execution-spec-tests/releases/tag/bal%40v1.5.0) :heavy_check_mark: **Execution Test Progress:** Client TDD progress: [pokeball](https://pokebal.raxhvl.com/) ### Spec versions required & Open PRs **Beacon Metrics** **Execution Metrics** **Beacon API** **Builder Specs** **Consensus Specs** **Execution APIs** BAL: https://github.com/ethereum/execution-apis/pull/691 **Execution Spec PRs** ## Kurtosis Interop Conifg (Pre-devnet testing) ### Working configs ```yaml= participants: - cl_type: lodestar cl_image: ethpandaops/lodestar:bal-devnet-0 supernode: true el_type: nethermind el_image: ethpandaops/nethermind:bal-devnet-0 - cl_type: lodestar cl_image: ethpandaops/lodestar:bal-devnet-0 supernode: true el_type: reth el_image: ethpandaops/reth:bal-devnet-0 - cl_type: lodestar cl_image: ethpandaops/lodestar:bal-devnet-0 supernode: true el_type: besu el_image: ethpandaops/besu:bal-devnet-0 el_extra_params: ["--bonsai-parallel-tx-processing-enabled=false"] - cl_type: lodestar cl_image: ethpandaops/lodestar:bal-devnet-0 supernode: true el_type: geth el_image: ethpandaops/geth:bal-devnet-0 network_params: genesis_delay: 20 fulu_fork_epoch: 0 gloas_fork_epoch: 1 seconds_per_slot: 6 num_validator_keys_per_node: 32 snooper_enabled: true dora_params: image: ethpandaops/dora:eip7928-support additional_services: - dora - tx_fuzz - spamoor port_publisher: additional_services: enabled: true public_port_start: 64400 spamoor_params: image: ethpandaops/spamoor:master spammers: - scenario: eoatx config: throughput: 2 - scenario: uniswap-swaps config: throughput: 2 - scenario: evm-fuzz config: throughput: 2 ``` ### Debug Endpoints #### Besu debug endpoint Besu offers a debug endpoint that returns a block and the access list besu generated: ``` curl -X POST \ --data '{"jsonrpc":"2.0","method":"debug_getBadBlocks","params":[],"id":1}' \ http://localhost:8545 \ -H "Content-Type: application/json" ``` response structure: ``` curl -X POST \ --data '{"jsonrpc":"2.0","method":"debug_getBadBlocks","params":[],"id":1}' http://localhost:34255 -H "Content-Type: application/json" \ | jq '.result[] | keys' \ [ "block", "generatedBlockAccessList", "hash", "rlp" ] ``` This makes it possible to compare the blocks access list against the generatedBlockAccessList from besu. #### Geth debug endpoint Getting a block access list from geth: ``` curl -X POST \ --data '{"jsonrpc":"2.0","method":"debug_getBlockAccessList","params":["0x27"],"id":1}' \ http://localhost:34245 \ -H "Content-Type: application/json" | jq { "jsonrpc": "2.0", "id": 1, "result": "0xf902e2da940000000000000000000000000000000000000005c0c0c0c0c0f89f9400000961ef480eb55e80d19ad83579a64c007002c0f884a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000002a00000000000000000000000000000000000000000000000000000000000000003c0c0c0f89f940000bbddc7ce488642fb579f8b00f3a590007251c0f884a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000002a00000000000000000000000000000000000000000000000000000000000000003c0c0c0f862940000f90827f1c53a10cb7a02335b175320002935f847f845a00000000000000000000000000000000000000000000000000000000000000026e3e280a05e9c2172450b547db675a481b9ea70667b768629ecb4a12470f8856bafca67a3c0c0c0c0f8a994000f3df6d732807ef1319fb7b8bb8522d0beac02f88ef845a00000000000000000000000000000000000000000000000000000000000000d6fe3e280a000000000000000000000000000000000000000000000000000000000690b64faf845a00000000000000000000000000000000000000000000000000000000000002d6ee3e280a0282240274ce23c0fdc7d13b326ce456854ee1482052270e1fc52639711cfc50fc0c0c0c0e89439ad5577f842342a00497be24ce546734fff6a8dc0c0cbca01884561bdc156f38d02c3c20102c0e2944909b9c2b5e860ec011740cb4fffa8e5bacedec8c0c0c5c40182bb16c3c20101c0e9948943545177806ed17b9f23f0a21ee5948ecaa776c0c0cfce018c033b2e3ca1d03cec6ad6f96ac0c0" } ``` ### Open Issues Prysm does not manage to peer with lodestar after the Gloas fork. All Prysm blocks are orphaned: ```yaml participants: - cl_type: lodestar cl_image: ethpandaops/lodestar:bal-devnet-0 supernode: true el_type: reth el_image: ethpandaops/reth:bal-devnet-0 count: 1 - cl_type: lodestar cl_image: ethpandaops/lodestar:bal-devnet-0 supernode: true el_type: besu el_image: ethpandaops/besu:bal-devnet-0 el_extra_params: ["--bonsai-parallel-tx-processing-enabled=false"] count: 1 - cl_type: prysm cl_image: ethpandaops/prysm-beacon-chain:bal-devnet-0 supernode: true vc_type: prysm vc_image: ethpandaops/prysm-validator:bal-devnet-0 el_type: geth el_image: ethpandaops/geth:bal-devnet-0 count: 1 network_params: genesis_delay: 20 fulu_fork_epoch: 0 gloas_fork_epoch: 1 seconds_per_slot: 6 num_validator_keys_per_node: 32 snooper_enabled: true dora_params: image: ethpandaops/dora:eip7928-support additional_services: - dora - tracoor port_publisher: additional_services: enabled: true public_port_start: 64400 ``` ## Test Vectors - Tests where the coinbase receives ETH through a [EIP-4895](https://eips.ethereum.org/EIPS/eip-4895) withdrawal. In this case, the coinbase address should be included in the BAL, even though there are 0 transactions. - External STEEL tests runs against the devnet & against kurtosis testnets - Send transactions with diffferent types 0x1, [0x2](https://eips.ethereum.org/EIPS/eip-1559), [0x3](https://eips.ethereum.org/EIPS/eip-4844), [0x4](https://eips.ethereum.org/EIPS/eip-7702). Especially 0x4 is a interesting test vector. - Run the EEST tests against a running testnet/devnet. - TxFuzz & Spammor with a evm fuzzer scenario - Transaction ordering tests