Taken from: Oleg Fomenko and Anton Levochko: Understanding Lasso - A Novel Lookup Argument Protocol
A sum-check protocol Lund et al., 1992 is an interactive proof protocol used in theoretical computer science to verify the correctness of a sum of values computed by a multivariate polynomial over a finite field, assuming oracle access to the polynomial. It allows a verifier to check a complex computation (like a huge sum over exponentially many values) using only a few rounds of interaction and logarithmic work.
Let be an -variate polynomial over a finite field . The goal of the sum-check protocol is for the verifier to check that the prover has correctly computed:
We assume that has oracle access to the polynomial . The protocol proceeds as follows:
-
Initialization: sends a claimed value to .
-
First Round: sends a univariate polynomial:
checks that:
-
Verifier Samples: picks a random and sends it to .
-
Intermediate Rounds (for ): sends:
checks:
Then samples and sends it to .
-
Final Round: sends:
checks:
-
Final Query and Check: picks and queries the oracle for . Then checks:
-
Accept: If all checks pass, accepts. Otherwise, it rejects.
Sum-Check Protocol (with Commitment)
Oracle Query Procedure
Used to open committed values via any multilinear polynomial commitment protocol commitments.
Query(C_f ∈ 𝔽, x ∈ {0,1}^ℓ)
// Executed by both 𝒫 and 𝒱
𝒫 computes (f(x), π) ← Open(C_f, x)
𝒱 executes Verify(C_f, x, f(x), π)
Return f(x)
Algorithm
Executed by both prover and verifier for polynomial , its commitment , and claimed sum :
SumCheckProtocol(H ∈ 𝔽, g: {0,1}^ℓ → 𝔽, C_g ∈ 𝔽)
Set g₁(X₁) = ∑_{(x₂,…,x_ℓ) ∈ {0,1}^{ℓ-1}} g(X₁,x₂,…,x_ℓ)
𝒫 shares g₁ with 𝒱
𝒱 evaluates g₁(0), g₁(1)
If H ≠ g₁(0) + g₁(1): 𝒱 rejects
𝒱 samples r₁ ∈ 𝔽, evaluates g₁(r₁)
For j = 2 to ℓ:
Set gⱼ(Xⱼ) = ∑_{(x_{j+1},…,x_ℓ)} g(r₁,…,r_{j−1},Xⱼ,x_{j+1},…,x_ℓ)
𝒫 shares gⱼ with 𝒱
𝒱 evaluates gⱼ(0), gⱼ(1)
If gⱼ₋₁(rⱼ₋₁) ≠ gⱼ(0) + gⱼ(1): 𝒱 rejects
𝒱 samples rⱼ ∈ 𝔽, evaluates gⱼ(rⱼ)
𝒱 calls Query(C_g, (r₁,…,r_ℓ)) to get g(r₁,…,r_ℓ)
If g_ℓ(r_ℓ) ≠ g(r₁,…,r_ℓ): 𝒱 rejects
Remark
Sometimes, is not committed directly, but rather defined as a known combination of other committed polynomials. In such cases, we override the query/commit methods by committing to and querying these polynomials individually, then combining them according to the predefined structure.