consensus-specs/specs/capella/light-client/p2p-interface.md
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

4.6 KiB

Capella Light Client -- Networking

Notice: This document is a work-in-progress for researchers and implementers.

Table of contents

Networking

The Altair light client networking specification is extended to exchange Capella light client data.

The gossip domain: gossipsub

Topics and messages

Global topics
light_client_finality_update
fork_version Message SSZ type
GENESIS_FORK_VERSION n/a
ALTAIR_FORK_VERSION through BELLATRIX_FORK_VERSION altair.LightClientFinalityUpdate
CAPELLA_FORK_VERSION and later capella.LightClientFinalityUpdate
light_client_optimistic_update
fork_version Message SSZ type
GENESIS_FORK_VERSION n/a
ALTAIR_FORK_VERSION through BELLATRIX_FORK_VERSION altair.LightClientOptimisticUpdate
CAPELLA_FORK_VERSION and later capella.LightClientOptimisticUpdate

The Req/Resp domain

Messages

GetLightClientBootstrap
fork_version Response SSZ type
GENESIS_FORK_VERSION n/a
ALTAIR_FORK_VERSION through BELLATRIX_FORK_VERSION altair.LightClientBootstrap
CAPELLA_FORK_VERSION and later capella.LightClientBootstrap
LightClientUpdatesByRange
fork_version Response chunk SSZ type
GENESIS_FORK_VERSION n/a
ALTAIR_FORK_VERSION through BELLATRIX_FORK_VERSION altair.LightClientUpdate
CAPELLA_FORK_VERSION and later capella.LightClientUpdate
GetLightClientFinalityUpdate
fork_version Response SSZ type
GENESIS_FORK_VERSION n/a
ALTAIR_FORK_VERSION through BELLATRIX_FORK_VERSION altair.LightClientFinalityUpdate
CAPELLA_FORK_VERSION and later capella.LightClientFinalityUpdate
GetLightClientOptimisticUpdate
fork_version Response SSZ type
GENESIS_FORK_VERSION n/a
ALTAIR_FORK_VERSION through BELLATRIX_FORK_VERSION altair.LightClientOptimisticUpdate
CAPELLA_FORK_VERSION and later capella.LightClientOptimisticUpdate