-
Notifications
You must be signed in to change notification settings - Fork 996
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add ExecutionPayloadHeader
to LC data
#3151
Conversation
Introduce `get_lc_beacon_slot` and `get_lc_beacon_root` accessors similar to `get_current_slot(state)` to account for future extensions to the light client header structure that may override how those fields are accessed. Idea is to extend with execution accessors in the future.
While the light client sync protocol currently provides access to the latest `BeaconBlockHeader`, obtaining the matching execution data needs workarounds such as downloading the full block. Having ready access to the EL state root simplifies use cases that need a way to cross-check `eth_getProof` responses against LC data. Access to `block_hash` unlocks scenarios where a CL light client drives an EL without `engine_newPayload`. As of Altair, only the CL beacon block root is available, but the EL block hash is needed for engine API. Other fields in the `ExecutionPayloadHeader` such as `logs_bloom` may allow light client applications to monitor blocks for local interest, e.g. for transfers affecting a certain wallet. This enables to download only the few relevant blocks instead of every single one. A new `LightClientStore` is proposed into the Capella spec that may be used to sync LC data that includes execution data. Existing pre-Capella LC data will remain as is, but can be locally upgraded before feeding it into the new `LightClientStore` so that light clients do not need to run a potentially expensive fork transition at a specific time. This enables the `LightClientStore` to be upgraded at a use case dependent timing at any time before Capella hits. Smart contract and embedded deployments benefit from reduced code size and do not need synchronization with the beacon chain clock to perform the Capella fork.
Builds on top of:
All of these PRs have been merged into this branch – filter for the last commit of this PR to review the Capella specific additions. |
|
@etan-status |
Implements the proposed light client data format for Capella: - ethereum/consensus-specs#3151
Implements the proposed light client data format for Capella: - ethereum/consensus-specs#3151
Implements the proposed light client data format for EIP4844: - ethereum/consensus-specs#3151
Implements the light client data format for Capella / EIP4844: - ethereum/consensus-specs#3151
Implements the light client data format for Capella / EIP4844: - ethereum/consensus-specs#3151
Implements the light client data format for Capella / EIP4844: - ethereum/consensus-specs#3151
Implements the light client data format for Capella / EIP4844: - ethereum/consensus-specs#3151
Implements the light client data format for Capella / EIP4844: - ethereum/consensus-specs#3151
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm!
Implements the proposed light client data format for Capella: - ethereum/consensus-specs#3151
Implemented in Nimbus: status-im/nimbus-eth2#4514 |
Implements the proposed light client data format for EIP4844: - ethereum/consensus-specs#3151
Implements the proposed light client data format for EIP4844: - ethereum/consensus-specs#3151
Implements the proposed light client data format for EIP4844: - ethereum/consensus-specs#3151
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm! well done @etan-status 👏
Implements the proposed light client data format for Capella: - ethereum/consensus-specs#3151
Implements the proposed light client data format for EIP4844: - ethereum/consensus-specs#3151
Implements the proposed light client data format for EIP4844: - ethereum/consensus-specs#3151
Implements the light client data format for Capella / EIP4844: - ethereum/consensus-specs#3151
Implements the light client data format for Capella: - ethereum/consensus-specs#3151
Implements the light client data format for Capella: - ethereum/consensus-specs#3151
Implements the light client data format for Capella: - ethereum/consensus-specs#3151
While the light client sync protocol currently provides access to the
latest
BeaconBlockHeader
, obtaining the matching execution data needsworkarounds such as downloading the full block.
Having ready access to the EL state root simplifies use cases that need
a way to cross-check
eth_getProof
responses against LC data.Access to
block_hash
unlocks scenarios where a CL light client drivesan EL without
engine_newPayload
. As of Altair, only the CL beaconblock root is available, but the EL block hash is needed for engine API.
Other fields in the
ExecutionPayloadHeader
such aslogs_bloom
mayallow light client applications to monitor blocks for local interest,
e.g. for transfers affecting a certain wallet. This enables to download
only the few relevant blocks instead of every single one.
A new
LightClientStore
is proposed into the Capella spec that may beused to sync LC data that includes execution data. Existing pre-Capella
LC data will remain as is, but can be locally upgraded before feeding it
into the new
LightClientStore
so that light clients do not need to runa potentially expensive fork transition at a specific time. This enables
the
LightClientStore
to be upgraded at a use case dependent timing atany time before Capella hits. Smart contract and embedded deployments
benefit from reduced code size and do not need synchronization with the
beacon chain clock to perform the Capella fork.