soft3/zheng/specs/superspartan.md

SuperSpartan

an Interactive Oracle Proof (IOP) for Customizable Constraint Systems (CCS). Setty, Thaler, Wahby (2023). ePrint 2023/552.

CCS definition

a CCS instance is a tuple (M₁, ..., M_t, S₁, ..., S_q, c₁, ..., c_q, m, n, l):

matrices:     M₁, ..., M_t ∈ F^{m×n}    (sparse)
index sets:   S₁, ..., S_q ⊆ [t]
coefficients: c₁, ..., c_q ∈ F
witness:      z ∈ F^n   (z = (1, x, w) where x is public input, w is private witness)

satisfiability: Σⱼ cⱼ · ∏_{i ∈ Sⱼ} Mᵢ · z = 0

CCS generalizes R1CS, Plonkish, and AIR. zheng uses the AIR encoding: each matrix M selects a register value at the current row (t) or next row (t+1). for example, the constraint r5_{t+1} = r3_t + r4_t (pattern 5, add) becomes:

M₁ selects r5 at row t+1:  M₁[t, :] · z = r5_{t+1}
M₂ selects r3 at row t:    M₂[t, :] · z = r3_t
M₃ selects r4 at row t:    M₃[t, :] · z = r4_t

CCS terms: S₁={1}, S₂={2,3}, c₁=1, c₂=−1
constraint: M₁·z − (M₂·z ∘ M₃·z) = 0  → but add is degree 1, so:
            c₁·M₁·z + c₂·M₂·z + c₃·M₃·z = 0  with c₁=1, c₂=−1, c₃=−1

the "shifted-row" trick: M₁ reads row t+1 while M₂, M₃ read row t. this encodes transition constraints (current state → next state) as a single CCS satisfiability check over all rows simultaneously.

protocol

SETUP: none

PROVER(CCS instance I, witness w):
  1. z = (1, x, w)
  2. encode z as multilinear polynomial ẑ: F^{log n} → F
  3. commit: C_ẑ = PCS_commit(ẑ)
  4. for each matrix Mᵢ:
       compute ûᵢ(y) = Σ_x M̃ᵢ(y, x) · ẑ(x)    // multilinear extension of Mᵢ · z
  5. receive random r ∈ F^{log m} from verifier
  6. define g(x) = Σⱼ cⱼ · ∏_{i ∈ Sⱼ} ûᵢ(x)    // constraint polynomial
  7. run sumcheck on: Σ_{x ∈ {0,1}^{log m}} eq(r, x) · g(x) = 0
     → reduces to evaluation at random point s
  8. for each ûᵢ: open ûᵢ(s) via sumcheck on Mᵢ definition
     → reduces to evaluation of ẑ at random point t
  9. open PCS_open(ẑ, t) → v, π

VERIFIER(CCS instance I, commitment C_ẑ, proof):
  1. sample r ∈ F^{log m}
  2. verify outer sumcheck (step 7): k = log(m) rounds
     for each round i:
       check gᵢ(0) + gᵢ(1) = claim_{i-1}
       send challenge rᵢ
  3. at sumcheck output point s:
     check claimed evaluation = eq(r, s) · Σⱼ cⱼ · ∏_{i ∈ Sⱼ} claimed_ûᵢ(s)
  4. verify inner sumchecks (step 8): reduce each ûᵢ(s) to ẑ(t)
  5. verify PCS_verify(C_ẑ, t, v, π)

the outer sumcheck (step 7) verifies constraint satisfaction over all m rows. the inner sumchecks (step 8) verify the matrix-vector products. together they reduce m × n constraint checks to one PCS opening.

cost

phase prover verifier
multilinear extensions (step 4) O(N) field ops per matrix —
outer sumcheck (step 7) O(N) field ops O(log m) field ops
inner sumchecks (step 8) O(N) field ops per matrix O(log n) field ops
PCS open/verify depends on PCS depends on PCS
total (IOP only) O(t · N) field ops O(t · log N) field ops

where N = max(m, n) = trace size. prover is linear. verifier is logarithmic.

constraint degree affects only field operation count in the prover (step 6), not cryptographic operations. degree-7 constraints (hemera rounds) cost 7× the field multiplications of degree-1 constraints but require the same number of PCS operations.

instantiation in zheng

parameter value
field Goldilocks field (p = 2^64 − 2^32 + 1)
PCS Brakedown (multilinear mode)
m 2^n trace rows (up to 2^32)
n 16 registers (2^4 columns)
t number of constraint matrices (pattern-dependent)
max degree 7 (pattern 15: Poseidon2 round)
Fiat-Shamir hemera sponge (see transcript)

the CCS matrices are sparse: each nox pattern touches at most 6 registers per row. sparsity determines the constant factor in the O(t · N) prover cost.

soundness

parameter value
IOP soundness error O(max_degree · log(m) /
with Goldilocks ( F
composition with Brakedown total soundness = IOP error + PCS soundness error

see sumcheck for the core protocol, polynomial-commitment for the PCS, constraints for CCS encoding of nox patterns, CCS for the constraint framework, zheng for the full architecture

Homonyms

soft3/zheng/docs/explanation/superspartan
SuperSpartan the IOP layer in zheng. SuperSpartan is an Interactive Oracle Proof for CCS — Customizable Constraint Systems — a generalization that captures R1CS, Plonkish, and AIR in a single framework. by building on CCS, zheng handles any constraint format. this future-proofs the system: if a new…

Graph