protocol.verifier#

STARK proof verification.

Attributes#

Functions#

stark_verify(→ bool)

Verify a STARK proof. Returns True if valid.

Module Contents#

protocol.verifier.FRIQueryIndex[source]#
protocol.verifier.QueryPolynomials[source]#
protocol.verifier.EVALS_HASH_WIDTH = 16[source]#
protocol.verifier.QUOTIENT_STAGE_OFFSET = 1[source]#
protocol.verifier.EVAL_STAGE_OFFSET = 2[source]#
protocol.verifier.FRI_STAGE_OFFSET = 3[source]#
protocol.verifier.stark_verify(proof: protocol.proof.STARKProof, air_config: protocol.air_config.AirConfig, verkey: primitives.merkle_tree.MerkleRoot, global_challenge: primitives.field.InterleavedFF3 | None = None, publics: primitives.field.FFArray | None = None, proof_values: primitives.field.FFArray | None = None) bool[source]#

Verify a STARK proof. Returns True if valid.

Args:

proof: Deserialized STARK proof air_config: AIR configuration with stark_info verkey: Merkle root of constant polynomial tree global_challenge: The 3-element transcript seed from proof[‘global_challenge’].

Always provided for per-AIR VADCOP proofs. None only for VadcopFinal (outer coordinator verifier).

publics: Public input values (if any) proof_values: Cross-AIR proof values (if any)

Verification phases: 1. Parse proof components (evals, air values, trace values) 2. Reconstruct Fiat-Shamir transcript to derive challenges 3. Run verification checks:

  • Q(xi) = C(xi): quotient matches constraint evaluation

  • FRI consistency: polynomial evaluations match commitments

  • Merkle proofs: all commitment openings are valid

  • Degree bound: final FRI polynomial has correct degree