History

1985 — Zero-knowledge proofs

Shafi Goldwasser, Silvio Micali, and Charles Rackoff introduce the notion of a zero-knowledge proof — the “Z” and “K” in zk-SNARK. “The Knowledge Complexity of Interactive Proof-Systems” (extended abstract), 17th ACM Symposium on Theory of Computing (STOC ‘85), pp. 291–304; full journal version in SIAM Journal on Computing 18(1), 1989, pp. 186–208. Covered in more depth on pedersen.foundation’s History, which shares this same root.

1986 — The Fiat–Shamir transform

Amos Fiat and Adi Shamir publish “How to Prove Yourself: Practical Solutions to Identification and Signature Problems,” CRYPTO ‘86, pp. 186–194 — the recipe this site’s own demo runs: turn an interactive proof into a non-interactive one by replacing the verifier’s random challenge with the output of a hash function. See how it works for the exact mechanics.

1991 — Schnorr identification

Claus-Peter Schnorr publishes “Efficient Signature Generation by Smart Cards,” Journal of Cryptology 4(3), pp. 161–174, describing the identification and signature scheme this site’s demo is built on — a proof of knowledge of a discrete logarithm in a prime-order group.

2011–2012 — The term “SNARK”

Nir Bitansky, Ran Canetti, Alessandro Chiesa, and Eran Tromer coin the term in “From Extractable Collision Resistance to Succinct Non-Interactive Arguments of Knowledge, and Back Again,” first circulated as IACR ePrint 2011/443 (August 2011), later published at the 3rd Innovations in Theoretical Computer Science conference (ITCS 2012), pp. 326–349. This is where “Succinct Non-interactive ARgument of Knowledge” — SNARK — becomes a named, formal object. Co-author Alessandro Chiesa later co-founded Zcash.

2016 — Groth16

Jens Groth publishes “On the Size of Pairing-based Non-interactive Arguments,” EUROCRYPT 2016, LNCS 9666, pp. 305–326. A proof under this construction is exactly 3 group elements — roughly 128 bytes — and verification is one equation with 3 pairings, independent of circuit size. See the homepage and Applications for where this gets used. Its main tradeoff: the trusted setup is circuit-specific — a new ceremony is needed for each new circuit.

2016 — Zcash

Zcash launches on mainnet on October 28, 2016, using zk-SNARKs (built on constructions in the Groth16 family) to shield transaction amounts and participants while still letting the network verify every transaction is valid — still the headline production use of zk-SNARKs. See Applications.

2019 — PLONK

Ariel Gabizon, Zachary J. Williamson, and Oana Ciobotaru publish “PLONK: Permutations over Lagrange-bases for Oecumenical Noninteractive arguments of Knowledge,” IACR ePrint 2019/953. Proof size stays constant (~0.5 KB) with fully succinct verification, and — the headline improvement over Groth16 — the trusted setup is universal and updatable: one ceremony, run once, works for any circuit, and honesty of the whole ceremony only requires one honest participant among everyone who contributed to it. See Glossary for how this compares directly to Groth16’s setup.


Sources: linked inline above; all citations are to the original papers. See Further reading for direct links.