ZK/SEC Research notes from zkSecurity
All posts
educative · zk · sumcheck

Learn Sumcheck, MLE, and HyperPlonk: An Interactive Tutorial with SageMath

We've released a new interactive tutorial on Sumcheck, Multilinear Extensions (MLE), and HyperPlonk that focuses on implementation rather than just theory. The course includes complete SageMath code and exercises so you can actually build these protocols yourself.

webpage

The Sumcheck protocol shows up everywhere in modern zero-knowledge proofs scheme such as HyperPlonk, Spartan, Jolt, and more all. But understanding the papers is one thing; implementing the protocols is another. This tutorial bridges that gap by walking you through working implementations in SageMath, starting with the basics of multilinear polynomials and building up to a complete proof systems.

Hands-On Learning

The tutorial comes with runnable code examples for every protocol. You'll work through interactive exercises implementing key parts of the protocols yourself: evaluating multilinear polynomials, building the prover and verifier algorithms, and composing multiple Sumcheck instances together.

SageMath makes it easy to experiment with the math directly without getting bogged down in performance optimizations. You can focus on understanding how the protocols actually work, which polynomials get evaluated where, and why the verification works. Once you understand the math, porting to production languages becomes much easier.

The course assumes no prior cryptography or sagemath knowledge. We start from first principles and build up progressively, so whether you're implementing zero-knowledge circuits or researching new protocols, you can follow along.

Get started at sumcheck.zksecurity.xyz.

Keep reading
Latest

The Year Finding and Exploiting Bugs Became Cheap, and What to Do About It

The economics of security have changed. AI has made finding and exploiting bugs cheaper, including in cryptographic and zero-knowledge code, while validation and remediation remain slow. Here is our view of what happened, what comes next, and how teams should change the way they secure their stack to defend against AI-assisted attackers.

Stefanos Chaliasos · September 07, 2026

Variants of KZG: Part V, Multilinear Commitments with Mercury

In this final post of the series, we extend univariate KZG commitments to multilinear polynomials through Mercury. Building on Gemini, we fold half of the variables at once, use polynomial division to bind this large fold to the original commitment and reduce the remaining multilinear evaluations to a batched inner product check. We then walk through the end-to-end opening protocol. We conclude by examining its proof size, prover cost and verifier cost.

Varun Thakore · August 17, 2026

Variants of KZG: Part IV, Multilinear Commitments with Gemini

In this blog post, we extend univariate KZG commitments to multilinear polynomials through Gemini. We introduce recursive partial evaluations, derive the split-and-fold identity and express each fold as a univariate identity that can be checked using KZG openings. We then walk through the end-to-end opening protocol. We conclude by examining its proof size, prover cost, and verifier cost.

Varun Thakore · August 12, 2026
Recommended

Faster Sumchecks: Part I

In this blog post, we explore how to optimize the sumcheck protocol, particularly when working with values in a small field and randomness from a large field, as often needed in zkVMs. We introduce various algorithms aimed at reducing expensive operations, focusing on minimizing large multiplications. Starting from using simple evaluation tables to more sophisticated techniques like precomputing accumulators and leveraging Lagrange interpolation, we demonstrate how to efficiently organize computations to speed up proving times. Readers will gain insights into handling arithmetic operations within the sumcheck protocol and learn about optimizing specific cases in zero-knowledge proofs.

Jason Park · November 21, 2025

Sum-Check as an Algebraic Tensor Reduction: Part I

This post introduces algebraic tensor reductions as a unifying framework for understanding recursive proof protocols, using sum-check as the main motivating example. It walks through one recursive step of sum-check, showing how the prover sends a univariate summary, the verifier checks sum consistency, and the original claim is reduced to a smaller claim with one fewer variable. A small bivariate example illustrates how this “peel off one variable, check, then fold with randomness” pattern works concretely. The post sets up the rest of the series, which will introduce the tensor language needed to recover classical sum-check as an algebraic tensor reduction.

Marco Besier · April 27, 2026

𝒫𝔩𝔬𝔫𝒦: A Hands-On Deep Dive

𝒫𝔩𝔬𝔫𝒦’s many layers (selector polynomials, wiring permutations, quotient tests, random challenges and KZG commitments) can be overwhelming. Our zkSecurity tutorial uses a single running example to demystify them all. Build tables and interpolate low-degree BN254 polynomials, encode gate and wiring constraints, run deterministic and probabilistic zero-tests, then layer in randomness and KZG commitments to produce a full Fiat–Shamir proof. Grab the Jupyter Notebook (Sage or Cocalc), or work in your favorite language with our guided test cases.

Martín Ochoa · August 05, 2025