Expand description
Sumcheck protocol implementation for multilinear polynomial verification.
§The Sumcheck Protocol
The sumcheck protocol verifies a claimed sum of the form:
sum_{x in {0,1}^l} g(x) = tWithout it, the verifier would need to evaluate g at all 2^l hypercube points.
The protocol reduces this to a single evaluation at a random point, using l rounds.
In each round, the prover sends a low-degree univariate polynomial:
h_i(X) = sum_{x_{i+1}, ..., x_l in {0,1}} g(r_1, ..., r_{i-1}, X, x_{i+1}, ..., x_l)The verifier checks h_i(0) + h_i(1) == claimed_sum.
Then samples a random challenge r_i and updates the claim to h_i(r_i).
After l rounds, the verifier holds (r_1, ..., r_l) and queries g directly.
Re-exports§
pub use data::SumcheckData;pub use data::verify_final_sumcheck_rounds;pub use error::SumcheckError;pub use table::OpeningProtocol;pub use table::PointSchedule;pub use table::TableShape;pub use table::TableSpec;
Modules§
- commit
- Base-field commitment used by the sumcheck opening protocol.
- constraints
- data
- error
- lagrange
- Interpolation utilities for sumcheck using evaluation at infinity.
- layout
- Stacked sumcheck layout.
- product_
polynomial - SIMD-aware polynomial pair for quadratic sumcheck.
- strategy
- Sumcheck helpers: variable ordering, round coefficients, and the prover state.
- svo
- Small-Value Optimization (SVO) for the sumcheck protocol.
- table
- zk
- Honest-verifier zero-knowledge sumcheck for WHIR.
Structs§
- Claim
- A claimed evaluation together with layout-specific auxiliary data.