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