Forward compatible consensus data structures (EIP-7688) - #4630
Merged
Conversation
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
marked this pull request as ready for review
October 6, 2025 20:11
3 tasks
jtraglia
reviewed
Nov 27, 2025
3 tasks
tbenr
approved these changes
Jul 2, 2026
4 tasks
tersec
approved these changes
Jul 6, 2026
pk910
approved these changes
Jul 6, 2026
Inspector-Butters
approved these changes
Jul 6, 2026
macladson
approved these changes
Jul 6, 2026
wemeetagain
approved these changes
Jul 6, 2026
sauliusgrigaitis
approved these changes
Jul 6, 2026
jtraglia
approved these changes
Jul 6, 2026
This was referenced Jul 7, 2026
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>
Merged
2 tasks
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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: