# 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