Skip to content

Forward compatible consensus data structures (EIP-7688) - #4630

Merged
jtraglia merged 60 commits into
ethereum:masterfrom
etan-status:sn-7688
Jul 6, 2026
Merged

Forward compatible consensus data structures (EIP-7688)#4630
jtraglia merged 60 commits into
ethereum:masterfrom
etan-status:sn-7688

Conversation

@etan-status

Copy link
Copy Markdown
Contributor

EIP-4788 exposed the beacon root to smart contracts, but smart contracts need to be redeployed / upgraded whenever generalized indices change during a fork, even if that fork does not touch any used functionality. That is analogous to an OS without ABI stability, requiring programs to be maintained and re-compiled due to random breakages in OS updates.

This issue expands further to bridges on other blockchains, and also into wallets / dApps that verify data from the beacon chain instead. Such projects do not typically share Ethereum's release cadence.

EIP-7688 introduces forward compatibility for beacon chain structures. Generalized indices remain same when list capacities evolve over forks, containers no longer get re-indexed when reaching a new power-of-2 number of fields, and fields can be deprecated, leaving a gap in the Merkle tree instead of triggering re-indexing.

EIP-7688 was requested for inclusion by popular projects:

EIP-4788 exposed the beacon root to smart contracts, but smart contracts
need to be redeployed / upgraded whenever generalized indices change
during a fork, even if that fork does not touch any used functionality.
That is analogous to an OS without ABI stability, requiring programs
to be maintained and re-compiled due to random breakages in OS updates.

This issue expands further to bridges on other blockchains, and also
into wallets / dApps that verify data from the beacon chain instead.
Such projects do not typically share Ethereum's release cadence.

- https://eips.ethereum.org/EIPS/eip-4788

EIP-7688 introduces forward compatibility for beacon chain structures.
Generalized indices remain same when list capacities evolve over forks,
containers no longer get re-indexed when reaching a new power-of-2
number of fields, and fields can be deprecated, leaving a gap in the
Merkle tree instead of triggering re-indexing.

- https://eips.ethereum.org/EIPS/eip-7688

EIP-7688 was requested for inclusion by popular projects:

- For Electra by Rocketpool: https://xcancel.com/KaneWallmann/status/1816729724145795258
- For Fulu by Lido: ethereum/pm#1356 (comment)
@etan-status
etan-status marked this pull request as ready for review October 6, 2025 20:11
Comment thread specs/electra/beacon-chain.md Outdated
@etan-status etan-status changed the title eip7688: use forward compatible SSZ types in Gloas EIP-7688: use forward compatible SSZ types in Gloas Dec 12, 2025
@etan-status etan-status changed the title EIP-7688: use forward compatible SSZ types in Gloas EIP-7688: Use forward compatible SSZ types in Gloas Dec 12, 2025
@github-actions github-actions Bot added ssz Simple Serialize lightclients testing CI, actions, tests, testing infra electra gloas labels Feb 3, 2026
@jtraglia
jtraglia merged commit bd6df5a into ethereum:master Jul 6, 2026
15 checks passed
@etan-status
etan-status deleted the sn-7688 branch July 7, 2026 06:12
tersec pushed a commit to status-im/nimbus-eth2 that referenced this pull request Jul 9, 2026
* Forward compatible consensus data structures (EIP-7688)

- EIP https://eips.ethereum.org/EIPS/eip-7688
- Spec ethereum/consensus-specs#4630
- Tests ethereum/consensus-specs#4630 (comment)
- Kurtosis ethereum/consensus-specs#4630 (comment)

* ForkedAggregate cleanup

* Sync gossip checks

* Cleanups

* Resttest

* Focil test

* Progressive for PayloadAttestation, ExecutionPayloadBid, Envelope

* Use mapIt

* Heze constants

* use v1.7.0-alpha.12 consensus reference tests (#8729)

* use v1.7.0-alpha.12 consensus reference tests

* Reduce `MAX_BUILDER_DEPOSIT_REQUESTS_PER_PAYLOAD` to 64

- ethereum/consensus-specs#5420

* Remove `MAX_DEPOSIT_REQUESTS_PER_PAYLOAD` in Gloas

- ethereum/consensus-specs#5436

* Add the IL bitlist to bid

- ethereum/consensus-specs#5410

* Fix some inconsistencies in fulu partial-columns spec

- ethereum/consensus-specs#5357

* Restrict builder deposits to payload builders

- ethereum/consensus-specs#5439

* Only reset builder withdrawal epoch if its balance has been swept

- ethereum/consensus-specs#5384

* Set `BUILDER_WITHDRAWAL_PREFIX` to 0xB0

- ethereum/consensus-specs#5416

* Reduce `MIN_BUILDER_WITHDRAWABILITY_DELAY` to 64 epochs

- ethereum/consensus-specs#5426

* Re-generate test reports

* Fix test_light_client_processor

* Fix block_sim

* Drop duplicate import

* Fix resttest
ensi321 added a commit to ChainSafe/lodestar that referenced this pull request Jul 21, 2026
**Motivation**

- https://eips.ethereum.org/EIPS/eip-7688

**Description**

- implement ethereum/consensus-specs#4630

**AI Assistance Disclosure**

- codex assistance

---------

Co-authored-by: NC <17676176+ensi321@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: twoeths <10568965+twoeths@users.noreply.github.com>
Co-authored-by: Tuyen Nguyen <twoeths@users.noreply.github.com>
mergify Bot pushed a commit to sigp/lighthouse that referenced this pull request Aug 4, 2026
## Relevant Links

- https://eips.ethereum.org/EIPS/eip-7688
- ethereum/consensus-specs#4630

## Proposed Changes

Adds the necessary types and components to support EIP-7688, along with the cargo patches to pull in the `progressive` versions of the crates in our SSZ stack.

## Testing

```yaml
participants_matrix:
  el:
    - el_type: nethermind
      el_image: ethpandaops/nethermind:master
  cl:
    - cl_type: nimbus
      cl_image: ethpandaops/nimbus-eth2:glamsterdam-devnet-7-minimal
    - cl_type: lodestar
      cl_image: ethpandaops/lodestar:glamsterdam-devnet-7
    - cl_type: lighthouse
      cl_image: ethpandaops/lighthouse:glamsterdam-devnet-7
    - cl_type: teku
      cl_image: ethpandaops/teku:glamsterdam-devnet-7

ethereum_genesis_generator_params:
  image: "ethpandaops/ethereum-genesis-generator:glamsterdam-devnet-7"
dora_params:
  image: ethpandaops/dora:glamsterdam-devnet-7

global_log_level: debug

network_params:
  preset: minimal
  gloas_fork_epoch: 1

additional_services:
  - dora
```

## Additional Info

Based on the original work by @michaelsproul in #8505

Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

eip8025 Optional Execution Proofs eip8148 Custom sweep threshold electra gloas heze lightclients ssz Simple Serialize testing CI, actions, tests, testing infra

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants