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
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
More to explore

Unfolding the Bulletproofs Magic: A SageMath Deep Dive

In this post, we dive deep into the Inner Product Argument (IPA), the mathematical core of Bulletproofs. Starting from simple vector folding, we build up to a full zero-knowledge proof with Pedersen commitments, explore how the mysterious `L` and `R` terms appear, and finish with smart verifier optimizations. All illustrated with clear, runnable SageMath code.

teddav · October 27, 2025

zkSecurity partners with ZPrize to make you win hundreds of thousands of dollars!

We're gearing up for this year's ZPrize competition, where we'll be hosting the High Throughput Signature Verification category. This challenge is all about creating the most efficient signature verification circuit using Aleo's Varuna proof system. Participants will work with ECDSA on the Bitcoin and Ethereum curve and the Ethereum hash function, keccak256. It's a great chance to dive into some of the hottest problems in arithmetic circuits and optimize cryptographic algorithms. If you're curious about pushing the boundaries in ZK, join us and share your feedback on our prize specification through our Discord channel.

ZK/SEC · August 27, 2023

Do in secret. Assert in public. Don't under-constrain your prover's witness computation in ZK programs

Curious about diving into zero-knowledge (ZK) application development? Our blog post is here to guide you through the common security pitfalls and mindset shifts essential for tackling ZK programming. We reflect on our journey from the early days of Mina Protocol to the dynamic space today, filled with tools like SnarkyJS and newer approaches to split the prover and verifier roles effectively. Discover the errors to avoid, like under-constraining data and letting divisors slip through unchecked, and learn how a solid review and audit process can save your ZK applications from disastrous security issues. Dive in to get the insights you need to navigate the ZK landscape confidently!

Brandon Kase · June 01, 2023