15 Commits

Author SHA1 Message Date
Etan Kissling
82143e1977
Also bump EXECUTION_PAYLOAD_GINDEX 2024-01-15 12:48:22 +01:00
Etan Kissling
c41c128c76
Use Custom types section instead of Helper types for consistency 2024-01-09 14:55:22 +01:00
Etan Kissling
fca5e3b06a
Use proper types when dealing with LC Merkle proofs 2023-12-27 13:59:31 +01:00
Etan Kissling
3e5427e31e
Align formatting 2023-12-27 12:54:36 +01:00
Etan Kissling
5717a81393
Capella addition 2023-12-27 12:44:05 +01:00
Hsiao-Wei Wang
0e4737eba2
Add a general compute_merkle_proof helper to replace container-specific helpers 2023-10-30 14:44:32 +08:00
Etan Kissling
514d4431ca
Use bellatrix in upgrade_x_to_capella helpers 2023-01-13 20:11:05 +01:00
Etan Kissling
a580f82c7d
Use beacon wrapper in upgrade_lc_header_to_capella 2023-01-13 14:59:40 +01:00
Etan Kissling
ca32fe8347
Add docstrings to explain empty header 2023-01-13 11:19:53 +01:00
Etan Kissling
82d6267951
Merge branch 'dev' into lc-eph 2023-01-12 18:44:54 +01:00
Etan Kissling
700bef7a45
Fix is_valid_light_client_header 2022-12-12 13:39:14 +01:00
Etan Kissling
e67ca3d309
Compute epoch only once for better readability 2022-12-12 13:09:18 +01:00
Etan Kissling
5028a806ad
Implicit init during fork transition 2022-12-12 12:45:43 +01:00
Etan Kissling
11d2a59948
Flip is_valid_light_client_header logic for extensibility 2022-12-12 12:33:58 +01:00
Etan Kissling
2e97af2627
Add ExecutionPayloadHeader to LC data
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.
2022-12-12 00:48:40 +01:00