rust

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.

Generalizing Sum Check protocol and counting the triangles

Generalizing the Sum-Check protocol to arbitrary polynomials and applying it to the graph triangle counting problem in Rust.

Implementing Sum Check protocol in Rust

A walkthrough of implementing the Sum-Check interactive proof protocol from Thaler's book in Rust.

Evaluating multilinear extensions with Rust

Implementing multilinear extension evaluation algorithms from Proofs, Arguments and Zero-Knowledge Chapter 3 in Rust.