In this section, we will review the proof generation phase of the protocol. This phase contains two parts; AHP proof and PFR proof. We also provide an example to clarify the method.
3-1- PFR Proof
Proof(F,H,K,A,B,C): This function outputs πPFR=(πPFR1,πPFR2,πPFR3,πPFR4,πPFR5,πPFR6,πPFR7,πPFR8,πPFR9,πPFR10).
Note that in this polynomial oracle proof, the Prover wants to prove three following claims:
1.rowPFRA(x) , colPFRA(x) and valPFRA(x) is encoding of a t−SLT matrix.
2.rowPFRB(x) , colPFRB(x) and valPFRB(x) is encoding of a t−SLT matrix.
3.rowPFRC(x) , colPFRC(x) and valPFRC(x) is encoding of a t−Diag matrix.
The proof of these claims is done in the following steps:
1- To prove strictly lower triangularity of the matrices A and B, the Prover must prove that
logωrowPFRM(γi)>logωcolPFRM(γi) for i∈{0,1,..,m−1} and M∈{A,B}. This does by
Discrete−logcomparisonprotocol.
2- To prove the first t rows of A and B are all zeros, the Prover must prove that
rowPFRM(K)⊆{ωt,ωt+1,...,ωn−1}. This does by subsetoverKprotocol .
3- To prove the diagonality of the matrix C, the Prover must prove that seqK(rowPFRC)=seqK(colPFRC)where seqK(h)=(h(k):k∈K). This does by Geometricsequence and zerooverKprotocols.
4- To prove the first t rows of C are all zeros, the Prover must prove that there is a vector v∈(F∗)n−t so that seqK(valPFRC)=v∣∣0 . This does by Geometricsequence and zerooverKprotocols.
The steps 3 and 4 result that all the non-zero entries of the matrix C are in the positions (ωt,ωt),(ωt+1,ωt+1),...,(ωn,ωn).
3-2- AHP Proof
Proof(F,H,K,A,B,C,X,W,Y): This function outputs
ΠAHP=(ComAHPX,πAHP)
where
ComAHPX=(ComAHPX1,ComAHPX2,ComAHPX3,ComAHPX4,ComAHPX5,ComAHPX6,ComAHPX7,ComAHPX8,ComAHPX9,ComAHPX10,ComAHPX11,ComAHPX12,ComAHPX13)
and πAHP=(πAHP1,πAHP2,πAHP3,πAHP4,πAHP5,πAHP6,πAHP7,πAHP8,πAHP9,πAHP10,πAHP11,πAHP12,πAHP13,πAHP14,πAHP15,πAHP16,πAHP17)
as following:
1- The Prover calculates zA=Az, zB=Bz, zC=Cz where z=(1,X,W,Y), for input X that puts in ComAHPX1.
2- The Prover calculates polynomial zA(x)using indexing zA by elements of H. Then, calculates polynomial z^A(x) using the polynomial zA(x)such that z^A(x)∈F<∣H∣+b[x] that agree with zA(x) on H. Note that values of up to b locations in this polynomial reveals no information about the witness w provided the locations are in F−H. Similarly, calculates polynomial z^B(x) so that z^B(x)∈F<∣H∣+b[x] that agree with zB(x) on H. Also, calculates polynomial z^C(x) so that z^C(x)∈F<∣H∣+b[x] that agree with zC(x) on H.
Then, calculates polynomial W^(x)∈F<ng+b[x] that agree with Wˉ(x) on H[>∣X∣+1] where
Wˉ:H[>∣X∣+1]→F
Wˉ(h)=vH[≤∣X∣+1](h)W(h)−X^(h)
Note that H[>∣X∣+1] includes the members of H except for the first ∣X∣+1 members. Also, vH[≤∣X∣+1](h) is vanishing polynomial on H[≤∣X∣+1] and X^(h) is the polynomial obtained using indexing x by elements of H[≤∣X∣+1].
3- The Prover finds polynomial h0(x) so that z^A(x)z^B(x)−z^C(x)=h0(x)vH(x).
4- The Prover samples a fully random s(x)∈F<2∣H∣+b−1[x] and computes sum σ1=∑k∈Hs(k)
5- The Prover sends ComAHPX2=∑i=0degW^(x)w^ick(i), ComAHPX3=∑i=0degz^A(x)z^Aick(i), ComAHPX4=∑i=0degz^B(x)z^Bick(i), ComAHPX5=∑i=0degz^C(x)z^Cick(i), ComAHPX6=∑i=0degh0(x)h0ick(i), and ComAHPX7=∑i=0degs(x)sick(i), where w^i is coefficient of xi in polynomial W^(x), z^Ai is coefficient of xi in polynomial z^A(x), z^Bi is coefficient of xi in polynomial z^B(x), z^Ci is coefficient of xi in polynomial z^C(x), h0i is coefficient of xi in polynomial h0(x), si is coefficient of xi in polynomial s(x).
6- The Verifier chooses random numbers α, ηA, ηB, ηC and sends them to the Prover. ( Note that the Prover can choose α=hash(s(0)+s(1)+1), ηA=hash(s(2)+s(3)+2), ηB=hash(s(4)+s(5)+3), ηC=hash(s(6)+s(7)+4).
7- The Prover finds polynomials g1(x) and h1(x) so that
where z^(x)=W^(x)vH[≤∣X∣+1](x)+X^(x) that agree with z on H and r(x,y)=uH(x,y)=x−yvH(x)−vH(y) , vH(x)=∏h∈H(x−h)=x∣H∣−1. Therefore
r(x,y)=x−yx∣H∣−y∣H∣. (Note that r(x,y)satisfies two useful algebraic properties. First, the univariate polynomials (r(x,a))a∈H are linearly independent and r(x,y) is their (unique) low-degree extension. Second, r(x,y) vanishes on the square H×H except for on the diagonal, where it takes on the (non-zero) values (r(a,a))a∈H.) . Also rM(x,y)=∑k∈Hr(x,k)M^(k,y) for M∈{A,B,C} where A^(x,y) is a bivariate polynomial that passes from 25 points where theses points are obtained using indexing rows and columns of A by elements of H. This polynomial can obtain as following:
A^(x,y)=∑k∈KuH(x,rowAHPA^(k))uH(y,colAHPA^(k))valAHPA^(k)
, B^(x,y) similarly as following:
B^(x,y)=∑k∈KuH(x,rowAHPB^(k))uH(y,colAHPB^(k))valAHPB^(k)
and C^(x,y) similarly as following:
C^(x,y)=∑k∈KuH(x,rowAHPC^(k))uH(y,colAHPC^(k))valAHPC^(k)
The Prover sends ComAHPX8=∑i=0degg1(x)g1ick(i) and ComAHPX9=∑i=0degh1(x)h1ick(i) to the Verifier where g1i is coefficient of xi of polynomial g1(x) and h1i is coefficient of xi of polynomial h1(x).
8- The Verifier selects β1∈F−H and sends it to the Prover. (The Prover can selects β1=hash(s(8))∈F−H ).
9- The Prover calculates σ2=∑k∈Hr(α,k)∑MηMM^(k,β1). Then, the Prover finds g2(x) and h2(x) so that r(α,x)∑MηMM^(x,β1)=h2(x)vH(x)+xg2(x)+∣H∣σ2
The Prover sends ComAHPX10=∑i=0degg2(x)g2ick(i) and ComAHPX11=∑i=0degh2(x)h2ick(i) where g2i is coefficient of xi of polynomial g2(x) and h2i is coefficient of xi of polynomial h2(x).
10- The Verifier selects β2∈F−H and sends it to the Prover. ( The Prover can select β2=hash(s(9))∈F−H ).
11- The Prover calculates σ3=∑k∈K(∑MηM(β2−rowAHPM^(k))(β1−colAHPM^(k))vH(β2)vH(β1)valAHPM^(k)). Then, the Prover finds polynomials g3(x) and h3(x) so that h3(x)vK(x)=a(x)−b(x)(xg3(x)+∣K∣σ3) where a(x)=∑M∈{A,B,C}ηMvH(β2)vH(β1)valAHPM^(x)∏N∈{A,B,C}−{M}(β2−rowAHPN^(x))(β1−colAHPN^(x))and b(x)=∏M∈{A,B,C}(β2−rowAHPM^(x))(β1−colAHPM^(x)).
The Prover sends ComAHPX12=∑i=0degg3(x)g3ick(i) and ComAHPX13=∑i=0degh3(x)h3ick(i) where g3i is coefficient of xi of polynomial g3(x) and h3i is coefficient of xi of polynomial h3(x).
and
12- The Prover sends πAHP1=σ1, πAHP2=(w^0,w^1,w^3,...,w^∣W∣+b−1), πAHP3=(z^A0,z^A1,...,z^A∣H∣+b−1), πAHP4=(z^B0,z^B1,...,z^B∣H∣+b−1), πAHP5=(z^C0,z^C1,...,z^C∣H∣+b−1), πAHP6=(h00,h01,...,h0∣H∣+2b−2) and πAHP7=(s0,s1,...,s2∣H∣+b−2)
13- The Prover sends πAHP8=(g10,...,g1∣H∣−2) and πAHP9=(h10,...,h1∣H∣+b−2) .
14-The Prover sends πAHP10=σ2, πAHP11=(g20,...,g2∣H∣−2) and πAHP12=(h20,...,h2∣H∣−2).
15- The Prover sends πAHP13=σ3, πAHP14=(g30,...,g3∣K∣−2) and πAHP15=(h30,...,h36∣K∣−6) .
16- The Prover chooses random values ηrowAHPA , ηcolAHPA , ηvalAHPA , ηrowAHPB , ηcolAHPB , ηvalAHPB ,
ηrowAHPC , ηcolAHPC , ηvalAHPC , ηw^, ηz^A, ηz^B, ηz^C, ηz^, ηh0, ηs, ηg1, ηh1, ηg2, ηh2, ηg3 and ηh3 of F The Verifier can choose as following:
ηrowAHPA=hash(s(10)) , ηcolAHPA=hash(s(11)) , ηvalAHPA=hash(s(12)) , ηrowAHPB=hash(s(13)) , ηcolAHPB=hash(s(14)) , ηvalAHPB=hash(s(15)) ,ηrowAHPC=hash(s(16)) , ηcolAHPC=hash(s(17)) , ηvalAHPC=hash(s(18)) ,
ηw^=hash(s(19)), ηz^A=hash(s(20)), ηz^B=hash(s(20)), ηz^C=hash(s(21)), ηh0=hash(s(22)), ηs=hash(s(23)), ηg1=hash(s(24)), ηh1=hash(s(25)), ηg2=hash(s(26)), ηh2=hash(s(27)), ηg3=hash(s(28)), ηh3=hash(s(29)).
18- The Prover calculates p(x) in x=x′ (value of x′ is received from the Verifier. Also, can select as x′=hash(s(22))), then puts it in πAHP16 . Therefore πAHP16=p(x′)=y′.
19- The Prover computes πAHP17=PC.Eval(ck,p(x),dp,rp,x′) where dp is degree bound of p(x) and rp is a random value.
For example, if the polynomial commitment scheme KZG is used, then the Prover calculates polynomial q(x)=x−x′p(x)−y′ and πAHP17=gq(τ) by using ck as following:
πAHP17=∑i=0degq(x)qick(i), where qi is the coefficient of xi of q(x).
3-3- Proof Structure
Proof set is
ΠAHP=(ComAHPX,πAHP)
where
ComAHPX=(ComAHPX1,ComAHPX2,ComAHPX3,ComAHPX4,ComAHPX5,ComAHPX6,ComAHPX7,ComAHPX8,ComAHPX9,ComAHPX10,ComAHPX11,ComAHPX12,ComAHPX13)
where w^i is coefficient of xi in polynomial W^(x), z^Ai is coefficient of xi in polynomial z^A(x), z^Bi is coefficient of xi in polynomial z^B(x), z^Ci is coefficient of xi in polynomial z^C(x), h0i is coefficient of xi in polynomial h0(x), si is coefficient of xi in polynomial s(x), g1i is coefficient of xi of polynomial g1(x) and h1i is coefficient of xi of polynomial h1(x), g2i is coefficient of xi of polynomial g2(x) and h2i is coefficient of xi of polynomial h2(x), g3i is coefficient of xi of polynomial g3(x) and h3i is coefficient of xi of polynomial h3(x).
Size of AHP proof: ∣ΠAHP∣=10∣H∣+7∣K∣+∣W∣+8b+6.
CommitmentID is explained on the Commitment Phase page.
DeviceEncodedID = Base64<MAC>
Input and Output are the device input and output, respectively.