Abstract

This article explains SNARKs — succinct non-interactive arguments of knowledge — the proof systems whose defining feature is a proof that is tiny and fast to verify no matter how large the computation it attests to. It develops the succinctness property and why it is transformative: a verifier checks a constant-size proof in near-constant time instead of re-running the work. It walks the compilation pipeline that makes this possible: a program becomes an arithmetic circuit, the circuit becomes a rank-1 constraint system whose satisfying assignment is the witness, and that constraint system is proven satisfiable through polynomial machinery. It then examines the trusted-setup question — many efficient SNARKs such as Groth16 require a structured reference string produced in a setup ceremony whose secret 'toxic waste' must be destroyed, since anyone who retains it can forge proofs — and the spectrum from per-circuit trusted setups to universal, updatable setups and fully transparent ones. It closes with the trade-offs among SNARK families and the AI application: SNARKs let a proof of a model's inference be verified cheaply, which is the property zkML needs. The theme: SNARKs buy succinct, publicly checkable proofs of arbitrary computation at the cost of a compilation pipeline and a setup-trust decision.

A SNARK — a succinct non-interactive argument of knowledge — is a proof system with an almost paradoxical property: the proof that an enormous computation was performed correctly is itself tiny, and checking it takes almost no time, regardless of how long the computation took. A verifier can confirm the result of work it would take hours to redo by examining a few hundred bytes in milliseconds. This article explains what succinctness means, the compilation pipeline that turns a program into a provable statement, and the trusted-setup question that distinguishes the major SNARK families — the practical crux of choosing one.

What succinct means

The defining property of a SNARK is succinctness: the proof is small — often constant size, a few hundred bytes — and verification is fast, near-constant or logarithmic in the size of the computation being proved. This decouples the cost of checking a computation from the cost of performing it. A verifier who could never afford to re-run a massive computation can nonetheless be convinced it was done correctly by checking a proof whose size and verification time do not grow with the work.

This is what makes SNARKs transformative rather than merely elegant. Without succinctness, verifying a claim about a computation might cost as much as redoing it, which defeats the purpose of outsourcing. With it, a weak device can verify the output of a powerful one, a blockchain can verify an off-chain computation in a single cheap check, and a user can verify a server's work without trusting it and without repeating it. The asymmetry between an expensive proving step and a cheap verification step is the entire economic point.

The prover pays for this. Generating a SNARK is computationally heavy — far more expensive than performing the computation in the clear — because the prover must not only do the work but also produce a proof of it through the machinery below. SNARKs are therefore chosen when verification happens far more often than proving, or when a distrustful verifier's cheap confidence is worth a trusted prover's expensive effort. The design goal is always the same: push cost onto the prover so the verifier's check stays tiny.

Without a SNARK the verifier must redo the work; with one it checks a tiny proof in near-constant time. Re-run versus check a proof Re-run computationcost grows with work Verifier's burdenimpractical Check SNARKnear-constant time Tiny proofsuccinct
Without a SNARK the verifier must redo the work; with one it checks a tiny proof in near-constant time.
\[|\pi| = O(1) \;\text{(or polylog)}, \qquad T_{\text{verify}} = O(1) \;\text{(or polylog)} \;\ll\; T_{\text{compute}}\]

The arithmetic-circuit pipeline

To prove a statement about a computation, the computation must first be expressed in a form the proof machinery can handle, and that form is an arithmetic circuit — a network of addition and multiplication gates over a finite field. Any bounded computation can be 'arithmetized' this way, unrolled into a fixed circuit whose wires carry field elements. The statement to be proved becomes: there exists an assignment of values to the wires that makes the circuit's output correct, and the witness is that assignment.

The circuit is then translated into a constraint system, most classically a rank-1 constraint system (R1CS), a list of quadratic constraints each of the form that one linear combination of the variables times another equals a third. A witness satisfies the statement exactly when it satisfies every constraint. This algebraic representation — a system that is satisfiable if and only if the computation was done correctly — is what the cryptographic core actually proves, typically by encoding the constraints as polynomials and proving polynomial identities succinctly.

So the pipeline runs: program, to arithmetic circuit, to constraint system, to a succinct proof of satisfiability. Each stage is mechanical, and toolchains automate it, so a developer can in principle write a computation and obtain a circuit and a prover. The subtlety and the cost live in this compilation: the circuit's size determines the prover's work, and expressing a computation efficiently as a low-constraint circuit is a real engineering discipline, especially for operations — comparisons, hashing, non-linearities — that are awkward to arithmetize.

A program becomes an arithmetic circuit, then a constraint system, whose satisfiability the SNARK proves succinctly. Compiling a computation into a proof Programthe computation Arithmetic circuitadd / multiply gates R1CSconstraint system SNARK proofsuccinct
A program becomes an arithmetic circuit, then a constraint system, whose satisfiability the SNARK proves succinctly.
\[\text{R1CS constraint: } (A\mathbf{z}) \circ (B\mathbf{z}) = (C\mathbf{z}), \qquad \mathbf{z} = \text{witness assignment}\]

The trusted-setup question

Many of the most efficient SNARKs — Groth16 is the canonical example, with proofs of just a few group elements — require a trusted setup: a one-time ceremony that produces a structured reference string used by both prover and verifier. The ceremony samples secret randomness to build the string, and that secret, often called toxic waste, must be destroyed. Anyone who retains it can forge proofs of false statements that verify correctly, silently breaking soundness. The setup is thus a point of trust that the proof system's security depends on.

The severity varies by design, and it is useful to see it as a spectrum of decreasing trust. A per-circuit trusted setup, as in Groth16, must be run afresh for each different circuit and produces the smallest, fastest proofs. A universal and updatable setup, as in PLONK and Marlin, runs one ceremony that works for all circuits up to a size bound and lets many participants contribute so that the secret is safe as long as any single one was honest. A transparent setup, as in STARKs, uses only public randomness and eliminates the trusted setup entirely, at the cost of larger proofs.

Ceremonies mitigate the risk in practice through multi-party computation: many independent participants each contribute randomness, and the toxic waste is compromised only if every participant colluded, which distributed, public ceremonies make implausible. Still, a trusted setup is a real assumption and a real operational burden, and whether a system can tolerate it — versus needing the transparency of a setup-free scheme — is often the deciding factor in choosing a proof system. The next article takes up the transparent, setup-free STARKs directly.

SNARK setups range from a per-circuit trusted ceremony to a universal updatable one to a fully transparent, setup-free scheme. The setup-trust spectrum Per-circuit setuptoxic waste Universal setupone updatable ceremony Transparentno setup less trust →
SNARK setups range from a per-circuit trusted ceremony to a universal updatable one to a fully transparent, setup-free scheme.

Trade-offs and the AI stakes

The families trade among proof size, setup trust, and post-quantum security, and the table lays out the shape. Groth16 gives the smallest proofs and fastest verification but needs a per-circuit trusted setup and relies on pairings, which quantum computers break. PLONK-style systems keep small proofs and pairing-based verification while replacing the per-circuit ceremony with a single universal one. STARKs, built only on hash functions, need no setup and are plausibly post-quantum, paying with larger proofs. There is no dominant choice; the right system depends on whether a setup is tolerable, how small proofs must be, and whether post-quantum security is required.

That post-quantum dimension matters for the series' larger argument. Pairing-based SNARKs are not quantum-safe, so a verifiable-computation stack meant to endure must weigh hash-based, transparent proofs against the smaller pairing-based ones — the same harvest-and-endurance reasoning that governs the rest of post-quantum migration, applied to proof systems. A SNARK deployed today whose soundness rests on pairings will need a migration plan, whereas a transparent hash-based one is already on safer ground.

For AI the application is verifiable inference, and succinctness is precisely the property it needs. Proving that a model produced a given output on a committed input is a statement about a large computation — millions of multiply-accumulates and non-linearities — and only a succinct proof makes verification practical for the many parties or agents who must check it. The pipeline of this article is exactly what a zkML system runs: it arithmetizes the network into a circuit, compiles it to constraints, and produces a succinct proof that any verifier confirms cheaply. The costs are real — heavy proving and the arithmetization of non-linear layers — but the succinctness is what makes a proof of inference something you can publish and have checked at scale, which is the whole point of verifiable AI. Whether that proof also needs to be transparent and post-quantum is the question the next article answers.

Trade-offs among the major SNARK/argument families.
FamilySetupProof sizePost-quantum
Groth16per-circuit trustedtiny (constant)no (pairings)
PLONK / Marlinuniversal, updatablesmallno (pairings)
STARKtransparent (none)largerplausibly yes (hashes)
📌
Succinctness, at the price of a pipeline and a setup choice. A SNARK proves arbitrary computation with a tiny, fast-to-check proof by compiling the computation into an arithmetic circuit and constraint system. The main practical decision is the setup: per-circuit trusted (smallest proofs), universal updatable, or transparent and post-quantum (setup-free, larger proofs).

Key takeaways

  • A SNARK's defining property is succinctness: a tiny proof checked in near-constant time regardless of the size of the computation proved.
  • Succinctness decouples verification cost from computation cost, letting weak verifiers confirm powerful provers' work without redoing it — at a heavy proving cost.
  • The pipeline compiles a program into an arithmetic circuit, then a rank-1 constraint system whose satisfying witness is proven satisfiable succinctly.
  • Many efficient SNARKs (Groth16) need a per-circuit trusted setup whose secret toxic waste must be destroyed, or soundness breaks; ceremonies distribute that trust.
  • Setups span a spectrum: per-circuit trusted, universal and updatable (PLONK), and fully transparent and setup-free (STARK), with proof size trading against trust.
  • For zkML, succinctness is essential: it lets a proof of a model's inference be published once and verified cheaply by many parties or agents.

Practitioner Toolkit

Copy-paste, strictly defensive artifacts you can use today. Nothing here attacks a real system.

Choosing a SNARKchecklist

Questions that select a proof system.

  • How small must the proof and verification cost be?
  • Is a trusted setup tolerable, and if so per-circuit or universal?
  • Is post-quantum security required (favoring transparent, hash-based schemes)?
  • How efficiently can the target computation be arithmetized into constraints?
  • How often is proving done relative to verification (which the prover cost must justify)?
🚀The SNARK mental modelquickstart

Three facts to hold onto.

  • Succinct: tiny proof, fast check, expensive prover.
  • Pipeline: program to arithmetic circuit to constraint system to proof.
  • Setup: per-circuit trusted, universal, or transparent — the key decision.
🔒Proof-system selection stancepolicy

A stub recording the SNARK decision.

snark_selection:
  succinctness: [small_proof, fast_verify]
  pipeline: [program, arithmetic_circuit, r1cs, proof]
  setup:
    options: [per_circuit_trusted, universal_updatable, transparent]
    toxic_waste: must_be_destroyed
  post_quantum:
    pairing_based: false
    hash_based: plausible
Illustrative documentation template, not a product config.

Glossary

SNARK
A succinct non-interactive argument of knowledge: a tiny, fast-to-verify proof that a computation was performed correctly.
Succinctness
The property that proof size and verification time are near-constant, independent of the size of the proved computation.
Arithmetic circuit
A representation of a computation as a network of addition and multiplication gates over a finite field.
Rank-1 constraint system (R1CS)
A set of quadratic constraints encoding a circuit; satisfied exactly by a correct witness assignment.
Trusted setup
A one-time ceremony producing a structured reference string whose secret must be destroyed, or proofs can be forged.
Toxic waste
The secret randomness of a trusted setup; retaining it lets an attacker forge proofs, so it must be destroyed.
Universal / transparent setup
A universal setup serves all circuits from one updatable ceremony; a transparent setup uses only public randomness and needs no ceremony.

References

  1. Groth, On the Size of Pairing-based Non-interactive Arguments / Groth16 (EUROCRYPT 2016)
  2. Gabizon, Williamson, Ciobotaru, PLONK (IACR ePrint 2019/953)
  3. Ben-Sasson et al., SNARKs for C: Verifying Program Executions Succinctly (CRYPTO 2013)
  4. Ben-Sasson, Bentov, Horesh, Riabzev, Scalable Transparent Arguments of Knowledge / STARKs (IACR ePrint 2018/046)
  5. Thaler, Proofs, Arguments, and Zero-Knowledge (monograph, 2022)