What is a zk-SNARK

“zk-SNARK” packs five separate properties into seven letters. Taken apart:

Zero-Knowledge

The proof reveals nothing about the secret beyond the one bit “yes, the prover knows it.” Not a hint, not a partial leak — nothing a verifier couldn’t have already computed on their own without the proof. This is the oldest of the ideas here, going back to Goldwasser, Micali, and Rackoff’s 1985 definition — see History.

Succinct

The proof stays small and fast to check, no matter how large the statement being proven is. A Groth16 proof is exactly 3 group elements whether the underlying computation had 10 steps or 10 million — see the homepage for that fact in full, and Applications for where it’s used in production. This is the property that makes zk-SNARKs practical for blockchains: you can verify a proof about a huge computation in milliseconds.

Non-interactive

The prover produces the proof once, unilaterally — no back-and-forth challenge-response with the verifier required. The Fiat–Shamir transform (1986) is the standard way to get here: replace the verifier’s random challenge with the output of a hash function the prover computes themselves. See History.

ARgument of Knowledge

A proof would be sound against a computationally unbounded prover; an argument is only sound against a prover bounded by realistic computing power — which is the setting every practical SNARK actually operates in. “Of Knowledge” means the prover isn’t just showing a statement is true, but that they specifically know a witness (the secret) that makes it true — formally, that a witness can in principle be extracted from a convincing prover.

What this site’s demo shows, and what it doesn’t

This is the part to read before trying the interactive demo.

A real zk-SNARK needs two more layers of machinery this site does not implement from scratch: arithmetization (turning an arbitrary computation into a system a proof system can talk about) and polynomial commitments over pairing-based elliptic curves (what actually delivers the Succinct property for a big computation). Building those correctly, from scratch, for a browser demo is a substantial engineering project on its own — not something that can be done honestly in the scope of an explainer site.

So the demo on this site implements something smaller but real: Schnorr identification, made non-interactive with the Fiat–Shamir transform. It’s not a rebrand or a toy stand-in — it’s the actual historical building block zero-knowledge proofs (and eventually SNARKs) grew out of, and it genuinely has three of SNARK’s four properties:

Succinctness, on this site, is demonstrated with real numbers instead of a demo: a Groth16 proof is 3 group elements regardless of circuit size — see the homepage and Applications.