A rough documentation of the protocols and primitives I explored during my ZK quest, from circuits and polynomials to sum-check, GKR, Groth16 and PLONK. Rust implementations of these protocols are in the cryptography-n-zk-research repository.
Chapter One: ZK Fundamentals
- Overview of Computation in Zero-Knowledge Proofs
- Arithmetic Circuits
- Arithmetic Circuits in Rust
- Polynomials
- R1CS to QAP
- Univariate Polynomial Multiplication Using FFT
Chapter Two: Interactive and Non-Interactive Proofs
Chapter Three: Polynomial Commitment Schemes
- Polynomial Commitment Schemes
- KZG Polynomial Commitment Scheme
- Univariate KZG Polynomial Commitment Scheme
- Multilinear KZG Polynomial Commitment Scheme
- Batch Univariate KZG Polynomial Commitment Scheme
- FRI Polynomial Commitment Scheme
Chapter Four: Sum-Check Protocol
Chapter Five: GKR Protocol
Chapter Six: Groth16 Protocol
Chapter Seven: PLONK Protocol
- The PLONK Protocol
- PLONK Introduction and the KZG Universal Setup
- Plonkish Arithmetization
- The PLONK Prover
- The PLONK Verifier