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
This issue is similar as the one created for LightClientBootstrap (#296), but for the LightClientUpdate object.
Similar as for bootstraps, several of the fields can be verified with data from the object.
The attested_header can be verified as described in is_valid_light_client_header call.
The next_sync_committee can be verified with a is_valid_merkle_branch check with the provided next_sync_committee_branch against the attested_header.beacon.state_root.
And the finalized_header with the finality_branch against the attested_header.beacon.state_root.
But just as for bootstraps, the additional verification for canonicalness is required.
And as described for the bootstrap, there can be a step 1 and an optional step 2, which allows for backfill.
Step 1
Don't accept any offered updates when not synced
Request required updates during sync & store if they are valid
Once synced, accept, verify and re-gossip new updates
Step 2
Optionally, if we want to support backfill, the same type of proof as explained in the related bootstrap issue could be added.
But differently from bootstraps, this still allows for ambiguity as there are different updates possible due to the sync_aggregate + signature_slot. The best one should be selected based on the is_better_update call. But providing a proof that such update is the best update is not that easy.
This is explained very well in this Light client roadmap document from @etan-status at the section Light client data backfill, where a solution is also proposed on how to do this, but it requires the addition of a field in the BeaconState.
The text was updated successfully, but these errors were encountered:
This issue is similar as the one created for
LightClientBootstrap
(#296), but for theLightClientUpdate
object.Similar as for bootstraps, several of the fields can be verified with data from the object.
The
attested_header
can be verified as described inis_valid_light_client_header
call.The
next_sync_committee
can be verified with ais_valid_merkle_branch
check with the providednext_sync_committee_branch
against theattested_header.beacon.state_root
.And the
finalized_header
with thefinality_branch
against theattested_header.beacon.state_root
.But just as for bootstraps, the additional verification for canonicalness is required.
And as described for the bootstrap, there can be a step 1 and an optional step 2, which allows for backfill.
Step 1
Step 2
Optionally, if we want to support backfill, the same type of proof as explained in the related bootstrap issue could be added.
But differently from bootstraps, this still allows for ambiguity as there are different updates possible due to the
sync_aggregate
+signature_slot
. The best one should be selected based on theis_better_update
call. But providing a proof that such update is the best update is not that easy.This is explained very well in this Light client roadmap document from @etan-status at the section Light client data backfill, where a solution is also proposed on how to do this, but it requires the addition of a field in the
BeaconState
.The text was updated successfully, but these errors were encountered: