Etan Kissling 2035a9fcad
Update light client specifications for Electra
Electra introduces two changes that affect light client data handling:

1. The `ExecutionPayloadHeader` is extended with new fields.
   This is handled similarly as before with the Deneb fork.

2. The `BeaconState` generalized indices change due to lack of EIP-6493.
   This is handled by making the generalized index be fork dependent via
   a helper function that computes it dynamically. Furthermore, the case
   where pre-Electra light client data is consumed by an Electra based
   `LightClientStore` requires normalizing the shorter proof of the
   pre-Electra data to fit into the Electra data structure by prepending
   a zero hash.
2024-06-21 11:33:52 +02:00

5.7 KiB

Electra Light Client -- Networking

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

Table of contents

Networking

The Deneb light client networking specification is extended to exchange Electra 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 capella.LightClientFinalityUpdate
DENEB_FORK_VERSION deneb.LightClientFinalityUpdate
ELECTRA_FORK_VERSION and later electra.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 capella.LightClientOptimisticUpdate
DENEB_FORK_VERSION deneb.LightClientOptimisticUpdate
ELECTRA_FORK_VERSION and later electra.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 capella.LightClientBootstrap
DENEB_FORK_VERSION deneb.LightClientBootstrap
ELECTRA_FORK_VERSION and later electra.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 capella.LightClientUpdate
DENEB_FORK_VERSION deneb.LightClientUpdate
ELECTRA_FORK_VERSION and later electra.LightClientUpdate
GetLightClientFinalityUpdate
fork_version Response SSZ type
GENESIS_FORK_VERSION n/a
ALTAIR_FORK_VERSION through BELLATRIX_FORK_VERSION altair.LightClientFinalityUpdate
CAPELLA_FORK_VERSION capella.LightClientFinalityUpdate
DENEB_FORK_VERSION deneb.LightClientFinalityUpdate
ELECTRA_FORK_VERSION and later electra.LightClientFinalityUpdate
GetLightClientOptimisticUpdate
fork_version Response SSZ type
GENESIS_FORK_VERSION n/a
ALTAIR_FORK_VERSION through BELLATRIX_FORK_VERSION altair.LightClientOptimisticUpdate
CAPELLA_FORK_VERSION capella.LightClientOptimisticUpdate
DENEB_FORK_VERSION deneb.LightClientOptimisticUpdate
ELECTRA_FORK_VERSION and later electra.LightClientOptimisticUpdate