Forward compatible consensus data structures (EIP-7688)#4630
Forward compatible consensus data structures (EIP-7688)#4630etan-status wants to merge 54 commits into
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)
|
EIP-7688 is now live in https://github.com/paulmillr/micro-eth-signer The test vectors from the proton drive link above are available in git repo https://github.com/paulmillr/eth-vectors |
|
@jtraglia Fallout, to be addressed once this PR gets merged:
As this PR affects many files, would recommend a 3-alpha plan to give client teams the opportunity to test this one in isolation. (1) a version that includes everything up to this PR, (2) a version with this PR on top, (3) a version with the fallout addressed + other fixes. would be a nice to have the intermediate tests for (1) and (2), if that's not too cumbersome infra-wise, even though only (3) would ship on devnet-7. |
|
tooling side is ready for eip7688. Just needs a dependency bump for the affected tools :)
kt config snippets to use these branches: ethereum_genesis_generator_params:
image: "ethpandaops/ethereum-genesis-generator:glamsterdam-devnet-7"
dora_params:
image: ethpandaops/dora:glamsterdam-devnet-7 |
The blob types were changed to progressive: blob_kzg_commitments: ProgressiveList[KZGCommitment] - ethereum/consensus-specs#4630
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: