# Plataberget spec :::info :mega: Plataberget launched 13.08 2026 with the gloas fork happening in 7 days (20.08.26 20:08) at epoch 1536. ** ::: :::info :checkered_flag: **Scope.** Short-lived fork-transition devnet: all clients fork together from a big pre-fork state (config similar to devnet-7). EL discovery runs **discv5-only** (per-client flags under Networking); QUIC stays enabled on the CL. The new **builder API** flow (Beacon API / Keymanager / Builder Specs PRs below) is **best effort**. **Repricing numbers are frozen** (ACDT #90) and the EIP has merged; EELS still needs a follow-up release to carry them. Stress goals: SSZ/stable-container performance and builder lifecycle at scale (see Testing focus). devnet-9 (non-finality testing) follows within the month. ::: :::info 8282 system contracts are unchanged from devnet-7 (no sys-asm bytecode changes since): | Req | type | Address | |---------|------|--------------------------------------------| | deposit | 0x03 | 0x0000bff46984e3725691fa540a8c7589300d8282 | | exit | 0x04 | 0x000064d678505ad48f8ccb093bc65613800e8282 | ::: ## EIP List for Plataberget testnet | EIP | Title |Status |--------|-----|:-----:| |[EIP-2780](https://eips.ethereum.org/EIPS/eip-2780) [`spec@36c409e7`](https://github.com/ethereum/EIPs/blob/36c409e70e4117fc708f02da7d58cd7e5d075f7c/EIPS/eip-2780.md) | Reduce intrinsic transaction gas — transfer log cost folded into `TX_VALUE_COST`; **intrinsic contract-creation 23,000 → 24,000** (tracks `CREATE_ACCESS`) | :up: |[EIP-7610](https://eips.ethereum.org/EIPS/eip-7610) | Revert creation in case of non-empty storage |[EIP-7688](https://eips.ethereum.org/EIPS/eip-7688) | Forward compatible consensus data structures | |[EIP-7708](https://eips.ethereum.org/EIPS/eip-7708) [`spec@f7230c46`](https://github.com/ethereum/EIPs/blob/f7230c46a743313957d8f38a159bda934cc735b2/EIPS/eip-7708.md) | ETH transfers emit a log | |[EIP-7732](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-7732.md) | Enshrined Proposer-Builder Separation | |[EIP-7778](https://eips.ethereum.org/EIPS/eip-7778) [`spec@ce17d00b`](https://github.com/ethereum/EIPs/blob/ce17d00b8341032a946301944124c4a6013032d6/EIPS/eip-7778.md) | Block Gas Accounting without Refunds | |[EIP-7843](https://eips.ethereum.org/EIPS/eip-7843) [`spec@c3bfd4ba`](https://github.com/ethereum/EIPs/blob/c3bfd4ba41cf0fcbfe8c404f33ba89f5174971e0/EIPS/eip-7843.md) | SLOTNUM opcode | |[EIP-7904](https://eips.ethereum.org/EIPS/eip-7904) | Compute Gas Cost Analysis (informational only) | ℹ️ | |[EIP-7928](https://eips.ethereum.org/EIPS/eip-7928) [`spec@aca88aa0`](https://github.com/ethereum/EIPs/blob/aca88aa0932580c29d0233f902cb4390e88b8c41/EIPS/eip-7928.md) | Block-Level Access Lists — recipient excluded when a runtime halt precedes | :up: |[EIP-7954](https://eips.ethereum.org/EIPS/eip-7954) [`spec@1dc9bc87`](https://github.com/ethereum/EIPs/blob/1dc9bc870f864d7ad1095fc73ba8ca098d02c732/EIPS/eip-7954.md) | Increase Maximum Contract Size (**→ 64 KiB**) | |[EIP-7975](https://eips.ethereum.org/EIPS/eip-7975) | eth/70 - partial block receipt lists | |[EIP-7976](https://eips.ethereum.org/EIPS/eip-7976) [`spec@c998ef94`](https://github.com/ethereum/EIPs/blob/c998ef94eb16a6af8a9b8e2084f947b17ea14865/EIPS/eip-7976.md) | Increase Calldata Floor Cost (64/64) | |[EIP-7981](https://eips.ethereum.org/EIPS/eip-7981) [`spec@747b78c0`](https://github.com/ethereum/EIPs/blob/747b78c0edfdf04e9e2933ad1bec592d3318e1d9/EIPS/eip-7981.md) | Increase Access List Cost | |[EIP-7997](https://eips.ethereum.org/EIPS/eip-7997) [`spec@a0a7f5ad`](https://github.com/ethereum/EIPs/blob/a0a7f5adb491fc6ad4b008f307899c30f348db22/EIPS/eip-7997.md) | Deterministic Factory Predeploy — spec unchanged; clients **must not** check contract existence at the fork boundary (no BAL read, no witness) | :up: |[EIP-8024](https://eips.ethereum.org/EIPS/eip-8024) [`spec@34b49095`](https://github.com/ethereum/EIPs/blob/34b49095ca5f7343045da279f04e7ecd1e451393/EIPS/eip-8024.md) | Backward compatible SWAPN, DUPN, EXCHANGE |[EIP-8037](https://eips.ethereum.org/EIPS/eip-8037) [`spec@a12902ae`](https://github.com/ethereum/EIPs/blob/a12902ae1b811c45a81b51bfce671cf7a1fb27f3/EIPS/eip-8037.md) | State Creation Gas — CPSB=1530, source-based refunds; "regular gas" renamed to **"execution gas"** (terminology only) | :up: |[EIP-8038](https://eips.ethereum.org/EIPS/eip-8038) [`spec@fc232285`](https://github.com/ethereum/EIPs/blob/fc2322854d047ba1fd6e3ae9e61fb7a915535cb7/EIPS/eip-8038.md) | State-access gas cost update — **`COLD_STORAGE_ACCESS` stays 2,100** (no longer raised); `ACCOUNT_WRITE` **9,000**, `CREATE_ACCESS` **12,000**, `STORAGE_CLEAR_REFUND` **11,616**, `ACCESS_LIST_STORAGE_KEY_COST` **2,000**, `ACCESS_LIST_ADDRESS_COST` **2,900**, `CALL_VALUE` **11,300**; `COLD_ACCOUNT_ACCESS` 3,000 and `STORAGE_WRITE` 10,000 unchanged | :up: |[EIP-8045](https://eips.ethereum.org/EIPS/eip-8045) | Exclude slashed validators from proposing | |[EIP-8061](https://eips.ethereum.org/EIPS/eip-8061) | Increase exit and consolidation churn | |[EIP-8070](https://eips.ethereum.org/EIPS/eip-8070) [`spec@43c7af02`](https://github.com/ethereum/EIPs/blob/43c7af020f1641924bed60565fde86f6ad3469df/EIPS/eip-8070.md) | Sparse Blobpool — **Engine API half now required**: `engine_getBlobsV3` *and* `V4` both served, FCU v4 `custody_columns`. eth/72 cell exchange stays optional; cell-level DAS deferred | :exclamation: |[EIP-8136](https://eips.ethereum.org/EIPS/eip-8136) | Cell-Level Deltas for Data Column Broadcast | :new: :sparkles: |[EIP-8159](https://eips.ethereum.org/EIPS/eip-8159) | eth/71 - Block Access List Exchange | |[EIP-8189](https://eips.ethereum.org/EIPS/eip-8189) | snap/2 - BAL-Based State Healing | :new: :sparkles: |[EIP-8246](https://eips.ethereum.org/EIPS/eip-8246) [`spec@3b30ff82`](https://github.com/ethereum/EIPs/blob/3b30ff829e5e698f1c6f69427111d194b80af38d/EIPS/eip-8246.md) | Remove SELFDESTRUCT Burn | |[EIP-8261](https://eips.ethereum.org/EIPS/eip-8261) | Gas Limit Schedule (informational only) | :new: :sparkles: ℹ️ | |[EIP-8282](https://github.com/ethereum/EIPs/pull/11760) [`spec@35ab20cb`](https://github.com/ethereum/EIPs/blob/35ab20cb31a416c50600da00125d262e1756850c/EIPS/eip-8282.md) | Add builder execution requests | **Key:** - :up: EIP has updated - :new: New EIP added - :exclamation: scope changed (now required) - :sparkles: Optional (nice to have) ## Final gas limit changes | Constant | Osaka | Amsterdam | Δ | |----------|------:|----------:|--:| | **Execution gas** | | | | | `COLD_ACCOUNT_ACCESS` | 2,600 | 3,000 | +15.4% | | `STORAGE_WRITE` | 2,800 | 10,000 | +257% | | `CALL_VALUE` | 9,000 | 11,300 | +25.6% | | `ACCOUNT_WRITE` | — | 9,000 | new | | `CREATE_ACCESS` | — | 12,000 | new | | `REFUND_STORAGE_CLEAR` | 4,800 | 11,616 | +142% | | **Intrinsic tx gas (2780)** | | | | | `TX_BASE` | 21,000 | 12,000 | −42.9% | | `TX_VALUE_COST` | — | 6,000 | new | | `TX_DATA_TOKEN_FLOOR` | 10 | 16 | +60% | | `TX_ACCESS_LIST_ADDRESS` | 2,400 | 2,900 | +20.8% | | `TX_ACCESS_LIST_STORAGE_KEY` | 1,900 | 2,000 | +5.3% | | **State gas (new dimension)** | | | | | `COST_PER_STATE_BYTE` | — | 1,530 | new | | `NEW_ACCOUNT` | 25,000 | 183,600 | +634.4% | | `STORAGE_SET` | 20,000 | 97,920 | +389.6% | | `AUTH_BASE` | 12,500 | 35,190 | +181.5% | ## Testing focus - **Fork transition** (primary goal): all clients through the fork without restarts. Regression checks from devnet-7: Lodestar+Besu/Erigon post-fork head hang, Teku rejecting valid buildoor bids, `debug_traceBlockByHash`, ePBS payload-body reconstruction. - **SSZ / stable containers (EIP-7688) performance**: devnet-7 showed 10–20% slower processing across clients plus large-Merkle-tree issues with the big validator set. Verify the optimization round landed; compare block-processing/hashing metrics against devnet-7. - **Builder lifecycle at scale**: each builder can only bid once per slot, so stressing the exit/withdrawal path needs breadth — deposit a few thousand builders, exit them en masse, drain the full-withdrawal sweep. Throughput bounds: deposits target 8/block on the 8282 contract (fee ramps exponentially above target; CL cap `MAX_BUILDER_DEPOSIT_REQUESTS_PER_PAYLOAD` = 64), exits ≤ `MAX_BUILDER_EXIT_REQUESTS_PER_PAYLOAD` = 16/payload, withdrawability +64 epochs, sweep scans ≤ `MAX_BUILDERS_PER_WITHDRAWALS_SWEEP` = 16,384 builders/block, sharing the withdrawal pipeline with the exited-validator sweep. Also stresses the `ProgressiveList` builder registry (ties into the SSZ goal). Note: assertoor `builder-lifecycle.yaml` skips its full-withdrawal step when `MIN_BUILDER_WITHDRAWABILITY_DELAY` ≥ 10 epochs — playbook needs extending for this scenario. - **discv5-only verification**: each EL must publish — and refresh at the fork — the `eth` forkid ENR entry on its discv5 record; geth's dial-candidate filter drops nodes without it. Confirm bootnode ENR distribution, and watch for besu's silent V4 fallback masking failures. - **Txpool across the fork**: start spamming before the fork (devnet-7 started post-fork) so pools full of pre-fork-priced txs (EIP-2780 intrinsic gas, create-with-value change) get revalidated at the boundary. ### Specs & Tests **Consensus Layer** - [x] target [`v1.7.0-alpha.14`](https://github.com/ethereum/consensus-specs/releases/tag/v1.7.0-alpha.14) **Execution Layer** - [x] target [tests-glamsterdam-devnet@v8.1.1](https://github.com/ethereum/execution-specs/releases/tag/tests-glamsterdam-devnet@v8.1.1) - [x] follow-up release carrying the frozen repricing — [PR-12083](https://github.com/ethereum/EIPs/pull/12083) Merged :heavy_check_mark: ### Open PRs **EIPs** - [PR-11902 - EIP-7928: exclude the recipient when a runtime halt precedes](https://github.com/ethereum/EIPs/pull/11902) Merged :heavy_check_mark: - [PR-11997 - EIP-2780: fold transfer log cost into TX_VALUE_COST](https://github.com/ethereum/EIPs/pull/11997) Merged :heavy_check_mark: - [PR-11998 - EIP-8037: rename "regular gas" to "execution gas"](https://github.com/ethereum/EIPs/pull/11998) Merged :heavy_check_mark: - [PR-12083 - EIP-8038: revise `COLD_STORAGE_ACCESS` and `ACCOUNT_WRITE` values](https://github.com/ethereum/EIPs/pull/12083) Merged :heavy_check_mark: **Builder Specs** [ethereum/builder-specs](https://github.com/ethereum/builder-specs) — best effort for devnet-8 - [PR-165 - request auth clarifications](https://github.com/ethereum/builder-specs/pull/165) Open :exclamation: - Will there be a release? **Beacon API** - [ISSUE-599 - event to signal the builder that its bid was accepted](https://github.com/ethereum/beacon-APIs/issues/599) Open :exclamation: - [PR-606 - feat: extend /eth/v1/node/peers with peer scoring and disconnect reasons](https://github.com/ethereum/beacon-APIs/pull/606) Open :exclamation: - [PR-624 - remove BlindedExecutionPayloadEnvelope](https://github.com/ethereum/beacon-APIs/pull/624) Merged :heavy_check_mark: - [PR-627 - Add `produceBlockV4WithBid`](https://github.com/ethereum/beacon-APIs/pull/627) Open :exclamation: - [PR-629 - Add `head_v2` edge-case emissions note](https://github.com/ethereum/beacon-APIs/pull/629) Merged :heavy_check_mark: - [PR-630 - Update Beacon API for parity with Builder API and KeyManager API](https://github.com/ethereum/beacon-APIs/pull/630) Open :exclamation: - [PR-631 - Add execution_payload_value to produceBlockV4](https://github.com/ethereum/beacon-APIs/pull/631) Merged :heavy_check_mark: **Keymanager API** Best effort for devnet-8. - [PR-87 - Deprecate prior and add /validator/config endpoint](https://github.com/ethereum/keymanager-APIs/pull/87) Closed :x: - [PR-88 - add per-key builders endpoints](https://github.com/ethereum/keymanager-APIs/pull/88) Merged :heavy_check_mark: **Review order for the builder-config stack:** keymanager (#87/#88) first — builder-specs#165 and beacon-APIs#630 both depend on the shape it lands on. Open points: whether to cut per-builder p2p config options; overloading `builder_pubkey` for p2p builders (makes `url` optional, which SSZ handles badly without a first-class `Optional`); `min_bid`/boost-factor are VC-local hints the beacon node must not forward. At least one client must implement e2e before merge — the reason this flow stays best effort for devnet-8. **Consensus Specs** *Builder-bid fork-choice — PR-5472 vs PR-5491, pick one before the freeze.* :exclamation: - [PR-5294 - Add executable gossip validation functions for gloas](https://github.com/ethereum/consensus-specs/pull/5294) Merged :heavy_check_mark: - [PR-5443 - Add dependent root check to `proposer_preferences` validation](https://github.com/ethereum/consensus-specs/pull/5443) Merged :heavy_check_mark: - [PR-5459 - Add p2p helper functions for epoch inclusivity check](https://github.com/ethereum/consensus-specs/pull/5459) Merged :heavy_check_mark: - [PR-5462 - Correct `MIN_SLOTS_FOR_INCLUSION_LISTS_REQUESTS` value](https://github.com/ethereum/consensus-specs/pull/5462) Merged :heavy_check_mark: - [PR-5473 - Fix payload availability lookup using the parent block's slot](https://github.com/ethereum/consensus-specs/pull/5473) Merged :heavy_check_mark: - [PR-5495 - Preserve PTC votes when a known block is re-delivered in Gloas](https://github.com/ethereum/consensus-specs/pull/5495) Merged :heavy_check_mark: - [PR-5533 - Add optional EIP-8261 gas limit schedule](https://github.com/ethereum/consensus-specs/pull/5533) Merged :heavy_check_mark: - [PR-5550 - Set the slot of the upgraded execution payload bid](https://github.com/ethereum/consensus-specs/pull/5550) Merged :heavy_check_mark: **Execution APIs** JSON-RPC alignment targeted for devnet-8. - [PR-851 - eth/debug: specify block access list getter semantics](https://github.com/ethereum/execution-apis/pull/851) Open :exclamation: - [PR-852 - debug: specify callTracer output and add EIP-8037 two-dimensional gas to tracing](https://github.com/ethereum/execution-apis/pull/852) Open :exclamation: - [PR-854 - eth_createAccessList: clarify gas-fee affordability when fee fields omitted](https://github.com/ethereum/execution-apis/pull/854) Draft :exclamation: - [PR-855 - debug: standardize callTracer output and add debug_traceCall](https://github.com/ethereum/execution-apis/pull/855) Draft :exclamation: - **`rpc-compat` / hivechain**: blocked on the fork definition being stable enough to generate a chain loadable by production clients. A combined execution-apis branch is being assembled. **Action: declare the EL fork definition frozen modulo the repricing constants so hivechain generation can start.* **Execution Specs** - [PR-2948 - EIP-8070 sparse blobpool execute-only tests](https://github.com/ethereum/execution-specs/pull/2948) Merged :heavy_check_mark: - [PR-3214 - fold transfer log cost into value transfer cost](https://github.com/ethereum/execution-specs/pull/3214) Merged :heavy_check_mark: ## Local testing Kurtosis example: ```yaml participants_matrix: el: - el_type: geth el_image: ethpandaops/geth:glamsterdam-devnet-8 - el_type: ethrex el_image: ethpandaops/ethrex:glamsterdam-devnet-8 - el_type: nethermind el_image: ethpandaops/nethermind:glamsterdam-devnet-8 cl: - cl_type: lodestar cl_image: ethpandaops/lodestar:glamsterdam-devnet-8 network_params: preset: minimal gloas_fork_epoch: 1 additional_services: - assertoor - spamoor - dora assertoor_params: run_stability_check: false run_block_proposal_check: false tests: - { file: "https://raw.githubusercontent.com/ethpandaops/assertoor/refs/heads/master/playbooks/gloas-dev/builder-lifecycle.yaml" } - { file: "https://raw.githubusercontent.com/ethpandaops/assertoor/refs/heads/master/playbooks/gloas-dev/builder-deposit.yaml" } global_log_level: debug ``` --- ## Metrics https://notes.ethereum.org/@ethpandaops/bal-otel Previous devnet spec sheets for reference: https://notes.ethereum.org/@ethpandaops/glamsterdam-devnet-7