EIP-7688
To be, or not to be?

Author(s): Dmitry Zakharov, Pavel Morozov, Tim Savon, Oleg Trenkin
Security researcher(s) at MixBytes
TL;DR
EIP-7688 introduces StableContainer, a new type designed to stabilize Merkle tree indices within the Ethereum Beacon Chain state. While not a critical upgrade, its inclusion would significantly improve long-term compatibility for protocols relying on EIP-4788 and the BEACON_ROOTS precompile.

This research shows that a growing number of production-grade protocols including Lido, EigenLayer, Relic, Rocket Pool, and several ZK oracles, bridges, and preconfirmation systems are already using or planning to use EIP-4788. Without EIP-7688, each future hard fork that modifies BeaconState will require these protocols to rewrite proof logic, re-audit contracts, and coordinate complex upgrades.

By introducing stable Merkle indices, EIP-7688 eliminates this recurring burden and enables cross-fork compatibility. Adopting it in the upcoming hard-fork that modifies the Beacon state would future-proof protocol development, reduce operational risk, and streamline the on-chain use of consensus data across Ethereum and beyond.
Introduction
The inclusion of any Ethereum Improvement Proposal (EIP) into a network upgrade is never taken lightly. Hard forks are infrequent and governed by strict engineering timelines, requiring meticulous prioritization of proposals with broad, demonstrable impact. Each EIP must justify not only its technical soundness but also its ecosystem-wide relevance under the constraints of limited coordination and developer capacity. In this environment, introducing changes related to the Beacon Chain demands particular caution, as they affect critical infrastructure.

With the activation of EIP-4788, which exposed the Beacon Chain’s root to the EVM, a new proving design emerged in the protocols. These include staking and restaking protocols, decentralized oracles, and zero-knowledge proving systems leveraging the consensus root for trust-minimized validation.

This research sets out to map the current and near-future protocol landscape shaped by EIP-4788 examining how staking frameworks, Oracle networks (including ZK-based architectures), and trust-minimized infrastructure are interacting with Beacon Chain data today. It also assesses the constraints these systems face under the current model, and the potential design unlocks that could be achieved by extending Beacon data access through EIP-7688.

While it is ultimately up to the community to decide whether to include EIP-7688 in the upcoming hard fork or not, this article provides the technical and ecosystem analysis needed to inform that decision. As we look ahead to a modular Ethereum, understanding how this EIP could shape the next generation of cross-chain bridges, pre-confirmation systems, and cryptographic proving mechanisms is essential.
EIP-7688 Overview
EIP-7688 proposes a fundamental change in how data is represented in the Ethereum Beacon Chain state, aiming to improve long-term compatibility and developer ergonomics for protocols that rely on Merkle proofs of consensus-layer data.

Currently, the Beacon Chain stores its state using SSZ (SimpleSerialize) Merkle trees, where each field and nested structure is serialized and hashed to form the state root. While efficient, this design comes with a key drawback: Merkle tree indices are not stable across hard forks. As fields are added or reordered in the BeaconState, the Merkle paths to particular pieces of data change. This instability breaks backward compatibility for off-chain and on-chain protocols that rely on fixed proof indices, requiring re-indexing and re-implementation with every consensus-layer change.

EIP-7688 introduces the concept of a StableContainer, a new SSZ type that enforces fixed, deterministic tree indices for each field. Under this proposal, specific portions of the BeaconState would be refactored into StableContainer types, where each field has a permanently assigned index, even if the container evolves. New fields can only be added in an append-only manner, and deprecated fields are marked but retained to preserve index stability. This structural constraint allows Merkle proofs targeting these containers to remain valid across protocol upgrades.

The transition to using StableContainer would require an overhaul of how data is stored and accessed in the BeaconState. Protocols and clients generating SSZ Merkle proofs would need to adapt to the new container types. However, this one-time adjustment brings a major long-term benefit: stability of Merkle indices across all future hard forks. This dramatically simplifies the job of ZK proof systems, on-chain verifiers, and off-chain relayers that use BEACON_ROOTS to prove claims about consensus-layer data.

By ensuring that Merkle paths into BeaconState remain consistent, EIP-7688 unlocks a reliable foundation for building cross-fork-compatible protocols. This is especially crucial for applications like staking, oracles, and bridges (especially cross-chain bridges), which rely on predictable access to validator sets, sync committees, and participation records.
Data Scraping
Understanding the promise of EIP-7688 requires grounding it in the reality of how consensus-layer data is currently being used. While the proposed StableContainer type offers a more robust and future-proof interface to BeaconState, its relevance depends on whether developers and protocols are already relying on or planning to rely on EIP-4788.

To assess this, we conducted an ecosystem-wide scan using two complementary approaches. First, we analyzed all internal calls made to the BEACON_ROOTS precompile on mainnet to capture live usage patterns and identify deployed protocols that already depend on it in production. Second, we performed a targeted crawl of public GitHub repositories to locate projects referencing the BEACON_ROOTS contract address, giving us insight into upcoming integrations and protocol designs still in development. These methods, described in more detail below, allowed us to build a comprehensive picture of the protocols that stand to benefit or break based on the availability and stability of Beacon Chain data access.
BEACON_ROOTS Internal Calls
To understand which protocols are actively utilizing EIP-4788 today, we analyzed all internal calls to the BEACON_ROOTS precompile (0x000F3df6D732807Ef1319fB7B8bB8522d0Beac02) over the past 90 days leading up to April 15, 2025. This focused time window excludes earlier interactions that primarily came from inactive or experimental contracts, allowing us to capture only meaningful, production-grade usage.

Out of 7,802 unique addresses that invoked the BEACON_ROOTS contract, an overwhelming 7,800 were associated with the EigenLayer protocol. This finding highlights that EigenLayer-based restaking systems are already heavily reliant on EIP-4788, using it to verify consensus-layer data on-chain. It also indicates that access to Beacon Chain roots is not peripheral, but deeply integrated into the protocol’s architecture.

The remaining two addresses show significant adoption outside of restaking:

  • One is tied to the Lido Community Staking Module’s proof verifier, a Community Staking implementation that uses Beacon data to validate withdrawals.
  • One belongs to the Relic Protocol, which leverages BEACON_ROOTS for an on-chain historical oracle a design pattern that could be foundational for future ZK oracle systems.

These findings demonstrate that several core protocol classes are already building around the assumption of accessible, verifiable Beacon data. As such, the structural stability and long-term reliability introduced by EIP-7688 is not a theoretical improvement it’s rapidly becoming a practical necessity.
GitHub Repository Analysis
To complement the on-chain activity analysis, we extended our research to GitHub development activity by analyzing public repositories that reference the BEACON_ROOTS contract (0x000F3df6D732807Ef1319fB7B8bB8522d0Beac02). This allowed us to capture early-stage protocol designs, proof-of-concepts, and integrations not yet deployed on mainnet but actively under development.

We identified and classified repositories using EIP-4788 into several key protocol categories:

  • Staking and Restaking: This includes projects such as Lido, EigenLayer, Rocket Pool, and Karak, all of which integrate Beacon Chain data for validator withdrawal verification and slashing conditions. These protocols rely heavily on EIP-4788 and are positioned to benefit significantly from the stability guarantees introduced in EIP-7688.

It is important to note that the well-known Rocket Pool protocol will use the EIP-4788 proofs in its upcoming upgrade. This usage can be seen in the BeaconStateVerifier contract, which heavily relies on the BEACON_ROOTS precompile. Given its current implementation, upgrading the verifier part for the upcoming hardforks will be a complex task, so Rocket Pool would benefit significantly from the inclusion of EIP-7688.

Without EIP-7688, the protocol will need to refactor large parts of its verifier logic to account for potential changes to Merkle tree indices in future hard forks. This adds complexity and maintenance overhead that EIP-7688 is specifically designed to eliminate.

  • Oracles: The Relic Protocol exemplifies decentralized oracles that use Beacon roots to prove historical consensus data on-chain without relying on centralized relayers.
  • Cross-Chain Bridges: Projects like DendrETH and RRC-7755 PoC demonstrate how Beacon Chain data can be used to enhance the security guarantees of cross-chain messaging. These protocols, in particular, would face major complexity overhead if EIP-7688 is not adopted, maintaining compatibility across hard forks without stable Merkle indices could require brittle, fork-specific logic.
  • Preconfirmations: Initiatives like URC and BOLT are experimenting with consensus-aware preconfirmation mechanisms that depend on fast, verifiable access to validator data another area where Merkle path stability is critical for long-term maintainability.

While we also observed usage of BEACON_ROOTS in Ethereum and L2 client codebases, these were excluded from the current study to keep the focus on application-layer protocols.

Taken together, these findings reinforce a clear trend: EIP-4788 is quickly becoming a cornerstone for a wide array of Ethereum-native and cross-domain systems. The adoption of EIP-7688 would bring critical stability and predictability to these protocols—particularly for cross-chain bridges and preconfirmation systems, where even minor changes to Merkle paths could introduce significant technical debt or security risks during future hard forks.
EIP-7688 Impact
While the ecosystem-level overview shows that EIP-4788 is already deeply embedded in modern protocol design, the next logical question is what it would take to support EIP-7688 and what happens if it’s delayed.

The impact goes beyond conceptual benefits. Without EIP-7688, every hard fork that modifies the Beacon State structure will force downstream protocols to update their Merkle proof logic. This includes reworking field indices, adjusting SSZ deserialization code, and ensuring compatibility with both pre- and post-fork Beacon roots. Each of these updates requires time-consuming development, careful auditing, and coordinated redeployment.

EIP-7688 offers a way out of this cycle. By introducing stable Merkle indexing via StableContainer, it establishes a long-term interface that protocols can depend on across forks. In the next section, we’ll explore what’s required to adopt this EIP including client changes and prover adjustments as well as the additional burden that developers would face if adoption is postponed to future hard forks.
Staking
Staking and restaking protocols actively use the following pattern to monitor certain consensus-layer events from the execution layer:

  1. The user submits to the protocol information about a specific event (e.g., slashing, validator withdrawal) or characteristic (e.g., validator balance) at a particular point in time. This information must be present in a Beacon Chain block. A corresponding Merkle proof is used as a parameter in the user's call.
  2. The protocol queries the BEACON_ROOTS precompile for the root of that tree and verifies the proof. If the proof is correct, the information has an on-chain effect.

The position of the leaf node containing the relevant information in the Merkle tree depends on the hard fork version. The more fields that are present in the BeaconState object, the taller the Merkle tree becomes. This means the leaves — which contain the data being verified — are located further from the root. For the Deneb fork, the height of the BeaconState subtree is 5, whereas in Pectra it is already 6.

In Lido’s CSVerifier, when determining the Merkle tree index, a comparison is made (1, 2, and 3) between the slot for which the proof is submitted and PIVOT_SLOT (the first slot of the new hard fork). PIVOT_SLOT and the corresponding indices are immutable values. This means that for each hard fork, a new version of CSVerifier with updated parameters must be deployed. Moreover, deployment and the switch to the new version must occur before the hard fork takes place.

In EigenLayer’s EigenPod, the situation is similar. Depending on the timestamp corresponding to the proof, the proof version is selected. Then, based on the version, the height of the BeaconState root is selected, which is used to calculate the index of the relevant fields.

The transition to a new hard fork in EigenLayer is slightly more complex due to the fact that the values are hardcoded in the code. This means that, to maintain protocol security, EigenLayer incurs additional costs for auditing each new version of the code.

The adoption of EIP-7688 would allow such protocols to update their code only once and avoid spending resources on these recurring changes in the future.
Oracles
Some oracle systems in the Ethereum ecosystem utilize Beacon Chain data accessed through the BEACON_ROOTS precompile to implement trust-minimized verification mechanisms. The Relic Protocol, for instance, follows this approach to verify historical consensus data on-chain. While this design successfully eliminates the need for centralized relayers, it raises important considerations about how oracle systems interact with the BeaconState structure.

The Relic Protocol's verification system consists of several modules that process SSZ (SimpleSerialize) data from the Beacon Chain. These modules use specific Merkle tree indices within the BeaconState, such as STATE_ROOT_INDEX (3), BLOCK_ROOTS_INDEX (5), and HISTORICAL_SUMMARIES_INDEX (27). Functions like verifyHistoricalBlockSummary and verifyRelativeBlockRoot rely on these fixed indices. When the BeaconState structure changes in a hard fork, these indices shift, breaking existing oracle contracts.

Without EIP-7688, each hard fork requires updating all index constants, revising verification logic, deploying new contracts, and coordinating with clients and relayers. This creates operational overhead and introduces risks. For example, if HISTORICAL_SUMMARIES_INDEX changes, the entire verification logic for historical data must be rewritten, potentially introducing vulnerabilities.

EIP-7688 introduces the concept of a StableContainer, which would provide stable Merkle tree indices for oracle systems. This could offer backward compatibility for existing proofs, simplify verification logic, and reduce risks during Beacon Chain updates. The stability of Merkle indices is particularly important for decentralized oracles that must provide reliable access to consensus data without relying on centralized relayers.
The problem extends beyond simply updating index constants. Each hard fork that modifies the BeaconState structure requires a comprehensive update of verification logic, which may involve:

  • Updating on-chain verifier contracts that process Merkle proofs
  • Modifying off-chain relayers that generate and submit proofs
  • Coordinating deployments across multiple components of the system

If EIP-7688 were to be implemented, it would require the following changes to the existing SSZ code:

  • Creating StableContainer Types: It would be necessary to define StableContainer types for all BeaconState data structures used in verification, instead of relying on hardcoded indices.
  • Defining Profiles for the Current Fork: For each StableContainer type, a corresponding Profile would need to be created for use in the current fork.
  • Updating Verification Functions: Verification functions would need to be updated to work with StableContainer types instead of hardcoded indices.

While these changes would require significant effort, they could eliminate the need to update the code during each hard fork and reduce the risk of errors—particularly for protocols that heavily depend on the stability of Merkle tree indices.
ZK Oracles
If Ethereum continues without adopting EIP-7688, ZK oracle implementations relying on consensus-layer data (such as validator balances, exit epochs, and withdrawal credentials) must constantly adapt to structural changes in the BeaconState. Libraries like Succinct's plonky2x, which generate circuits and proofs based on SSZ Merkle paths, will need continuous updates to generalized indices (gindices) and path computations. For example, the implementation in Succinct's beacon module would require manual adjustments after each fork, changing definitions like:
/// The gindex for blockRoot -> validatorsRoot.
const VALIDATORS_ROOT_GINDEX: u64 = 363;

/// The gindex for blockRoot -> stateRoot.
const STATE_ROOT_GINDEX: u64 = 11;

/// The gindex for blockRoot -> balancesRoot.
const BALANCES_ROOT_GINDEX: u64 = 364;
Similarly, Succinct’s ZK Oracle circuits and verification logic must be recompiled and redeployed frequently to handle structural changes in the underlying BeaconState data.

Here is an example of the generalized index update in the plonky2x library - https://github.com/succinctlabs/succinctx/pull/199/files.

Once EIP-7688 is adopted, the StableContainer approach introduces a permanent structure to Ethereum consensus data. For the ZK oracle circuit, which is built using Succinct’s plonky2x library, this means the library can rely on fixed indices for consensus data elements like validator balances and statuses. By updating the plonky2x implementation to reference these stable positions, the circuit becomes immutable and does not require future changes.

The ZK oracle itself, however, does not directly use these generalized indices in its verification logic. Instead, it depends on the proof and its associated public inputs. With EIP-7688 in place, the circuit remains valid across Ethereum upgrades because the stable layout ensures the underlying data sources do not shift. The oracle only needs to acknowledge the updated circuit once. After that initial adjustment, no further updates would be required, allowing the ZK oracle to maintain a consistent proof verification process regardless of future Ethereum protocol changes.

Plonky2x-based projects must remain agile in response to Ethereum's evolving consensus mechanisms, particularly during significant upgrades like the Pectra hard fork. There is a need for updates made to the circuits that rely on generalized indices to ensure accurate proof generation and verification. Failing to update these circuits can result in invalid proofs. Therefore, it's imperative for developers to monitor Ethereum's development closely and rebuild their circuits to align with the latest consensus changes.
Conclusion
EIP-7688 is not a critical upgrade in the narrow sense, it doesn't address consensus safety, execution layer bugs, or immediate scalability issues. However, it offers a foundational improvement for a growing class of Ethereum-native and cross-domain protocols that depend on Beacon Chain data via EIP-4788. As shown in this research, staking and restaking protocols, oracle systems, and emerging cross-chain and preconfirmation protocols are already integrating with BEACON_ROOTS in ways that assume reliable, consistent access to consensus-layer state.

Without EIP-7688, each future hard fork that makes changes in the Beacon State structure by adding or expanding fields will impose a recurring burden: protocols must track structural changes to the BeaconState, revise Merkle proofs, adapt their codebases, and undergo additional audits, all under tight timelines and high coordination costs. This creates friction that scales with ecosystem adoption and stifles innovation around consensus-aware applications.

EIP-7688 solves this problem at the root by introducing stable Merkle indexing through StableContainer. While its implementation requires upfront client changes and adjustments from provers, the long-term value it provides in predictability, safety, and development efficiency will continually outweigh the initial cost.

In that light, while not urgent, EIP-7688 is undeniably strategic. Including it in the upcoming hard fork that requires changes in the Beacon State structure would maximize its effectiveness, reduce future maintenance overhead, and allow protocol developers to build on a stable foundation sooner rather than later. It is worth noting that this EIP was already being implemented as a PoC by several teams that are developing a consensus client.
  • Who is MixBytes?
    MixBytes is a team of expert blockchain auditors and security researchers specializing in providing comprehensive smart contract audits and technical advisory services for EVM-compatible and Substrate-based projects. Join us on X to stay up-to-date with the latest industry trends and insights.
  • Disclaimer
    The information contained in this Website is for educational and informational purposes only and shall not be understood or construed as financial or investment advice.
Other posts