# berlinterop-devnet-2 specs :::info :mega: berlininterop-devnet-2 targets to launch by the 12th or 13rd June 2025 ::: :::info We aim to test all validator custody features in this devnet ::: :::info Meta EIP status tracker: https://notes.ethereum.org/@marioevz/fusaka-sfi-tracker ::: ### Changes include: - Data column sidecars by root - validator custody (optional) - distributed blob building - shifting cell proof computation to transaction sender ### Discussion: - Who is going to work on EELS/EEST for proof computation to tx sender? ## EIP List for berlininterop-devnet-2 The list below links the specific commit versions of the EIPs included in devnet-2. Fusaka mega [EIP-7607](https://eips.ethereum.org/EIPS/eip-7607) [EIP-7594: PeerDAS - Peer Data Availability Sampling](https://github.com/ethereum/EIPs/blob/ed447a1105230659fdce084710ae36bc309ff99f/EIPS/eip-7594.md) [EIP-7823: Set upper bounds for MODEXP](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-7823.md) [EIP-7825: Transaction Gas Limit Cap](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-7825.md) [EIP-7883: ModExp Gas Cost Increase](https://eips.ethereum.org/EIPS/eip-7883) [EIP-7892: Blob Parameter Only Hardforks](https://eips.ethereum.org/EIPS/eip-7892) ~~[EIP-7907: Meter Contract Code Size And Increase Limit](https://eips.ethereum.org/EIPS/eip-7907) :new:~~ -> ~~[EIP-7954: Increase Maximum Contract Size to 48KB and initcode Size to 72KB](https://github.com/ethereum/EIPs/pull/9884) :new: :exclamation:~~ [EIP-7917: Deterministic proposer lookahead](https://eips.ethereum.org/EIPS/eip-7917) [EIP-7918: Blob base fee bounded by execution cost](https://eips.ethereum.org/EIPS/eip-7918) [EIP-7934: RLP Execution Block Size Limit](https://eips.ethereum.org/EIPS/eip-7934) :new: [EIP-7939: Count leading zeros (CLZ) opcode](https://eips.ethereum.org/EIPS/eip-7939) :question: [EIP-7951: Precompile for secp256r1 Curve Support](https://github.com/ethereum/EIPs/pull/9833) :new: ### Test Releases **Consensus Specs:** Release v1.6.0-alpha.2 :soon: **Exection Spec Tests:** https://github.com/ethereum/execution-spec-tests/releases/tag/[email protected] ### Spec versions required & Open PRs **Beacon Metrics** [PeerDAS metrics: add data column, kzg, custody metrics](https://github.com/ethereum/beacon-metrics/pull/14) Open :exclamation: **Beacon API** [Add data_column_sidecar event to eventstream API](https://github.com/ethereum/beacon-APIs/pull/535) Merged :heavy_check_mark: [Add data column sidecars debug endpoint](https://github.com/ethereum/beacon-APIs/pull/537) Merged :heavy_check_mark: **Builder Specs** **Consensus Specs** [Modify fork digest to distinguish BPO forks + add entry to ENR](https://github.com/ethereum/consensus-specs/pull/4354) Merged :heavy_check_mark: [CGC: Update before Fulu](https://github.com/ethereum/consensus-specs/pull/4373) Merged :heavy_check_mark: [PeerDAS validator custody: Introduce Status RPC lowest_slot](https://github.com/ethereum/consensus-specs/pull/4374) Merged :heavy_check_mark: **Execution APIs** **Execution Spec PRs** [Update EIP-7892: harden the spec with p2p details.](https://github.com/ethereum/EIPs/pull/9840) Merged :heavy_check_mark: [Update EIP-7892: Add blob count per tx limit via blobSchedule](https://github.com/ethereum/EIPs/pull/9623) Merged :heavy_check_mark: [Update EIP-7883: Assume minimal base/mod length of 32](https://github.com/ethereum/EIPs/pull/9855) Merged :heavy_check_mark: **Execution Spec Tests PRs** [feat(tests): peerdas tracking issue](https://github.com/ethereum/execution-spec-tests/issues/1301) Open :exclamation: ### Validator custody | Client | Status | |------------|---------| | Teku | Supports with backfill | | Nimbus | Not yet supported | | Prysm | Supports without backfill | | Lighthouse | Not yet supported | | Grandine | Not yet supported | | Lodestar | Supports without backfill | ## Kurtosis Interop Conifg (Pre-devnet testing) ```yaml todo ``` ### Testing: #### EIP-7594: PeerDAS - Peer Data Availability Sampling * Validator custody testing - kurtosis - add validators and verify cgc value changes * This can be easy by setting validators to 0x02 credential and make manual deposits * MEV workflow testing - pending of flashbots/mock builder * Minimal spec testing * Minimal spec testing with mev workflow * Validator custody testing with assertoor. Have a new assertoor test where 0x02 credentials are toped up 32eth at a time and monitoring the node's cgc value to ensure that its going up as expected. * Sync testing script found [here](https://github.com/ethpandaops/kurtosis-sync-test/blob/main/README.md#peerdas-sync-test) * Figure out proper cgc behaviour, do we want the cgc value to change before fulu? Otherwise we might be without supernodes during fork transition. This would really stress the actual fork * Finalized root bug - what should the genesis root hash be? @potuz @hangleang * Prysm <> Grandine peering bug * What steps can we do to have resource optimization? We see significantly more ram usage with fulu active. * We see very stable 9 blob spamming with pre fulu. * Once fulu active, with the same constant load, we see significantly less blobs included. * We might need some assertoor test for checking the content of blob pool and see if a proposer have included all the blobs that is has seen locally. And then we can investigate if there are any client pairs that are struggling with local blob building with peerdas. * Test blob reconstruction. Have node propose only 50% of the columns, and see if all clients are able to complete reconstruction. #### EIP-7825: Transaction gas limit cap * Spamoor - create a new scenario with aiming to have 30M+ in a single transaction - @pk910 * Assertoor - verify that all ELs reject such tx * Malicous test - get a node that accepts 30M tx+ and see if we can propagate it in the network. Spamoor config: ```yaml= # wallet settings seed: gasburnertx-5 # seed for the wallet refill_amount: 5000000000000000000 # refill 5 ETH when refill_balance: 1000000000000000000 # balance drops below 1 ETH refill_interval: 600 # check every 10 minutes # scenario: gasburnertx total_count: 0 throughput: 1 max_pending: 2 max_wallets: 40 rebroadcast: 120 base_fee: 20 tip_fee: 2 gas_units_to_burn: 31000000 client_group: "" ``` Besu :heavy_check_mark: ``` 04 Jun 12:06:51 | Rejected invalid block 65 (0xcc465caeaca9e0a764bc1229350a61890ae76668a4ee83b19b3f1a15b6bde261), ExtraData: Nethermind v1.33.0a, reason: TxGasLimitCapExceeded: Gas limit 32050000 exceeed cap of 30000000. ``` Nethermind: #### EIP-7823, EIP-7883, EIP-7918 * Hive tests #### EIP-7892: Blob Parameter Only Hardforks * Kurtosis tests, going up, down with max blobs * Figure out final form of BPO [format](https://github.com/ethereum/EIPs/pull/9623) * Figure out future forks in blob schedule planning * Figure out if we want hard fork names in the blob schedule fields. * Test future compatibility, see if we can start with fulu genesis and higher BPO at genesis. * out of order fork execution issues, glamsterdam becoming active without triggering bpos #### EIP-7917: Deterministic proposer lookahead * Kurtosis local test to determine that interop works among all clients ## Client Interop Readiness Manu's test scenarios: https://hackmd.io/@manunalepa/BJzNsCnvyx ### Prysm | Scenario | Grandine | Lighthouse | Lodestar | Nimbus | Prysm | Teku | | -------- | -------- | ---------- | -------- | ------ | ----- | ---- | | 1a | :question: | :question: | :question: | :question: | :question: | :question: | | 1b | :question: | :question: | :question: | :question: | :question: | :question: | | 2a| :question: | :question: | :question: | :question: | :question: | :question: | | 2b | :question: | :question: | :question: | :question: | :question: | :question: | | 3a | :question: | :question: | :question: | :question: | :question: | :question: | | 3b | :question: | :question: | :question: | :question: | :question: | :question: | | 4 | :question: | :question: | :question: | :question: | :question: | :question: | ## Reference spec for previous devnet: https://notes.ethereum.org/@ethpandaops/fusaka-devnet-1 ### Open future Questions: - Alternately, should a pre-determined blob increase schedule triggered by a BPO mechanism (as proposed [here](https://hackmd.io/@ralexstokes/blob-acc-2025#Blob-schedule-for-Fusaka)) be included in fusaka-devnet-0?