# Ethereum L1 Strawmap — as data.
#
# This file is the canonical, machine-readable form of the strawmap
# (https://strawmap.org). Change it via pull request. Every PR must state
# the rationale for the change (see .github/pull_request_template.md).
#
# Seed content transcribed from the strawmap.org Google Drawing revision of
# 2026-06-26 (maintained by EF Architecture). Transcription errors are
# expected and welcome as first PRs.

meta:
  title: Ethereum L1 Strawmap
  revision: "2026-06-26"
  source: https://strawmap.org
  upstream_drawing: https://docs.google.com/drawings/d/1GkcGfQv9kxgrYQMyu0BYGcZya0gIDG_wQ7GsFJEsdzY
  maintainers_upstream:
    - { name: Francesco, url: "https://x.com/fradamt" }
    - { name: Justin, url: "https://x.com/drakefjustin" }
    - { name: Thomas, url: "https://x.com/soispoke" }
    - { name: Toni, url: "https://x.com/nero_eth" }
    - { name: Vitalik, url: "https://x.com/VitalikButerin" }
  contact_upstream: strawmap@ethereum.org
  disclaimers:
    - "strawman: work-in-progress rough consensus"
    - "EF takes: not authoritative or representative"
    - "uncertain flag (🤔 emoji upstream): uncertainty about ever shipping upgrade"

# ── Timeline columns ─────────────────────────────────────────────────────────
# kind: fork (a named/lettered fork), horizon (unscheduled bucket)
columns:
  - id: glamsterdam
    kind: fork
    name: Glamsterdam
    letter: G
    sequence: n+1
    timing: "2026"
    links:
      - { title: Meta EIP-7773, url: "https://eips.ethereum.org/EIPS/eip-7773" }
  - id: hegota
    kind: fork
    name: Hegotá
    letter: H
    sequence: n+2
    timing: "2027"
    links:
      - { title: Meta EIP-8081, url: "https://eips.ethereum.org/EIPS/eip-8081" }
  - id: i-star
    kind: fork
    name: I*
    letter: I
    sequence: n+3
    timing: "2027-28"
  - id: j-star
    kind: fork
    name: J*
    letter: J
    sequence: n+4
    timing: "2028"
  - id: k-star
    kind: fork
    name: K*
    letter: K
    sequence: n+5
    timing: "2028-29"
  - id: l-star
    kind: fork
    name: L*
    letter: L
    sequence: n+6
    timing: "2029"
  - id: longer-term
    kind: horizon
    name: longer term
  - id: north-stars
    kind: horizon
    name: north stars

# ── Layers, themes, sub-themes ───────────────────────────────────────────────
# Items live at (layer, subtheme, column). Themes group subthemes and carry a
# goal: performance or hardness.
layers:
  - id: cl
    name: Consensus Layer (CL)
    short: CL
    themes:
      - id: latency
        name: latency
        goal: performance
        subthemes:
          - { id: slots, name: slots }
          - { id: finality, name: finality }
      - id: accessibility
        name: accessibility
        goal: hardness
        subthemes:
          - { id: roles, name: roles }
          - { id: specs, name: specs }
      - id: cryptography
        name: cryptography
        goal: hardness
        subthemes:
          - { id: quantum, name: quantum }
          - { id: proofs, name: proofs }
  - id: dl
    name: Data Layer (DL)
    short: DL
    themes:
      - id: throughput
        name: throughput
        goal: performance
        subthemes:
          - { id: write, name: write }
          - { id: read, name: read }
      - id: types
        name: types
        goal: hardness
        subthemes:
          - { id: quantum, name: quantum }
          - { id: features, name: features }
  - id: el
    name: Execution Layer (EL)
    short: EL
    themes:
      - id: throughput
        name: throughput
        goal: performance
        subthemes:
          - { id: gas, name: gas }
          - { id: gossip, name: gossip }
      - id: sustainability
        name: sustainability
        goal: hardness
        subthemes:
          - { id: zkevm, name: zkEVM }
          - { id: pricing, name: pricing }
      - id: evm
        name: EVM
        goal: hardness
        subthemes:
          - { id: state, name: state }
          - { id: isa, name: ISA }
      - id: cryptography
        name: cryptography
        goal: hardness
        subthemes:
          - { id: quantum, name: quantum }
          - { id: privacy, name: privacy }

# ── Items ────────────────────────────────────────────────────────────────────
# kind: headliner | onchain | offchain | north-star
#   headliner  — prominent, ambitious upgrade (ACD aims for one CL + one EL
#                headliner per fork; L* exceptionally shows two CL headliners
#                tied to the lean consensus fork)
#   onchain    — consensus-changing upgrade
#   offchain   — upgrade that does not change consensus
#   north-star — long-term goal (black box upstream)
# column: single column id, or use span: {from, to} for multi-column bars.
# badge: EIP (has an EIP) | SFI (scheduled for inclusion) | CFI (considered
#        for inclusion)
# uncertain: true — upstream 🤔 emoji, uncertainty about ever shipping.
# depends_on: arrows; hard technical dependencies or natural progressions,
#             drawn from the dependency to this item.
items:
  # ═══ Consensus Layer ═══

  - id: fast-confirmation
    title: fast confirmation
    layer: cl
    subtheme: finality
    column: glamsterdam
    kind: offchain
    description: >-
      Fast confirmation rule giving users quick (sub-slot) confidence that
      their transaction is included, ahead of full finality.
    links:
      - { title: fastconfirm.it, url: "https://fastconfirm.it" }

  - id: epbs
    title: ePBS
    layer: cl
    subtheme: roles
    column: glamsterdam
    kind: headliner
    badge: SFI
    description: >-
      Enshrined proposer-builder separation (EIP-7732). Glamsterdam CL
      headliner.
    links:
      - { title: EIP-7732, url: "https://eips.ethereum.org/EIPS/eip-7732" }

  - id: focil
    title: FOCIL
    layer: cl
    subtheme: roles
    column: hegota
    kind: headliner
    badge: SFI
    description: >-
      Fork-choice enforced inclusion lists (EIP-7805), strengthening
      censorship resistance. Hegotá CL headliner.
    links:
      - { title: EIP-7805, url: "https://eips.ethereum.org/EIPS/eip-7805" }

  - id: modernized-beacon-specs
    title: modernized beacon specs
    layer: cl
    subtheme: specs
    column: hegota
    kind: offchain

  - id: decoupled-consensus
    title: decoupled consensus
    layer: cl
    subtheme: finality
    column: i-star
    kind: headliner
    description: >-
      Decouple availability from finality to unblock faster finality.
    links:
      - title: "ethresear.ch: unblocking faster finality with decoupled consensus"
        url: "https://ethresear.ch/t/unblocking-faster-finality-with-decoupled-consensus/24527/1"
    depends_on: [fast-confirmation]

  - id: snail-issuance
    title: snail issuance
    layer: cl
    subtheme: roles
    column: i-star
    kind: onchain
    uncertain: true

  - id: pq-pubkey-registry
    title: post quantum pubkey registry
    layer: cl
    subtheme: quantum
    column: i-star
    kind: onchain
    links:
      - title: "ethresear.ch: post-quantum public key registry design space"
        url: "https://ethresear.ch/t/exploring-the-design-space-for-a-post-quantum-public-key-registry-for-ethereum-validators/25040"

  - id: quick-slots
    title: quick slots
    layer: cl
    subtheme: slots
    column: j-star
    kind: onchain
    badge: EIP
    description: >-
      Shorter slot times (EIP-8198).
    links:
      - { title: EIP-8198, url: "https://eips.ethereum.org/EIPS/eip-8198" }
    depends_on: [decoupled-consensus]

  - id: beacon-lean-specs-merge
    title: beacon & lean specs merge
    layer: cl
    subtheme: specs
    column: j-star
    kind: offchain
    depends_on: [modernized-beacon-specs]

  - id: pq-heartbeat
    title: post quantum heartbeat
    layer: cl
    subtheme: quantum
    column: j-star
    kind: headliner
    links:
      - title: "ethresear.ch: dynamically available protocol (post-quantum heartbeat)"
        url: "https://ethresear.ch/t/why-ethereum-needs-a-dynamically-available-protocol/24418#p-59055-a-near-term-benefit-post-quantum-readiness-and-post-quantum-heartbeat-6"
    depends_on: [pq-pubkey-registry, pq-leansphincs-transactions]

  - id: one-round-finality
    title: 1-round finality
    layer: cl
    subtheme: finality
    column: l-star
    kind: headliner
    description: >-
      Single-round finality as part of lean consensus.
    links:
      - title: 1-round finality notes (yannvon)
        url: "https://notes.ethereum.org/@yannvon/S1wIxIDqbe"
    depends_on: [decoupled-consensus]

  - id: attester-proposer-separation
    title: attester-proposer separation
    layer: cl
    subtheme: roles
    column: l-star
    kind: onchain
    uncertain: true
    depends_on: [snail-issuance]

  - id: tech-debt-reset
    title: tech debt reset
    layer: cl
    subtheme: specs
    column: l-star
    kind: onchain
    depends_on: [beacon-lean-specs-merge, one-round-finality]

  - id: pq-leanxmss-attestations
    title: PQ leanXMSS attestations
    layer: cl
    subtheme: quantum
    column: l-star
    kind: headliner
    description: >-
      Post-quantum (hash-based leanXMSS) attestation signatures. Second L*
      CL headliner, tied to the lean consensus fork.
    depends_on: [pq-heartbeat]

  - id: real-time-cl-proofs
    title: real-time CL proofs
    layer: cl
    subtheme: proofs
    column: l-star
    kind: offchain
    depends_on: [pq-leanxmss-attestations]

  - id: slot-duration-decreases
    title: slot duration decreases
    layer: cl
    subtheme: slots
    span: { from: l-star, to: longer-term }
    kind: onchain
    description: >-
      Continuous track of slot-time reductions.
    depends_on: [quick-slots]

  - id: one-m-attestations
    title: 1M attestations per slot
    layer: cl
    subtheme: finality
    column: longer-term
    kind: onchain
    uncertain: true

  - id: distributed-block-building
    title: distributed block building
    layer: cl
    subtheme: roles
    column: longer-term
    kind: offchain

  - id: attack-auto-recovery
    title: 51% attack auto-recovery
    layer: cl
    subtheme: specs
    column: longer-term
    kind: offchain

  - id: vdf-randomness
    title: VDF randomness
    layer: cl
    subtheme: quantum
    column: longer-term
    kind: onchain
    uncertain: true

  - id: secret-proposers
    title: secret proposers
    layer: cl
    subtheme: proofs
    column: longer-term
    kind: onchain
    uncertain: true

  - id: ns-fast-l1
    title: fast L1
    subtitle: finality in seconds
    layer: cl
    subtheme: slots
    column: north-stars
    kind: north-star
    description: >-
      Transaction inclusion and chain finality in seconds.
    depends_on: [slot-duration-decreases]

  # ═══ Data Layer ═══

  - id: sparse-blobpool
    title: sparse blobpool
    layer: dl
    subtheme: write
    column: glamsterdam
    kind: onchain
    badge: EIP
    links:
      - { title: EIP-8070, url: "https://eips.ethereum.org/EIPS/eip-8070" }

  - id: cell-level-deltas
    title: cell-level deltas
    layer: dl
    subtheme: read
    column: glamsterdam
    kind: onchain
    badge: EIP
    links:
      - { title: EIP-8136, url: "https://eip.tools/eip/8136" }

  - id: local-blob-reconstruction
    title: local blob reconstruction
    layer: dl
    subtheme: read
    column: i-star
    kind: offchain
    depends_on: [cell-level-deltas]

  - id: pq-leanda-sampling
    title: PQ leanDA sampling
    layer: dl
    subtheme: quantum
    column: j-star
    kind: onchain
    depends_on: [leanvm]

  - id: leanvm
    title: leanVM
    layer: dl
    subtheme: features
    column: j-star
    kind: offchain
    links:
      - { title: leanMultisig (leanEthereum), url: "https://github.com/leanEthereum/leanMultisig" }

  - id: remove-blob-transaction-type
    title: remove blob transaction type
    layer: dl
    subtheme: features
    column: l-star
    kind: onchain
    depends_on: [pq-leanda-sampling]

  - id: data-availability-increases
    title: data availability increases
    layer: dl
    subtheme: write
    span: { from: i-star, to: longer-term }
    kind: onchain
    description: >-
      Continuous track of data availability capacity increases.
    depends_on: [sparse-blobpool, cell-level-deltas]

  - id: blob-streaming
    title: blob streaming
    layer: dl
    subtheme: read
    column: longer-term
    kind: onchain
    links:
      - title: blob streaming (hackmd)
        url: "https://hackmd.io/@gMH0wL_0Sr69C7I7inO8MQ/B125sCUtZx"
    depends_on: [local-blob-reconstruction]

  - id: proofs-of-custody
    title: proofs of custody
    layer: dl
    subtheme: quantum
    column: longer-term
    kind: onchain
    uncertain: true

  - id: short-dated-blob-futures
    title: short-dated blob futures
    layer: dl
    subtheme: features
    column: longer-term
    kind: onchain
    uncertain: true

  - id: ns-teragas-l2
    title: teragas L2
    subtitle: 1 Gbyte/sec
    layer: dl
    subtheme: write
    column: north-stars
    kind: north-star
    description: >-
      1 gigabyte/sec (10M TPS) at L2, via data availability sampling.
    depends_on: [data-availability-increases]

  - id: ns-post-quantum-l1
    title: post quantum L1
    subtitle: hash-based
    layer: dl
    subtheme: quantum
    column: l-star
    kind: north-star
    cross_layer: true
    description: >-
      Centuries-long cryptographic security via hash-based schemes.
      Cross-layer north star, placed at L* on the upstream map.
    depends_on: [pq-leanxmss-attestations, pq-leanda-sampling]

  # ═══ Execution Layer ═══

  - id: gas-limit-increases
    title: gas limit increases
    layer: el
    subtheme: gas
    span: { from: hegota, to: longer-term }
    kind: offchain
    description: >-
      Continuous track of gas limit increases.

  - id: ethp2p-broadcast
    title: ethp2p broadcast
    layer: el
    subtheme: gossip
    column: hegota
    kind: offchain
    links:
      - { title: ethp2p, url: "https://github.com/ethp2p/ethp2p" }

  - id: evm-asm-canonical-guest
    title: evm-asm canonical guest
    layer: el
    subtheme: zkevm
    column: glamsterdam
    kind: offchain
    links:
      - { title: evm-asm (Verified-zkEVM), url: "https://github.com/Verified-zkEVM/evm-asm" }

  - id: glamsterdam-repricing
    title: Glamsterdam repricing
    layer: el
    subtheme: pricing
    column: glamsterdam
    kind: onchain
    badge: CFI
    links:
      - { title: EIP-8007, url: "https://eips.ethereum.org/EIPS/eip-8007" }

  - id: bals
    title: BALs
    layer: el
    subtheme: state
    column: glamsterdam
    kind: headliner
    badge: SFI
    description: >-
      Block-level access lists (EIP-7928). Glamsterdam EL headliner.
    links:
      - { title: EIP-7928, url: "https://eips.ethereum.org/EIPS/eip-7928" }

  - id: optional-2of3-proofs
    title: optional 2-of-3 proofs
    layer: el
    subtheme: zkevm
    column: hegota
    kind: onchain
    badge: EIP
    links:
      - { title: EIP-8025, url: "https://eips.ethereum.org/EIPS/eip-8025" }
    depends_on: [evm-asm-canonical-guest]

  - id: data-repricing
    title: data repricing
    layer: el
    subtheme: pricing
    column: hegota
    kind: onchain
    badge: EIP
    links:
      - { title: Hegotá repricings, url: "https://misilva73.github.io/hegota-repricings/" }
    depends_on: [glamsterdam-repricing]

  - id: state-asm
    title: state-asm
    layer: el
    subtheme: state
    column: hegota
    kind: offchain

  - id: evmify-longtail-precompiles
    title: EVMify long-tail precompiles
    layer: el
    subtheme: isa
    column: hegota
    kind: onchain
    badge: EIP
    links:
      - { title: EIP-8200, url: "https://eips.ethereum.org/EIPS/eip-8200" }

  - id: frame-transactions
    title: frame transactions
    layer: el
    subtheme: quantum
    column: hegota
    kind: headliner
    badge: CFI
    links:
      - { title: EIP-8141, url: "https://eips.ethereum.org/EIPS/eip-8141" }

  - id: keyed-nonces-recent-roots
    title: keyed nonces & recent roots
    layer: el
    subtheme: privacy
    column: hegota
    kind: onchain
    badge: EIP
    links:
      - { title: EIP-8250, url: "https://eips.ethereum.org/EIPS/eip-8250" }
      - { title: EIP-8272, url: "https://eips.ethereum.org/EIPS/eip-8272" }

  - id: multidimensional-pricing
    title: multidimensional pricing
    layer: el
    subtheme: pricing
    column: i-star
    kind: onchain
    badge: EIP
    links:
      - { title: EIP-7999, url: "https://eips.ethereum.org/EIPS/eip-7999" }
    depends_on: [data-repricing]

  - id: partial-binary-tree
    title: partial binary tree
    layer: el
    subtheme: state
    column: i-star
    kind: headliner
    depends_on: [state-asm]

  - id: pureth-purges
    title: pureth purges
    layer: el
    subtheme: isa
    column: i-star
    kind: onchain
    badge: EIP
    links:
      - { title: EIP-7919 (pureth), url: "https://eips.ethereum.org/EIPS/eip-7919" }
    depends_on: [evmify-longtail-precompiles]

  - id: ephemeral-keys
    title: ephemeral keys
    layer: el
    subtheme: quantum
    column: i-star
    kind: offchain
    links:
      - title: "ethresear.ch: quantum safety through ephemeral key pairs"
        url: "https://ethresear.ch/t/achieving-quantum-safety-through-ephemeral-key-pairs-and-account-abstraction/24273"
    depends_on: [frame-transactions]

  - id: leanda-block-sampling
    title: leanDA block sampling
    layer: el
    subtheme: pricing
    column: j-star
    kind: onchain
    badge: EIP
    links:
      - { title: EIP-8142, url: "https://eips.ethereum.org/EIPS/eip-8142" }
    depends_on: [multidimensional-pricing]

  - id: validity-only-partial-state
    title: validity-only partial state
    layer: el
    subtheme: state
    column: j-star
    kind: offchain
    links:
      - title: "ethresear.ch: validity-only partial statelessness (VOPS)"
        url: "https://ethresear.ch/t/a-pragmatic-path-towards-validity-only-partial-statelessness-vops/22236"
    depends_on: [partial-binary-tree]

  - id: pq-leansphincs-transactions
    title: PQ leanSPHINCS transactions
    layer: el
    subtheme: quantum
    column: j-star
    kind: headliner
    depends_on: [ephemeral-keys]

  - id: mandatory-1of1-proofs
    title: mandatory 1-of-1 proofs
    layer: el
    subtheme: zkevm
    column: k-star
    kind: headliner
    description: >-
      Mandatory zkEVM validity proofs (1-of-1).
    depends_on: [optional-2of3-proofs, leanda-block-sampling]

  - id: decentralized-state
    title: decentralized state
    layer: el
    subtheme: state
    column: k-star
    kind: offchain
    depends_on: [validity-only-partial-state]

  - id: native-rollups
    title: native rollups
    layer: el
    subtheme: zkevm
    column: l-star
    kind: onchain
    badge: EIP
    links:
      - { title: EIP-8079, url: "https://eips.ethereum.org/EIPS/eip-8079" }
    depends_on: [mandatory-1of1-proofs]

  - id: zkzkriscv-frames
    title: zkzkRISC-V frames
    layer: el
    subtheme: isa
    column: l-star
    kind: headliner
    links:
      - title: "ethereum-magicians: replace the EVM with RISC-V"
        url: "https://ethereum-magicians.org/t/long-term-l1-execution-layer-proposal-replace-the-evm-with-risc-v/23617"
    depends_on: [pureth-purges]

  - id: ethp2p-unification
    title: ethp2p unification
    layer: el
    subtheme: gossip
    column: l-star
    kind: offchain
    depends_on: [ethp2p-broadcast]

  - id: privacy-mempool
    title: privacy mempool
    layer: el
    subtheme: privacy
    column: l-star
    kind: offchain
    depends_on: [keyed-nonces-recent-roots]

  - id: sharded-mempool
    title: sharded mempool
    layer: el
    subtheme: gossip
    column: longer-term
    kind: offchain
    depends_on: [ethp2p-unification]

  - id: long-dated-gas-futures
    title: long-dated gas futures
    layer: el
    subtheme: pricing
    column: longer-term
    kind: onchain
    uncertain: true

  - id: endgame-state
    title: endgame state
    layer: el
    subtheme: state
    column: longer-term
    kind: onchain
    uncertain: true
    links:
      - title: "ethresear.ch: hyper-scaling state with new forms of state"
        url: "https://ethresear.ch/t/hyper-scaling-state-by-creating-new-forms-of-state/24052"
    depends_on: [decentralized-state]

  - id: lean-privacy-wormholes
    title: lean privacy wormholes
    layer: el
    subtheme: quantum
    column: longer-term
    kind: onchain

  - id: encrypted-mempool
    title: encrypted mempool
    layer: el
    subtheme: privacy
    column: longer-term
    kind: offchain
    badge: EIP
    links:
      - { title: EIP-8184, url: "https://eips.ethereum.org/EIPS/eip-8184" }
    depends_on: [privacy-mempool]

  - id: ns-gigagas-l1
    title: gigagas L1
    subtitle: 1 Ggas/sec
    layer: el
    subtheme: gas
    column: north-stars
    kind: north-star
    description: >-
      1 gigagas/sec (10K TPS) at L1, via zkEVMs and real-time proving.
    depends_on: [gas-limit-increases]

  - id: ns-private-l1
    title: private L1
    subtitle: shielded transfers
    layer: el
    subtheme: privacy
    column: north-stars
    kind: north-star
    description: >-
      Privacy as a first-class citizen, via L1 shielded transfers.
    depends_on: [encrypted-mempool]
