ZK/SEC Research notes from zkSecurity
All posts
educative · zk · elliptic-curves

Notes and Proofs for Divisor Techniques

Elliptic Artwork

On the request of MAGIC Grants we were asked to review the security of the divisor-based protocol for proving Elliptic Curve Inner Products (ECIPs) introduced by Liam Eagen in his 2022 eprint. The motivation is the upcoming upgrade to Monero, which will employ this technique; then billions are on the line, you want to be sure. Our contributions include a new proof of extraction, more exact definitions of the relations proven, and a formal treatment of the composition of the protocol with a non-interactive proof. Our treatment goes all the way from the algebraic geometry to the concrete constraints that must be checked.

Download The Notes (PDF)

Application

The intended application is the upcoming Full-Chain Membership Proofs (FCMP++) for Monero, which composes the ECIP with Curve Trees to get set-membership proofs much more efficient than a standard Merkle tree verified inside a proof system. This will allow Monero to scale its membership proofs to include every possible transaction. Curve trees requires:

  • A single lookup.
  • A single scalar multiplication.

Proven using a circuit over a field that is the base field of the elliptic curve. The usual way to prove the scalar multiplication involves emulating the group operation in-circuit, e.g. proving the execution of the standard double-and-add inside the circuit. Eagen's technique instead exploits non-determinism and interaction: instead of computing the group operations, the prover constructs a proof (witness), commits to it, and then the verifier samples a random challenge to verify the validity of the proof. A small teaser follows.

The Trick

We think the original paper is underappreciated; the core observation is very neat. The key insight is that there is a 1-to-1 correspondence (up to nonzero scalar) between rational functions on an elliptic curve $E$ and principal divisors: formal sums of points with integer multiplicities, of degree zero, that sum to the identity on $E$. Concretely, $P_1, \ldots, P_n \in E$ satisfy $\sum_i P_i = \mathcal{O}$ (counted with multiplicity) if there exists a rational function $f \in \mathbb{F}(E)$ with divisor:

$$ \mathrm{div}(f) = \sum_i (P_i) - n(\mathcal{O}) $$

The useful direction: a witness for the sum is a rational function with the prescribed zeros at the $P_i$ and a matching pole of order $n$ at infinity. Hence, rather than emulating the group law inside the circuit, the prover commits to the coefficients of $f$ and the verifier checks that $f$ has exactly that divisor. Taking the logarithmic derivative reduces this further: the check becomes an inner product between the prover's secret coefficients and a public vector derived from a random challenge point, instead of evaluating $f$ at every $P_i$.

Done naively, this saves nothing over the simple group law emulation approach, however, by applying Haböck's logarithmic derivative trick to the expression, everything becomes a linear combination between public challenge values and the divisor polynomial $f(X, Y) \in \mathbb{F}[E]$. The end result is that an MSM of arbitrary length can be verified in 7 multiplicative constraints. All this is covered in much more detail in our writeup.

We Can Help

With broad practical/academic expertise zkSecurity helps its clients review/develop/employ the most advanced cryptography with confidence. Including providing additional formalism beyond the original paper, helping you go from paper to practice without fear of security/proof gaps. Whether you need extra eyes on your own work, or work you plan to incorporate into your solution, we are happy to discuss how we may help.

Keep reading
Recommended

ZNARKs: SNARKs for The Integers

Hey there! Interested in learning about SNARKs that work beyond finite fields? We’ve been diving into $\mathbb{Z}$NARKs, which are SNARKs tailored for computations involving integers. Our latest post unpacks this intriguing area, showing how we can construct efficient proof systems for integer-based computations. You'll discover nifty tricks like range checks without bit decomposition and mixed field emulation, plus how these techniques can simplify RSA computations. Intrigued by the idea of using randomness for more reliable proofs or exploring an intellectual curiosity like $\mathbb{Q}$-circuits? This post covers it all, including a peek into the future of polynomial commitments. Dive in and explore with us!

Mathias Hall-Andersen · November 11, 2024

WE-KZG: Encrypt to KZG.

Ever wondered if you could create a ciphertext that's only decrypted when a polynomial inside a commitment has a particular value? We’ve explored this notion using KZG commitments in our latest Asiacrypt 2024 paper. Dive into the elegant world of Witness Encryption and see how it can be applied in cool ways like Laconic Oblivious Transfer. This approach keeps things as efficient as regular KZG operations and might just spark some creative applications of your own! Curious to learn more? Let’s explore together!

Mathias Hall-Andersen · October 08, 2024

Groth16, Intuitively

Groth16 is still the gold standard for succinct SNARKs: 128-byte proofs, constant-size verification, and a decade of real-world deployment. But despite its ubiquity, almost nobody explains *why* it works the way it does. In this post, we build Groth16 from the ground up, starting from R1CS and QAPs, then layer in pairings, trusted setup parameters, and the separator tricks (α, β, γ, δ) that make the scheme sound. By the end, you should have an intuitive grasp of every term in the final verifier equation.

David Wong · May 01, 2026
More to explore

Bug Hunt: Zero-Knowledge, Full-Paranoia, and the AI That Stares Back

Over the past year, we've been diving into whether AI can effectively identify bugs in zero-knowledge circuits and applications, sparking questions about the future of auditing. This led us to develop SnarkSentinel, an AI-powered auditing tool. We'll share what worked, what didn’t, and how our journey with AI could impact auditing. From early challenges with Circom to innovative methods like retrieval-augmented generation and agent-led probing, we'll give you a peek into our findings, including both successes and setbacks with bug detection. Discover how AI might enhance or change the landscape of auditing and what this means for developers and security pros alike.

ZK/SEC · July 03, 2025

Breaking Down Bulletproofs: No Pairings, No Trusted Setup

Learn how Bulletproofs enables efficient zero-knowledge proofs without trusted setups by computing inner products in a verifiable way. This post breaks down the core folding technique that reduces large vectors to single elements through recursive compression, making proofs both compact and fast to verify. Used in Monero, Mina's Kimchi, and Zcash's Halo 2, Bulletproofs is a practical alternative to pairing-based schemes.

David Wong · October 23, 2025

Projects That Shaped Modern zkVMs, Part 1

Curious about how zero-knowledge virtual machines (zkVMs) make computing more secure without the hassle? We delve into the fascinating world of zkVMs, where you can program in high-level languages like Rust or C and let cryptography handle the complexity. We'll explore the evolution of these innovative systems through projects like Cairo and RISC Zero, while touching on the unique benefits and technical insights each brings. Plus, learn about groundbreaking techniques for optimizing zkVMs with projects like Jolt, and discover a range of other influential zkVM initiatives. Get ready for an enlightening journey into secure computation!

Marco Besier, David Wong · February 26, 2025