binius_core/protocols/
mod.rs

1// Copyright 2023-2025 Irreducible Inc.
2
3//! Implementations of various virtual polynomial protocols.
4//!
5//! A virtual polynomial protocol is subprotocol of a polynomial IOP. See [DP23] Definition 4.7 for a formal
6//! definition. Each protocol has a prover-side implementation and a verifier-side implementation. These protocols are
7//! all public-coin and made non-interactive by the Fiat-Shamir transformation. Thus, the prover-side implementations
8//! all simulate a verifier in order to accurately construct the transcript.
9//!
10//! The protocol implementations have separate functions for each round. We model the virtual polynomial protocols this
11//! way because in many settings we want the ability to batch together multiple protocols at different rounds. For
12//! example, if we had one sumcheck claim for an $\nu$-variate polynomial and one sumcheck claim for a
13//! $\nu - 1$-variate polynomial, we would want to run one sumcheck round on the first claim, then batch the remaining
14//! rounds with the second claim.
15//!
16//! Each verifier round proceeds as
17//! 1) Receive the round message (ie. read it from the non-interactive proof)
18//! 2) Send the round message to the challenger
19//! 3) Sample challenge from the challenger
20//! 4) Verify the round message and reduce old claims, message, and challenge to new claims
21//!
22//! Each prover round proceeds as
23//! 1) (Simulate verifier's last round) Send last round message to the challenger
24//! 2) (Simulate verifier's last round) Sample challenge from the challenger
25//! 3) (Simulate verifier's last round) Reduce old claims, message, and challenge to new claims
26//! 4) Compute the round message
27//!
28//! [DP23]: https://eprint.iacr.org/2023/1784
29
30pub mod evalcheck;
31pub mod fri;
32pub mod gkr_exp;
33pub mod gkr_gpa;
34pub mod greedy_evalcheck;
35pub mod sumcheck;
36
37#[allow(dead_code)]
38#[doc(hidden)]
39pub mod test_utils;