| Authors | Gabizon, Ariel; Williamson, Zachary J.; Ciobotaru, Oana |
|---|---|
| Year | 2019 |
| Project | PLONK |
| License | Creative Commons |
| Official Source | https://eprint.iacr.org/2019/953 |
This page is an educational summary and analysis of an official whitepaper or technical paper, written for reference purposes. It is not a verbatim reproduction. CryptoGloss does not claim authorship of the original work. All intellectual property rights remain with the original author(s). The official document is linked above.
“PLONK: Permutations over Lagrange-bases for Oecumenical Noninteractive arguments of Knowledge” is a paper by Ariel Gabizon (formerly Zcash/ECC), Zachary J. Williamson (Aztec Network), and Oana Ciobotaru, published at IACR ePrint in 2019. PLONK introduces a zk-SNARK that uses a universal and updateable structured reference string (SRS) — a single trusted setup that works for any circuit up to a maximum size, removing the need for circuit-specific ceremonies that make Groth16 operationally burdensome.
Since 2020, PLONK and its variants (TurboPlonk, UltraPlonk, Halo2, Plonky2) have become the dominant SNARK proving system for new ZK applications: zkSync, Scroll, Aztec, Polygon PLONK, JellyFish, Hyperplonk, and many others.
> PDF hosting: The PLONK paper is at eprint.iacr.org/2019/953.
Publication and Context
Groth16, while efficient, required a fresh trusted setup for every application-specific circuit. For a company deploying multiple ZK applications (or iterating on a circuit frequently), this was operationally painful and a trust burden.
Universal SNARKs — systems where one setup works for all circuits — had been explored theoretically but were either too slow or too large. PLONK achieved practical universal SNARKs by:
- Using Lagrange polynomial representation of circuits (allowing efficient variable-number-of-gates computation)
- A novel permutation argument to enforce wire equality constraints
- A polynomial commitment scheme (KZG commitments over BLS12-381) for efficient verification
“Oecumenical” in the title is a scholarly term meaning “universal” — PLONK is the universal SNARK.
PLONK’s Circuit Representation
Where Groth16 compiles to R1CS (rank-1 constraints: a·b = c), PLONK uses arithmetic gates directly in a table format:
Each gate has:
- Left input wire: $a_i$
- Right input wire: $b_i$
- Output wire: $c_i$
- Selector polynomials: $q_L, q_R, q_O, q_M, q_C$ defining the gate type
Gate constraint:
$$q_M cdot a_i cdot b_i + q_L cdot a_i + q_R cdot b_i + q_O cdot c_i + q_C = 0$$
This gate handles:
- Multiplication: $a_i cdot b_i = c_i$ (set $q_M=1, q_O=-1$)
- Addition: $a_i + b_i = c_i$ (set $q_L=q_R=1, q_O=-1$)
- Constants: arbitrary linear combinations
Permutation argument (copy constraints):
If wire $a_3$ must equal wire $c_7$ (e.g., the output of one gate is the input to another), PLONK encodes this using a permutation of wire indices and proves that the actual values satisfy this permutation via a grand product argument. This is the “P” in PLONK.
Universal and Updateable SRS
The key innovation: PLONK’s structured reference string (SRS) consists of:
- ${[x^i]_1}_{i=0}^{n}$ (powers of a secret scalar x in group $G_1$)
- $[x]_2$ (one element in $G_2$)
This SRS works for any circuit with at most $n$ gates. The same SRS generated by the Powers of Tau ceremony used by one SNARK application can be reused by all other SNARK applications that fit within the size limit.
Updateable: New participants can contribute fresh randomness to the SRS at any time, strengthening the security assumption without restarting from scratch.
PLONK Extensions
The original PLONK paper immediately spawned several extensions:
TurboPlonk / UltraPlonk (Aztec, 2020):
Added custom gates — PLONK’s standard gates are general, but custom gates encode specific operations (e.g., elliptic curve point addition, range checks) in a single gate rather than many generic gates. This dramatically reduces circuit size for specific operations.
Halo2 (Zcash ECC, 2020):
Combines PLONK with the Halo recursive proof system and uses Pedersen commitments instead of KZG. This achieves a fully transparent (no trusted setup) SNARK with recursive proof composition. Used in Zcash’s Orchard pool and Scroll’s zkEVM.
Plonky2 (Polygon, 2022):
Combines PLONK with FRI (STARKs’ main component) instead of KZG for fast, transparent, recursive proofs over small fields. Achieves recursive aggregation in ~170ms — key for fast proof composition.
Hyperplonk, Boojum, etc.: Further variants focusing on multilinear extensions, look-up tables, and GPU acceleration.
Proof Size vs. Groth16
| Property | Groth16 | PLONK |
|---|---|---|
| Proof size | ~200 bytes | ~400–600 bytes |
| Trusted setup | Circuit-specific | Universal (one for all circuits up to n gates) |
| Verification time | Very fast (1 equation) | Moderate (multiple equations) |
| Custom logic | Hard (R1CS) | Easy (custom gates) |
| Dominant use | Legacy/Zcash/Tornado | All major new ZK systems |
Reality Check
PLONK’s universal setup is genuinely more practical than Groth16’s per-circuit-setup model. In production, however, many systems still use KZG-based PLONK (which requires the Powers of Tau ceremony) rather than fully transparent variants. The “updateable” property is rarely exercised in practice — most teams use an existing trusted Powers of Tau ceremony rather than organizing new contributions.
Custom gates (TurboPlonk/UltraPlonk) dramatically improve circuit sizes but significantly increase circuit design complexity — requiring specialized engineers to write optimal circuits.
Legacy
PLONK is arguably the most influential zk-SNARK paper since Groth16. It directly powers:
- Aztec Network (Noir programming language)
- zkSync (Boojum, a PLONK variant)
- Scroll (Halo2-based zkEVM)
- Polygon (Plonky2 recursive proofs)
- Mina Protocol (Kimchi, a PLONK variant)
- Many others
The PLONK framework’s extensibility — especially custom gates and lookup tables — has become the standard building block for zkEVM circuit design.
Related Terms
Research
- Gabizon, A., Williamson, Z.J., & Ciobotaru, O. (2019). PLONK: Permutations over Lagrange-bases for Oecumenical Noninteractive arguments of Knowledge. IACR ePrint 2019/953.
— Primary source. Section 5 proves the permutation argument; Section 8 gives the full protocol description.
- Gabizon, A., & Williamson, Z.J. (2020). plookup: A simplified polynomial protocol for lookup tables. IACR ePrint 2020/315.
— Extension of PLONK with efficient lookup arguments; enables efficient range checks and hash lookups.
- Groth, J. (2016). On the Size of Pairing-Based Non-Interactive Arguments. EUROCRYPT 2016.
— Groth16, the preceding system; PLONK explicitly addresses Groth16’s circuit-specific setup limitation.