# Ethereum L1 Strawmap — historical snapshot, revision 2026-02-25.
#
# The first public strawmap. Transcribed from the strawmap.org drawing as of
# Feb 25, 2026 (via the comparison images in Barnabé Monnot's thread,
# x.com/barnabemonnot/status/2073708226701328474). Item ids match the current
# strawmap.yaml where an upgrade is the same concept under a different name
# or position, so diffs show moves and renames rather than add/remove pairs.

meta:
  title: Ethereum L1 Strawmap
  revision: "2026-02-25"
  source: https://strawmap.org
  maintainers_upstream:
    - { name: Ansgar, url: "https://x.com/adietrichs" }
    - { name: Barnabé, url: "https://x.com/barnabemonnot" }
    - { name: Francesco, url: "https://x.com/fradamt" }
    - { name: Justin, url: "https://x.com/drakefjustin" }
  disclaimers:
    - "strawman: work-in-progress rough consensus"
    - "EF takes: not authoritative or representative"
    - "uncertain flag (🤔 emoji upstream): uncertainty about ever shipping upgrade"

columns:
  - id: glamsterdam
    kind: fork
    name: Glamsterdam
    letter: G
    timing: "2026"
  - id: hegota
    kind: fork
    name: Hegotá
    letter: H
    timing: "2026"
  - id: i-star
    kind: fork
    name: I*
    letter: I
    timing: "2027"
  - id: j-star
    kind: fork
    name: J*
    letter: J
    timing: "2027"
  - id: k-star
    kind: fork
    name: K*
    letter: K
    timing: "2028"
  - id: l-star
    kind: fork
    name: L*
    letter: L
    timing: "2029"
  - id: m-star
    kind: fork
    name: M*
    letter: M
    timing: "2029"
  - id: longer-term
    kind: horizon
    name: longer term
    timing: "2030++"

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: specs, name: specs }
          - { id: roles, name: roles }
      - 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: zkevm, name: zkEVM }
          - { id: pricing, name: pricing }
      - id: sustainability
        name: sustainability
        goal: performance
        subthemes:
          - { id: gossip, name: gossip }
          - { id: state, name: state }
      - id: evm
        name: EVM
        goal: hardness
        subthemes:
          - { id: isa, name: ISA }
          - { id: aa, name: AA }
      - id: cryptography
        name: cryptography
        goal: hardness
        subthemes:
          - { id: quantum, name: quantum }
          - { id: privacy, name: privacy }

items:
  # ═══ Consensus Layer ═══

  - id: quick-slots
    title: quick slots
    layer: cl
    subtheme: slots
    column: hegota
    kind: onchain

  - id: k-6-sec-slots
    title: K* 6-sec slots
    layer: cl
    subtheme: slots
    column: k-star
    kind: headliner
    depends_on: [quick-slots]

  - id: endgame-slots
    title: endgame slots
    layer: cl
    subtheme: slots
    column: m-star
    kind: headliner
    depends_on: [k-6-sec-slots]

  - id: fast-confirmation
    title: fast confirmation
    layer: cl
    subtheme: finality
    column: glamsterdam
    kind: offchain

  - id: one-epoch-finality
    title: 1-epoch finality
    layer: cl
    subtheme: finality
    column: i-star
    kind: headliner
    depends_on: [fast-confirmation]

  - id: four-slot-epochs
    title: 4-slot epochs
    layer: cl
    subtheme: finality
    column: j-star
    kind: headliner
    depends_on: [one-epoch-finality]

  - id: endgame-finality
    title: endgame finality
    layer: cl
    subtheme: finality
    column: l-star
    kind: headliner
    depends_on: [four-slot-epochs]

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

  - id: ns-fast-l1
    title: fast L1
    subtitle: finality in seconds
    layer: cl
    subtheme: finality
    column: m-star
    kind: north-star
    depends_on: [endgame-slots, endgame-finality]

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

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

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

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

  - id: epbs
    title: ePBS
    layer: cl
    subtheme: roles
    column: glamsterdam
    kind: headliner

  - id: focil
    title: FOCIL
    layer: cl
    subtheme: roles
    column: hegota
    kind: headliner

  - id: attester-stake-cap
    title: attester stake cap
    layer: cl
    subtheme: roles
    column: i-star
    kind: onchain
    uncertain: true

  - id: attester-cap-128k
    title: 128K attester cap
    layer: cl
    subtheme: roles
    column: j-star
    kind: onchain
    depends_on: [attester-stake-cap]

  - id: aps
    title: APS
    layer: cl
    subtheme: roles
    column: k-star
    kind: onchain
    uncertain: true
    depends_on: [attester-cap-128k]

  - id: one-eth-includers
    title: 1 ETH includers
    layer: cl
    subtheme: roles
    column: l-star
    kind: onchain
    depends_on: [attester-cap-128k]

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

  - id: pq-pubkey-registry
    title: post quantum pubkey registry
    layer: cl
    subtheme: quantum
    column: i-star
    kind: onchain

  - id: pq-available-chain
    title: post quantum available chain
    layer: cl
    subtheme: quantum
    column: j-star
    kind: onchain
    depends_on: [pq-pubkey-registry]

  - id: pq-leanxmss-attestations
    title: post quantum attestations
    layer: cl
    subtheme: quantum
    column: l-star
    kind: headliner
    depends_on: [pq-available-chain]

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

  - id: leanvm-aggregation
    title: leanVM aggregation
    layer: cl
    subtheme: proofs
    column: l-star
    kind: onchain

  - id: real-time-cl-proofs
    title: real-time CL proofs
    layer: cl
    subtheme: proofs
    column: m-star
    kind: offchain
    depends_on: [leanvm-aggregation]

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

  # ═══ Data Layer ═══

  - id: sparse-blobpool
    title: sparse blobpool
    layer: dl
    subtheme: write
    column: glamsterdam
    kind: offchain

  - id: ethp2p-broadcast
    title: ethp2p broadcast
    layer: dl
    subtheme: write
    column: hegota
    kind: offchain

  - id: hegota-bpo
    title: Hegotá BPO blobs increase
    layer: dl
    subtheme: write
    column: hegota
    kind: onchain
    depends_on: [sparse-blobpool]

  - id: j-bpo
    title: J* BPO blobs increase
    layer: dl
    subtheme: write
    column: j-star
    kind: onchain
    depends_on: [hegota-bpo, local-blob-reconstruction]

  - id: l-bpo
    title: L* BPO blobs increase
    layer: dl
    subtheme: write
    column: l-star
    kind: onchain
    depends_on: [j-bpo]

  - id: ns-teragas-l2
    title: teragas L2
    subtitle: 1 Gbyte/sec
    layer: dl
    subtheme: write
    column: longer-term
    kind: north-star
    depends_on: [l-bpo]

  - id: cell-level-deltas
    title: cell-level messages
    layer: dl
    subtheme: read
    column: glamsterdam
    kind: offchain

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

  - id: decrease-sample-size
    title: decrease sample size
    layer: dl
    subtheme: read
    column: j-star
    kind: offchain

  - id: post-quantum-sampling
    title: post quantum sampling
    layer: dl
    subtheme: quantum
    column: m-star
    kind: onchain

  - id: ns-post-quantum-l1
    title: post quantum L1
    subtitle: hash-based
    layer: dl
    subtheme: quantum
    column: m-star
    kind: north-star
    cross_layer: true
    depends_on: [pq-leanxmss-attestations, post-quantum-sampling]

  - id: proofs-of-custody
    title: proofs of custody
    layer: dl
    subtheme: quantum
    column: longer-term
    kind: onchain
    uncertain: true
    depends_on: [post-quantum-sampling]

  - id: blob-streaming
    title: blob streaming
    layer: dl
    subtheme: features
    column: hegota
    kind: onchain

  - id: short-dated-blob-futures
    title: short-dated blob futures
    layer: dl
    subtheme: features
    column: i-star
    kind: onchain
    uncertain: true
    depends_on: [blob-streaming]

  - id: return-to-calldata
    title: return to calldata
    layer: dl
    subtheme: features
    column: k-star
    kind: offchain

  - id: remove-blobs
    title: remove blobs
    layer: dl
    subtheme: features
    column: m-star
    kind: onchain
    depends_on: [return-to-calldata, post-quantum-sampling]

  # ═══ Execution Layer ═══

  - id: optional-2of3-proofs
    title: optional proofs
    layer: el
    subtheme: zkevm
    column: hegota
    kind: offchain

  - id: gas-limit-3x-year
    title: 3x/year gas limit
    layer: el
    subtheme: zkevm
    column: i-star
    kind: offchain
    depends_on: [optional-2of3-proofs]

  - id: block-in-blobs
    title: block in blobs
    layer: el
    subtheme: zkevm
    column: j-star
    kind: onchain
    depends_on: [gas-limit-3x-year]

  - id: mandatory-1of1-proofs
    title: mandatory 3-of-5 proofs
    layer: el
    subtheme: zkevm
    column: k-star
    kind: headliner
    depends_on: [block-in-blobs, stf-in-zkisa]

  - id: evm-asm-canonical-guest
    title: canonical guest
    layer: el
    subtheme: zkevm
    column: l-star
    kind: onchain
    uncertain: true
    depends_on: [mandatory-1of1-proofs]

  - id: canonical-zkvm
    title: canonical zkVM
    layer: el
    subtheme: zkevm
    column: m-star
    kind: onchain
    uncertain: true
    depends_on: [evm-asm-canonical-guest]

  - id: ns-gigagas-l1
    title: gigagas L1
    subtitle: 1 Ggas/sec
    layer: el
    subtheme: zkevm
    column: longer-term
    kind: north-star
    depends_on: [canonical-zkvm]

  - id: glamsterdam-repricing
    title: Glamsterdam repricing
    layer: el
    subtheme: pricing
    column: glamsterdam
    kind: onchain

  - id: data-repricing
    title: Hegotá repricing
    layer: el
    subtheme: pricing
    column: hegota
    kind: onchain
    depends_on: [glamsterdam-repricing]

  - id: multidimensional-pricing
    title: multidimensional pricing
    layer: el
    subtheme: pricing
    column: i-star
    kind: onchain
    depends_on: [data-repricing]

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

  - id: payload-chunking
    title: payload chunking
    layer: el
    subtheme: gossip
    column: i-star
    kind: offchain

  - id: announce-nonce
    title: announce nonce
    layer: el
    subtheme: gossip
    column: j-star
    kind: offchain

  - id: sharded-mempool
    title: sharded mempool
    layer: el
    subtheme: gossip
    column: m-star
    kind: offchain

  - id: bals
    title: BALs
    layer: el
    subtheme: state
    column: glamsterdam
    kind: headliner

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

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

  - id: endgame-state
    title: endgame state
    layer: el
    subtheme: state
    column: l-star
    kind: onchain
    uncertain: true
    depends_on: [validity-only-partial-state]

  - id: pureth-purges
    title: misc purges
    layer: el
    subtheme: isa
    column: i-star
    kind: onchain

  - id: precompiles-in-zkisa
    title: precompiles in zkISA
    layer: el
    subtheme: isa
    column: j-star
    kind: onchain
    uncertain: true
    depends_on: [pureth-purges]

  - id: stf-in-zkisa
    title: STF in zkISA
    layer: el
    subtheme: isa
    column: k-star
    kind: onchain
    uncertain: true
    depends_on: [precompiles-in-zkisa]

  - id: native-rollups
    title: native rollups
    layer: el
    subtheme: isa
    column: l-star
    kind: headliner
    depends_on: [stf-in-zkisa]

  - id: proof-aggregation
    title: proof aggregation
    layer: el
    subtheme: isa
    column: m-star
    kind: onchain
    depends_on: [native-rollups]

  - id: exposed-zkisa
    title: exposed zkISA
    layer: el
    subtheme: isa
    column: longer-term
    kind: onchain
    uncertain: true
    depends_on: [proof-aggregation]

  - id: native-aa
    title: native AA
    layer: el
    subtheme: aa
    column: hegota
    kind: headliner

  - id: transaction-assertions
    title: transaction assertions
    layer: el
    subtheme: aa
    column: i-star
    kind: offchain
    depends_on: [native-aa]

  - id: aa-proofs
    title: AA proofs
    layer: el
    subtheme: aa
    column: longer-term
    kind: onchain

  - id: ntt-precompiles
    title: NTT precompile(s)
    layer: el
    subtheme: quantum
    column: i-star
    kind: headliner
    uncertain: true

  - id: pq-leansphincs-transactions
    title: post quantum transactions
    layer: el
    subtheme: quantum
    column: m-star
    kind: headliner
    depends_on: [ntt-precompiles]

  - id: encrypted-mempool
    title: encrypted mempool
    layer: el
    subtheme: privacy
    column: i-star
    kind: offchain

  - id: ns-private-l1
    title: private L1
    subtitle: shielded transfers
    layer: el
    subtheme: privacy
    column: longer-term
    kind: north-star
    depends_on: [pq-leansphincs-transactions]
