# glamsterdam-devnet-11 spec :::info :mega: **Genesis Monday 2026-09-14 12:00 UTC** (`MIN_GENESIS_TIME` 1789387200). **Gloas at epoch 450 — Wednesday 2026-09-16 12:00 UTC** (48 h). Gas limit 60M → 200M at epoch 480 (15:12 UTC). Short-lived; devnet-8 (Plataberget) stays up until the mainnet fork. ::: :::info :checkered_flag: **Scope.** Happy-path fork-transition devnet for L2s (Lido, Optimism, Arbitrum — Lido asked for ≥ 2 days pre-fork). A devnet-8 copy: same EIPs, same 6 CL × 7 EL × 2 grid, 84k validators, same premines and 8282 contracts. **No new EIPs, no adversarial testing** — attacks stay on devnet-8. ::: :::warning :rotating_light: **Trunk images with a binding floor.** devnet-9 asked for "trunk" without saying which spec, and Prysm forked on alpha.12. For devnet-11 an image goes into the genesis set only if it is at **CL** [consensus-specs `v1.7.0-beta.0`](https://github.com/ethereum/consensus-specs/releases/tag/v1.7.0-beta.0) (`756f49cf`, 09-04) and **EL** passes [`tests-glamsterdam-devnet@v8.1.4`](https://github.com/ethereum/execution-specs/releases/tag/tests-glamsterdam-devnet@v8.1.4) (09-03). Two consensus deltas vs the rules devnet-8 forked on: **EIP-7610 removed** and **EIP-8037 merge-time state-gas repayment** ([EIPs #12265](https://github.com/ethereum/EIPs/pull/12265)). Plus CL [#5594](https://github.com/ethereum/consensus-specs/pull/5594): bids with `block_hash == parent_block_hash` are rejected. ::: ## EIP List for glamsterdam-devnet-11 Unchanged from devnet-8 except where marked. | EIP | Title | Status | |-----|-------|:------:| |[EIP-2780](https://eips.ethereum.org/EIPS/eip-2780) | Reduce intrinsic transaction gas | | |[EIP-7610](https://eips.ethereum.org/EIPS/eip-7610) | Revert creation in case of non-empty storage | :x: | |[EIP-7688](https://eips.ethereum.org/EIPS/eip-7688) | Forward compatible consensus data structures | | |[EIP-7708](https://eips.ethereum.org/EIPS/eip-7708) | ETH transfers emit a log | | |[EIP-7732](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-7732.md) | Enshrined Proposer-Builder Separation | :up: | |[EIP-7778](https://eips.ethereum.org/EIPS/eip-7778) | Block Gas Accounting without Refunds | | |[EIP-7843](https://eips.ethereum.org/EIPS/eip-7843) | 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) | Block-Level Access Lists | | |[EIP-7954](https://eips.ethereum.org/EIPS/eip-7954) | 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) | Increase Calldata Floor Cost (64/64) | | |[EIP-7981](https://eips.ethereum.org/EIPS/eip-7981) | Increase Access List Cost | | |[EIP-7997](https://eips.ethereum.org/EIPS/eip-7997) | Deterministic Factory Predeploy | | |[EIP-8024](https://eips.ethereum.org/EIPS/eip-8024) | Backward compatible SWAPN, DUPN, EXCHANGE | | |[EIP-8037](https://eips.ethereum.org/EIPS/eip-8037) | State Creation Gas — merge-time repayment to `gas_left` (#12265) | :up: | |[EIP-8038](https://eips.ethereum.org/EIPS/eip-8038) | State-access gas cost update (ACDT #90 numbers) | | |[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) | eth/72 - Sparse Blobpool | | |[EIP-8136](https://eips.ethereum.org/EIPS/eip-8136) | Cell-Level Deltas for Data Column Broadcast | | |[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 | | |[EIP-8246](https://eips.ethereum.org/EIPS/eip-8246) | Remove SELFDESTRUCT Burn | | |[EIP-8261](https://eips.ethereum.org/EIPS/eip-8261) | Gas Limit Schedule (optional) — 60M → 200M at epoch 480 | ℹ️ | |[EIP-8282](https://github.com/ethereum/EIPs/pull/11760) | Add builder execution requests | | **Key:** :up: updated · :x: removed · ℹ️ informational / optional. [EIP-8253](https://eips.ethereum.org/EIPS/eip-8253) is **not** in devnet-11 (ACDE #245 decides Glamsterdam vs Hegotá; either way it needs its own fixture release). ## Test Releases **Consensus Specs:** [v1.7.0-beta.0](https://github.com/ethereum/consensus-specs/releases/tag/v1.7.0-beta.0) (2026-09-04, `756f49cf53c3`) :heavy_check_mark: — vs alpha.14: [#5594](https://github.com/ethereum/consensus-specs/pull/5594) reject aliased bids (state transition), [#5580](https://github.com/ethereum/consensus-specs/pull/5580) IGNORE bids from builders exited by the parent payload (gossip), [#5554](https://github.com/ethereum/consensus-specs/pull/5554) slot from header, [#5559](https://github.com/ethereum/consensus-specs/pull/5559)/[#5582](https://github.com/ethereum/consensus-specs/pull/5582) proposer preferences at the boundary, [#5545](https://github.com/ethereum/consensus-specs/pull/5545) anchor PTC arrays. No Gloas `configs/` change — the devnet-8 `config.yaml` shape still works. **Execution Specs (EELS):** [tests-glamsterdam-devnet@v8.1.4](https://github.com/ethereum/execution-specs/releases/tag/tests-glamsterdam-devnet@v8.1.4) (2026-09-03) — branch [`devnets/glamsterdam/8`](https://github.com/ethereum/execution-specs/tree/devnets/glamsterdam/8) @ `7341820b` :heavy_check_mark:. Since devnet-9's v8.1.2: **v8.1.3** (7610 tests removed, undecodable BAL → `INVALID` tests) → **v8.1.4** ([#3478](https://github.com/ethereum/execution-specs/pull/3478) = EIPs #12265, **consensus-breaking**). `src/` is spec-equivalent to `forks/amsterdam`. Do not pin `tests@v20.0.2`; it does not fill Amsterdam. Hive: [glamsterdam group](https://hive.ethpandaops.io/#/group/glamsterdam). ## Client readiness (trunk, verified 2026-09-08) | Client | Trunk | Spec on trunk | Status for the floor | |--------|-------|---------------|----------------------| | Geth | `geth:master` | v8.1.4 | ✅ 7610 removed, 8037 [#35633](https://github.com/ethereum/go-ethereum/pull/35633) | | Besu | `besu:main` | v8.1.4 | ⚠️ 7610 still enforced ([#11191](https://github.com/besu-eth/besu/pull/11191) draft); OOM + `eth_estimateGas` exception under load ([#11248](https://github.com/besu-eth/besu/issues/11248)) | | Reth | `reth:main` | **pre-#12265** | ❌ revm 43.0.0; the fix ([revm #3893](https://github.com/bluealloy/revm/pull/3893)) is unreleased, no bump PR. Hive still tests the devnet-8 tag | | Nethermind | `nethermind:master` | v8.1.4 | ✅ | | Erigon | `erigon:main` | v8.1.4 | ✅ (`engine_getBlobsV4` cells fail 145/170 fixtures; no eth/72) | | Nimbus-EL | `nimbus-eth1:master` | v8.1.4 | ⚠️ 7610 still enforced, no PR | | Ethrex | `ethrex:main` | v8.1.4 ([#7254](https://github.com/lambdaclass/ethrex/pull/7254)) | ⚠️ 7610 still enforced, no PR; `getBlobsV4` cells 137/170 fail | | Lighthouse | `lighthouse:unstable` | alpha.14 (+ #5594 [#9970](https://github.com/sigp/lighthouse/pull/9970)) | ⚠️ state-equivalent to beta.0; image rebuilt 09-08 12:30 UTC (`b9ae2c6`); 8261 [#9878](https://github.com/sigp/lighthouse/pull/9878) WIP | | Lodestar | `lodestar:unstable` | beta.0 ([#9955](https://github.com/ChainSafe/lodestar/pull/9955)) | ✅ | | Prysm | `prysm-beacon-chain:develop` | **alpha.12** | ❌ zero-filled fork bid fields, no #5594 — forks as on devnet-9. Needs [#17382](https://github.com/OffchainLabs/prysm/pull/17382) + [#17440](https://github.com/OffchainLabs/prysm/pull/17440) + [#17412](https://github.com/OffchainLabs/prysm/pull/17412); fallback is the devnet-8 tag `f9c6081` (alpha.14 + #5594) | | Teku | `teku:master` | beta.0 ([#11221](https://github.com/Consensys-Incorporated/teku/pull/11221)) | ✅ image rebuilt 09-08 12:26 UTC (`c48f0225`, beta.0 + #5594); [#11239](https://github.com/Consensys-Incorporated/teku/pull/11239) open | | Nimbus | `nimbus-eth2:unstable` | beta.0 ([#8990](https://github.com/status-im/nimbus-eth2/pull/8990)) | ⚠️ `f370c3` (first image with the [#7921](https://github.com/status-im/nimbus-eth2/pull/7921) sync rewrite) sends no FCU on devnet-8; pinned back to `6391f9` | | Grandine | `grandine:develop` | **alpha.14, no #5594/#5580** | ❌ accepts a bid every beta.0 client rejects ([#910](https://github.com/grandinetech/grandine/issues/910)); image rebuilt 09-08 12:23 UTC; 8261 [#854](https://github.com/grandinetech/grandine/pull/854) | **Image builder:** scheduled runs had failed since 09-02 (bullseye apt repo expired; teku moved to `Consensys-Incorporated`); fixed in [#407](https://github.com/ethpandaops/eth-client-docker-image-builder/pull/407) (merged 09-08 11:57 UTC), lighthouse/grandine/teku trunk images rebuilt and verified to start. Remaining builder failures (caplin Go 1.26, nevermind patch) are in [#408](https://github.com/ethpandaops/eth-client-docker-image-builder/pull/408) and do not affect devnet-11 images. **EIP-7610 removal is still a 4–3 split** (besu, nimbus-el, ethrex enforce it). Only reachable via a genesis-constructed storage-only account, so not a devnet-11 risk, but it is one for Sepolia. Pre-Gloas parent `get_parent_payload_status` has three answers in code (`EMPTY` LH/Teku, `FULL` Lodestar/Prysm/Nimbus, `PENDING` Grandine) — [#5125](https://github.com/ethereum/consensus-specs/pull/5125). ## Spec versions required & Open PRs **EIPs** - [PR-12249 - Update EIP-8037: refill state-gas for a SELFDESTRUCTed account](https://github.com/ethereum/EIPs/pull/12249) Open :exclamation: - declined three times (ACDT #94, ACDE #244, ACDT #95); to be closed. - [PR-12256 - Update EIP-8037: restore a frame's state-gas on rollback](https://github.com/ethereum/EIPs/pull/12256) Merged :heavy_check_mark: - [PR-12265 - Update EIP-8037: return state-gas to gas_left when a child merges](https://github.com/ethereum/EIPs/pull/12265) Merged :heavy_check_mark: - 09-04, consensus-breaking, in v8.1.4. EEST's `spec@` pin predates it → [EELS #3529](https://github.com/ethereum/execution-specs/pull/3529). - [PR-12296 - Update EIP-8037: drop the EIP-7610 references, use EIP-684](https://github.com/ethereum/EIPs/pull/12296) Open :exclamation: - [PR-12303 - Update EIP-8037: commit pre-execution state-gas so a top-level rollback does not refill it](https://github.com/ethereum/EIPs/pull/12303) Open :exclamation: - no change for clients matching EELS; a client that refills the 7702 authorization charge on a top-level revert diverges. Spamoor scenario on devnet-11. - [PR-12275 - EIP-8070: define size_i for type-3 transactions](https://github.com/ethereum/EIPs/pull/12275) Open :exclamation: **Consensus Specs** - [PR-5125 - Guard `get_parent_payload_status` at fork boundary](https://github.com/ethereum/consensus-specs/pull/5125) Open :exclamation: - [PR-5509 - Only return viable payload-status variants from `get_head`](https://github.com/ethereum/consensus-specs/pull/5509) Open :exclamation: - approved twice, unmerged. - [PR-5594 - Reject bids with `block_hash` equal to `parent_block_hash`](https://github.com/ethereum/consensus-specs/pull/5594) Merged :heavy_check_mark: - [PR-5598 - Check bid gas limit in `process_execution_payload_bid`](https://github.com/ethereum/consensus-specs/pull/5598) Closed :x: - not a consensus rule; the check lives in [builder-specs #166](https://github.com/ethereum/builder-specs/pull/166). - [PR-5608 - Serve only canonical payload envelopes by range](https://github.com/ethereum/consensus-specs/pull/5608) Open :exclamation: - approved; Teku/Nimbus/Lighthouse served orphaned envelopes on devnet-9. Retest here after finality. - [PR-5609 - Deadline for `blob_data_available` in the payload attestation](https://github.com/ethereum/consensus-specs/pull/5609) Open :exclamation: - [PR-5612 - Clarify when to broadcast payload attestation messages](https://github.com/ethereum/consensus-specs/pull/5612) Open :exclamation: - the devnet-8 "PTC voted too early" finding; only Lodestar votes as specified today. **Execution APIs** - [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-856 - engine: specify bit ordering for the 16-byte custody and cell bitarrays](https://github.com/ethereum/execution-apis/pull/856) Open :exclamation: - approved 08-04, unmerged; a reversed ordering fails silently. - [PR-867 - hivechain: upgrade the rpc-compat chain to Amsterdam](https://github.com/ethereum/execution-apis/pull/867) Open :exclamation: - [PR-869 - engine: return INVALID for undecodable blockAccessList](https://github.com/ethereum/execution-apis/pull/869) Merged :heavy_check_mark: - on all seven trunks. - [PR-881 - eth_simulateV1: define simulated block identity after Amsterdam](https://github.com/ethereum/execution-apis/pull/881) Open :exclamation: - clients disagree on `slotNumber`, `blockAccessListHash` and `traceTransfers` vs EIP-7708 ([#868](https://github.com/ethereum/execution-apis/issues/868)); blocks rpc-compat. Tell L2s up front. **Networking** - [PR-281 - caps/eth: define the pooled transaction encoding and fix the txsize definition](https://github.com/ethereum/devp2p/pull/281) Open :exclamation: **Execution Specs** - [PR-3478 - feat(amsterdam): EIP-8037 repay state-gas spill on child merge](https://github.com/ethereum/execution-specs/pull/3478) Merged :heavy_check_mark: - [PR-3508 - feat(amsterdam): wipe pre-existing storage on contract creation from Cancun onward](https://github.com/ethereum/execution-specs/pull/3508) Open :exclamation: - consensus-affecting for the 28 legacy accounts once 7610 is gone; decide with the 8253 call. - [PR-3529 - chore(tests): refresh the EIP-8037 reference-spec pin](https://github.com/ethereum/execution-specs/pull/3529) Draft :exclamation: - [PR-3535 - EIP-8253: bump nonce of zero-nonce storage accounts](https://github.com/ethereum/execution-specs/pull/3535) Draft :exclamation: **Beacon / Builder API** — the Gloas builder flow ([beacon-APIs #630](https://github.com/ethereum/beacon-APIs/pull/630), [builder-specs #165](https://github.com/ethereum/builder-specs/pull/165)/[#166](https://github.com/ethereum/builder-specs/pull/166), [keymanager #88](https://github.com/ethereum/keymanager-APIs/pull/88)) is merged but untagged; best effort as on devnet-8. ## Genesis / network parameters | Parameter | devnet-8 | devnet-11 | |-----------|----------|-----------| | Genesis | 2026-08-13 12:00 UTC | **2026-09-14 12:00 UTC** (1789387200) | | `GLOAS_FORK_EPOCH` / `amsterdamTime` | 1536 / 1787212224 | **450 / 1789560000** | | `GAS_LIMIT_SCHEDULE` | 200M at epoch 1566 | **200M at epoch 480** | | Nodes / validators | 84 + 2 bootnodes + 8 buildoors / 84,000 | same | | Genesis generator | 6.2.0 | **6.2.1** | | Watchtower | on | **off** — rolls on request, one node at a time, never within ±4 epochs of the fork | | Buildoor hosts | 16 GB | **32 GB** (devnet-9 OOM) | EL discovery discv5-only, DNS discovery off (flags as devnet-8). Every client gets the network config **explicitly** — no baked-in `plataberget` names. `--rpc.gascap=200000000` everywhere. Infra: [glamsterdam-devnets #83](https://github.com/ethpandaops/glamsterdam-devnets/pull/83). Schedule vs Sepolia (Oct 6) and the shadow forks: [team note](https://notes.ethereum.org/@ethpandaops/glamsterdam-devnet-11-schedule). ## Open items before launch - [x] Image builder [#407](https://github.com/ethpandaops/eth-client-docker-image-builder/pull/407) merged; fresh `lighthouse:unstable`, `grandine:develop`, `teku:master` (09-08 12:2x UTC). - [ ] Prysm: #17382 merged and `develop` passes beta.0 vectors, or the `f9c6081` fallback. Answer by Fri 09-11. - [ ] Grandine: beta.0 bump or at least #5594 + #5580. - [ ] Reth: revm release + bump; then hive-tests reth → `main`. - [ ] Nimbus: `unstable` fixed for the missing FCU, or pin `6391f9`. - [ ] Every EL: a green v8.1.4 hive run from its trunk tag (besu/nethermind stale since August). - [ ] EIP-7610: decide fix-before-Monday or out of scope for devnet-11 (in scope for Sepolia). - [ ] L2s told the dates and given endpoints on Monday. ## Local testing ```yaml participants_matrix: el: - { el_type: geth, el_image: ethpandaops/geth:master } - { el_type: nethermind, el_image: ethpandaops/nethermind:master } - { el_type: besu, el_image: ethpandaops/besu:main } - { el_type: reth, el_image: ethpandaops/reth:main } - { el_type: erigon, el_image: ethpandaops/erigon:main } - { el_type: ethrex, el_image: ethpandaops/ethrex:main } - { el_type: nimbus, el_image: ethpandaops/nimbus-eth1:master } cl: - { cl_type: lighthouse, cl_image: ethpandaops/lighthouse:unstable } - { cl_type: lodestar, cl_image: ethpandaops/lodestar:unstable } - { cl_type: teku, cl_image: ethpandaops/teku:master } - { cl_type: nimbus, cl_image: ethpandaops/nimbus-eth2:unstable } - { cl_type: prysm, cl_image: ethpandaops/prysm-beacon-chain:develop, vc_image: ethpandaops/prysm-validator:develop } - { cl_type: grandine, cl_image: ethpandaops/grandine:develop } network_params: preset: minimal gloas_fork_epoch: 2 genesis_gaslimit: 60000000 gas_limit: 60000000 gas_limit_schedule: [{ epoch: 4, gas_limit: 200000000 }] 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" } dora_params: { image: ethpandaops/dora:master-latest } global_log_level: debug ``` --- Metrics: https://notes.ethereum.org/@ethpandaops/bal-otel · Previous: https://notes.ethereum.org/@ethpandaops/glamsterdam-devnet-9 · https://notes.ethereum.org/@ethpandaops/glamsterdam-devnet-8