PlonK Permutation Check

A worked explanation of PlonK's permutation check, why row constraints are insufficient, and how beta and gamma bind wire values to positions.

A (Relaxed) PCS by Merkle Trees and Low-Degree Tests

Building a relaxed polynomial commitment scheme using Merkle trees and low-degree tests for a first succinct argument of circuit satisfiability.

An Unnecessarily Generic Fiat-Shamir Transformation

Turning interactive proofs into non-interactive ones with a generic Fiat-Shamir transformation implementation in Rust.

The GKR Protocol

Implementing the GKR interactive proof protocol for arithmetic circuit evaluation in Rust.

Efficient IP for MatMult

Optimizing the matrix multiplication interactive proof from O(n^3) to O(n^2) prover runtime, following Thaler's Chapter 4.