Sync Proof
The Sync Proof serves as input data for verifying a sync committee transition, typically used within zero-knowledge proof systems (zk). It is a compact representation derived from the Light Client Update structure.
The proof is constructed as a Merkle proof using a given gindex (generalized index). It verifies inclusion starting from the hash of a validator’s public key all the way up to the signing root. This ensures that the participating validator’s public key is part of the sync committee that signed a specific block.
The following diagram illustrates the structure of the Merkle tree leading to the SigningRoot:

In order to validate, we need to calculate
512 x sha256 for each pubkey
512 x sha256 merkle proof for the pubkeys
2 x sha256 for the SyncCommittee
5 x sha256 for the stateRoot
3 x sha256 for the blockheader hash
1 x for the SigningRoot
So in total, we need to verify 1035 hashes and 1 bls signature.
The Sync Proof allows cryptographic verification of validator membership in the active sync committee without requiring the entire committee set, reducing proof size and improving zk-efficiency.
EthSyncProof
The Sync Proof is a compact representation of the Light Client Update structure.
The Type is defined in src/chains/eth/ssz/verify_proof_types.h.
Last updated