EIP-7643: History accumulator for pre-PoS data
Commit to a single root for all block data before the merge.
Abstract
Defines an SSZ object for accumulating all pre-PoS data and commit to the
historical hashes accumulator's root
0xec8e040fd6c557b41ca8ddd38f7e9d58a9281918dc92bdb72342a38fb085e701
.
Motivation
There are two main uses we consider for the historical hashes accumulator:
- for users who wish to download the pre-PoS data for the execution chain and verify it without executing each block, they may simply compute each block hash, accumulate the epoch records, and then compare the local accumulator root with the expected value.
- additionally, the accumulator root allows for
O(log(n))
sized proofs to any pre-PoS block, whereas today to achieve something similar, one must recursively verify the header chain.
Specification
Historical Hashes Accumulator
The historical hashes accumulator commits to the set of pre-merge headers and their associated total difficulty. The format for this data is defined as:
Pre-PoS Root
The hash tree root of HistoricalHashesAccumulator
for data before block 15537394 is
0xec8e040fd6c557b41ca8ddd38f7e9d58a9281918dc92bdb72342a38fb085e701
.
Rationale
Inclusion of total difficulty
The total difficulty allowed so that clients may return the value for specific JSON-RPC methods which support it. It is also useful for verifying the TTD of the final proof-of-work block.
Backwards Compatibility
n/a
Test Cases
Security Considerations
The accumulator root should be verified by community members before being accepted. Although the accumulator root can be verified at anytime by anyone in the future, it is likely clients and other tooling will begin relying on proofs against the aforementioned root in the near term.
Copyright
Copyright and related rights waived via CC0.