An 11-part deep dive into the PlonK zero-knowledge proof protocol by Benjamin Bencik.
Introduction to SNARKs, zero-knowledge, and how PlonK works at a high level.
Converting programs into polynomials through circuit arithmetization.
Mathematical background needed for KZG commitment schemes.
Understanding commitment schemes in general and the KZG polynomial commitment in detail.
Constructing polynomials from circuit values and computing the protocol setup.
Wire polynomials, commitments, and hiding evaluations for zero-knowledge.
The permutation polynomial and handling copy constraints.
Combining constraints into a single polynomial.
Computing openings to evaluate committed polynomials with a linearisation trick.
Constructing the final argument in the prover algorithm.
The verification algorithm of the PlonK protocol.
Benchmarking the Icicle library for GPU acceleration of ZK primitives with Gnark on multiple GPUs.
A survey of proof aggregation techniques: inner product arguments, recursive SNARKs, folding, and recursive STARKs.
GPU-accelerated Halo2 prover research paper.