for the only multilinear extension f∈Fq[X] in the i -th round, which takes a time of O(2ℓdTf) . d is for sending a function si(Xi) which has degree less than degf=d requires to set at most d evaluations of Xi on different points. Then the prover sends the d values to the verifier.
GKR protocol
The goal of GKR protocol is to prove for public C:Fn↦Fk and x , the prover knows the output C(x) . The GKR protocol acts like an IOP in SNARK systems.
Assume the arithmetic circuit C is of a layered structure, with depth d and Si gates on the i -th layer, si=logSi and S0=k , Sd=n . The circuit graph has the output gate on the ontly gate of the 0 -th layer. The functions addi,muli:{0,1}2si+si−1↦{0,1} are encodings of the wiring in between each layer, e.g. if the sum of the output of a -th gate and b -th gate on the i -th layer is the c -th gate on the (i−1) -th layer, then addi(a,b,c)=1 . Thus we define the output function Vi:{0,1}si↦F that takes b as binary string, and output the value. We have
In the last round of sumcheck protocol, the verifier gets f0(u1,v1) from the prover where u,v∈F are challenges from the verifier. To verify the f0(u,v) , the verifier needs to know V1(u1) and V1(v1) , so the prover sends V1(u1) and V1(v1) and tries to convince the verifier these are correct. The verifier first checks if f0(u1,v1)=(add0(g,x,y)(V1(x)+V1(y))+mul0(g,x,y)V1(x)V1(y)) . Then the verifier checks that the values are correctly calculated. If we run two sumchecks, the proof size and time will be exponential in d .
So we use interpolation to combine two claims; in the original GKR protocol, the interpolation is on the domain, i.e. let γ:F↦Fs0 be a line where γ(0)=u1,γ(1)=v1 and h(x)=V1(γ(x)) ; then prove h(r)=V1(γ(r)) for a random point on the line.
The Libra uses combination in the range (as [1] has proposed) and considers a random combination α1V1(u1)+β1V1(v1) and the next sumcheck is run to verify
The procedure goes on and on for d−1 rounds. In the final round, the verifier gets Vd(ud) and Vd(vd) . Only then does the verifier access the oracle OracleVd to see if the two values are correct.
O(2ℓ) provers for the sumcheck protocol
In the last section we directly used the sumcheck protocol on a function that is a sum of multiplication of multilinear functions. Here we use ℓ to denote the numbers of variables of the polynomial V ’s. If we use the original sumcheck protocol, the prover time will be O(22ℓ) for the add polynomial has 2ℓ variables.
If we consider that the result polynomial is sparse(in domain, i.e. on many points it evaluates to zero), the sumcheck prover will be much faster rather then O(22ℓ) . The paper mentioned a O(ℓ2ℓ) approach and a O(2ℓ) approach. We can verify that the function
is indeed a sparse function for there are at most 2si tuples (z,x,y) that makes addi and muli evaluate to 1 . So in this section we assume that f is non-zero only on at most 2ℓ points in {0,1}3ℓ .
Consider the protocol is run on a multilinear polynomial f . The former approach uses a list to store values; at the i -th round it stores f(r1,…,ri−1,bi,…,bn) for all bi,…,bn with r1,…,ri−1 are picked by the verifier. The idea utilizes the property that
This method uses time O(22ℓTf+22ℓ−1+22ℓ−2+⋯+21+1) which is still quadratic. Since f is sparse, the list takes down only O(2ℓ) of all the values; but the halving does not hold, thus the overall time is O(22ℓTf+ℓ2ℓ−1+2ℓ) . Here comes the core of this chapter.
Here comes the main algorithm. We want to sumcheck the function f(x,y)=f1(g,x,y)f2(x)f3(y) where there are at most O(2ℓ) non-zero positions and f2,f3:Fℓ↦F , f1:F3ℓ↦F , all multilinear. The idea is
and we run two sumcheck protocols shown in SumCheckProduct below.
These two algorithms are the same as the former described ones, with time O(2ℓ) . But to run them we need bookkeeping tables for f1(g,x,y)f2(x)f3(y) .
where
To sum all up,
Remarks.
This algorithm 3 requires f(u)g(u) in the last round of interaction. So after step 2 in algorithm 6, the verifier needs to varify the value of ∑yf1(g,u,y)f3(y)f2(u) .
The procedure Precompute(g) is for constructing a bookkeeping table for the function Ig(z):=∏i=1ℓ[(1−gi)(1−zi)+gizi] which evaluates to 1 if and only if g=z . So hg(x)=∑y,zIg(z)f1(z,x,y)f3(y) and by the sparse condition, the sum has O(2ℓ) terms.
Similarly, f1(g,u,y)=∑z,xIg(z)Iu(x)f1(z,x,y) and the sum has also O(2ℓ) terms. This is shown in algorithm 5.
All the algorithms run in O(2ℓ) time.
Zero-Knowledge
zkVPD is the analogy of commitment schemes with zk properties.
References
[1] Chiesa, A., Forbes, M.A., Spooner, N.: A Zero Knowledge Sumcheck and its Applications. CoRR abs/1704.02086 (2017), http://arxiv.org/abs/1704.02086