Suppose we are given a v-variate polynomial g defined over a finite field F. The purpose of the sum-check protocol is for the prover to provide the verifier with the following sum:
H=b1∈{0,1}∑b2∈{0,1}∑...bv∈{0,1}∑g(b1,...,bv). Note: In full generality, the sum-check protocol can compute the sum ∑b∈Bvg(b) for any B⊆F.
Protocol Description
At the start of the protocol, the prover sends a value C1 claimed to equal the value H
In the first round, P sends the univariate polynomial g1(X1) claimed to equal
g1(X1)=(x2,...,xv)∈{0,1}v−1∑g(X1,x2,...,xv). V checks that C1=g1(0)+g1(1) and that g1 is a univariate polynomial of degree at most deg1(g), rejecting if not. Here degj(g) denotes the degree of g(X1,...,Xv) in variable Xj.
V chooses a random element r1∈F, and sends r1 to P
In the jth round, for 1<j<v, P sends a univariate polynomial gj(Xj) claimed to equal
gj(Xj)=(xj+1,...,xv)∈{0,1}v−j∑g(r1,...,rj−1,Xj,xj+1,...,xv) V checks that gj is a univariate polynomial of degree at most degj(g) and that gj−1(rj−1)=gj(0)+gj(1), rejecting if not.
V chooses a random element rj∈F, and sends rj to P.
In Round v, P sends to V a univariate polynomial gv(Xv) claimed to equal
gv(Xv)=g(r1,...,rv−1,Xv). V checks that gv is a univariate polynomial of degree at most degv(g), rejecting if not, and also checks that gv−1(rv−1)=gv(0)+gv(1).
V chooses a random element rv∈F and somehow (by their own efforts or with some polynomial commitment scheme) evaluates g(r1,...,rv). V checks that gv(rv)=g(r1,...,rv), rejecting if not.
If V has not yet rejected, V halts and accepts.
Properties
Costs
Costs of the sum-check protocol when applied to a v-variate polynomial g over F. Here, degi(g) denotes the degree of variable i in g, and T denotes the cost of an oracle query to g.
Communication
Rounds
V time
P time
O(∑i=1vdegi(g)) field elements
O(v+∑i=1vdegi(g))+T
O(2v⋅T)if degi(g)=O(1)for all i