For the complete documentation index, see llms.txt. This page is also available as Markdown.

SyncCommittee Proof

The Verifier always needs the pubkeys of the sync committee for a given period in order to verify the BLS signature of a Beacon BlockHeader.

If a verifier requests a proof from a remote prover, the verifier may use the c4-property of the RPC-Request to describe its state of the known periods or checkpoint. If the verifier only reports a checkpoint, a bootstrap is added proving the current_sync_committee for the given checkpoint. If the requested header has a higher period than the bootstrap or the latest known period, all required lightClientUpdates will be proved.

if

chains/eth/ssz/verify_types.c

Finds the index of a target definition within an array of SSZ definitions. Searches for a container type whose elements pointer matches the target.

static inline size_t array_idx(const ssz_def_t* array, size_t len, const ssz_def_t* target) {
  for (size_t i = 0; i < len; i++) {
    if (array[i].type >= SSZ_TYPE_CONTAINER && array[i].def.container.elements == target) return i;

Parameters

  • array : Array of SSZ definitions to search

  • len : Length of the array

  • target : Target definition to find (compares elements pointer)

Returns

Index of the matching definition, or 0 if not found

C4_ETH_SYNCDATA_UPDATE_UNION

chains/eth/ssz/verify_types.c

Returns the SSZ definition for a LightClient Update based on the fork ID. Maps fork identifiers to the corresponding update type in the union array.

Parameters

  • fork : Fork identifier (C4_FORK_DENEB, C4_FORK_ELECTRA, C4_FORK_FULU)

Returns

Pointer to the SSZ definition for the update type, or NULL for unsupported forks

&C4_REQUEST_CONTAINER

chains/eth/ssz/verify_types.c

Returns the SSZ type definition for a given verification type enum. Maps eth_ssz_type_t enum values to their corresponding SSZ definition pointers. Used to retrieve the correct type definition for parsing and validating SSZ-encoded proof data.

Parameters

  • type : The verification type enum value

Returns

Pointer to the corresponding SSZ definition, or NULL for invalid types

C4EthLcSyncdata

The main container type definition for C4Request, wrapping all request fields Union type for a single LightClient Update, which can be either Deneb or Electra format LC SyncData contains all the proofs needed to bootstrap and update to the current period.

The Type is defined in src/chains/eth/ssz/verify_types.c.

Referenced Types

C4EthZkSyncdata

ZK SyncData contains the recursive zk proof of the sync committee update. Legacy SP1 v5 layout with a fixed 260-byte groth16 proof. Kept unchanged so the prover can keep serving zk_proof.ssz to released clients (< 2.0.0) during the SP1 v5 -> v6 dual-serve window. See C4_ETH_ZK_SYNCDATA_V6 for the v6 variant.

The Type is defined in src/chains/eth/ssz/verify_types.c.

Referenced Types

C4EthZkSyncdataV6

SP1 v6 ("Hypercube") variant of ZKSyncData. Structurally identical to the legacy C4_ETH_ZK_SYNCDATA except for the groth16 proof size: SP1 v6 emits a 356-byte proof (selector + exit_code + vk_root + proof_nonce + A/B/C) instead of the v5 260-byte proof. The differing fixed-size proof field shifts every following field, so v5 and v6 cannot share one container definition -- they are distinct union variants selected by client version (see c4_zk_syncdata_type).

The Type is defined in src/chains/eth/ssz/verify_types.c.

Referenced Types

Last updated