You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
1. Server discovery: How can light clients find servers efficiently?
2. Find LightClientSnapshot initially: as @djrtwo mentioned, Req/Resp may not be good snapshot resource.
[Proposal] Can we say, we expect 3rd party to provide LightClientSnapshot + Merkle proofs or multi-proof of each field, where the proof can be verified against WS source?
3. Block tree verification in current time-out procedure and reorg: In the current spec, a timeout-triggered (8192 slots, ~27 hours ) update logic exists:
Step 1, on_light_client_update, light client appends the valid update
Step 2, when timeout, call apply_light_client_update to update the store snapshot with the most voted update from store.valid_updates.
[Proposal]: In step 1, for the non-finality update (update.finality_header == BeaconBlockHeader()), should we add assert of checking if the update.header is descendant of snapshot.header. (<-- as @vbuterin suggested, make the light client updates always rooted in a finalized block.)
This procedure assumes that the light client already has store.valid_updates before timeout. That is, at the timeout slot, either (i) the server has to send a chain of updates to the light clients, or (ii) the light client has to request for the updates.
5. More comprehensive/production client-server model
@protolambda: If this is a push-update, and there is no explicit subscription kind of approach for a light client, then we should spec out when and how often the server pushes the update.
Other questions:
EPOCHS_PER_SYNC_COMMITTEE_PERIOD is 2**8 epochs = 2**13 slots ~= 27 hours. LIGHT_CLIENT_UPDATE_TIMEOUT is also 2**13 slots ~= 27 hours.
Should we just keep one constant?
If not, is EPOCHS_PER_SYNC_COMMITTEE_PERIOD >= LIGHT_CLIENT_UPDATE_TIMEOUT an invariant?
LightClientSnapshot
initially: as @djrtwo mentioned, Req/Resp may not be good snapshot resource.on_light_client_update
, light client appends the valid updateapply_light_client_update
to update the store snapshot with the most voted update fromstore.valid_updates
.update.finality_header == BeaconBlockHeader()
), should we add assert of checking if theupdate.header
is descendant ofsnapshot.header
. (<-- as @vbuterin suggested, make the light client updates always rooted in a finalized block.)store.valid_updates
before timeout. That is, at the timeout slot, either (i) the server has to send a chain of updates to the light clients, or (ii) the light client has to request for the updates.LightClientUpdate
object:200
48*1024 + 48*16 = 49920
32*5 = 160
200
32*6 = 192
1024 + 96 = 1120
4
SYNC_COMMITTEE_SIZE
has been updated to 512 via Adjust sync committee size and duration #2371Other questions:
EPOCHS_PER_SYNC_COMMITTEE_PERIOD
is2**8
epochs =2**13
slots ~= 27 hours.LIGHT_CLIENT_UPDATE_TIMEOUT
is also2**13
slots ~= 27 hours.EPOCHS_PER_SYNC_COMMITTEE_PERIOD >= LIGHT_CLIENT_UPDATE_TIMEOUT
an invariant?LIGHT_CLIENT_UPDATE_TIMEOUT
has been removed via Updates to Altair light client sync protocol #2378The text was updated successfully, but these errors were encountered: