The Prover interpolates polynomial h such that seqK(h)=ωt,ωt+1,..,ωn−1,0,..,0. Here t=2 and n=5, therefore seqK(h)=ω2,ω3,ω4,0,..,0. This means that {h(k):k∈K={1,43,39,48,73,62,132,65,80}}={ω2,ω3,ω4,0,..,0}={42,125,135,0,0,0,0,0,0}Therefore h(1)=42, h(43)=125 , h(39)=135, h(48)=h(73)=h(62)=h(132)=h(65)=h(80)=0. So h(x)=42L1(x)+125L2(x)+135L3(x) where L1(x)=(−42)(−38)(−47)(−72)(−61)(−131)(−64)(−79)(x−43)(x−39)(x−48)(x−73)(x−62)(x−132)(x−65)(x−80)=161x8+161x7+161x6+161x5+161x4+161x3+161x2+161x+161,
Therefore h(x)=121x8+133x7+57x6+127x5+103x4+24x3+128x2+140x+114. The Prover sends π1=(h0,h1,...,h8) where hi is coefficients of polynomial h(x) to the Verifier.
3-5-1-2- Step 2
The Prover and the Verifier do GeometricSequenceTest on h (to verify correct construction of polynomial h). In GeometricSequenceTest want to prove that SeqK(h)=a1,a1r,..,a1rc1−1,a2,a2r,...,a2rc2−1,...,av,avr,...,avrcv−1.
3-5-1-2- Step 2-A- Geometric Sequence Test
Since h(γ0)=ω2, h(γ1)=ω3 ,h(γ2)=ω4 and h(γ3)=...=h(γ8)=0, then Geometric Sequence Test with a1=ω2, a2=0, r=ω, c1=n−t=3 and c2=m−(n−t)=9−3=6 run. Let pi=∑j<icj for i∈{1,2,..,v}. Here v is the number of ci that are non-zero. Therefore v=2 , p1=0 and p2=c1=3.
The Prover and the Verifier run ZeroOverK (see the next section) to check that for all k∈K, have (h(γk)−rh(k))∏i=1v(k−γpi+ci−1)=0. Here, ZeroOverK run to check that for all k∈K={1,γ,γ2,..,γ8}, have (h(γk)−ωh(k))(k−γ2)(k−ω8)=0.
Note: It is clear that if the construction of h is correct, it applies this equality, because if k=1, h(γk)=h(γ)=ωh(1) then h(γk)−ωh(k)=0. If k=γ, h(γk)=h(γ2)=ωh(γ), then h(γk)−ωh(k)=0. If k=γ2, then k−γ2=0. If k=ω3,...,ω7, then h(γk)=ωh(k)=0 and if k=γ8, then k−γ8=0.
3-5-1-2-Step 2-B- Zero over K
In ZeroOverK, want to prove that for all k∈K, F(k)=0 where F(x)=G(x,fj1(α1x),fj2(α2x),...,fjt(αtx)). Here F(x)=(h(γx)−ωh(x))(x−γ2)(x−γ8), therefore since t=2, F(x)=G(x,fj1(α1x),fj2(α2x))=(h(γx)−ωh(x))(x−γ2)(x−γ8), so h1=fj1=h, h2=fj2=h, α1=γ and α2=1.
2-2-1 The Prover selects polynomials ri∈F<2[x], i∈{1,2,..,t}. Then computes masks mi(x)=ri(αi−1x)ZK(αi−1x) and computes hi′(x)=hi(x)+mi(x) for i∈{1,2,..,t}.
Here, the Prover selects r1,r2. For example, let r1(x)=2+x and r2(x)=2x. Therefore m1(x)=r1(α1−1x)ZK(α1−1x) where α1=γ=48 and ZK(x)=∏x∈K(x−k)=(x−1)(x−43)(x−39)(x−48)(x−73)(x−62)(x−132)(x−65)(x−80)=x9+180. Therefore m1(x)=r1(80x)ZK(80x)=80x10+2x9+101x+179m2(x)=r2(α2−1x)ZK(α2−1x)=r2(x)ZK(x)=2x(x9+180)=2x10+179x. Then computes h1′(x)=h1(x)+m1(x)=h(x)+m1(x)=80x10+2x9+121x8+133x7+57x6+127x5+103x4+24x3+128x2+60x+112 and h2′(x)=h2(x)+m2(x)=h(x)+m2(x)=2x10+121x8+133x7+57x6+127x5+103x4+24x3+128x2+138x+114.
2-2-2- The Prover computes F′(x)=G(x,h1′(α1x),h2′(α2x),...,ht′(αtx)) and q1(x)=ZK(x)F′(x) then the Prover sends πPFR1+i=(mi1,...,mideg(mi)) where mijs are coefficients of polynomial mi(x), πPFR1+t+i=(ri1,...,rideg(ri)) where rijs are coefficients of polynomial ri(x) and πPFR2t+2=(q11,...,q1deg(q1)) where q1js are coefficients of polynomial q1(x)
Here F′(x)=G(x,h1′(43x),h2′(x))=(h1′(43x)−ωh2′(x))(x−γ2)(x−γ8)=64x12+169x11+168x10+51x9+117x3+12x2+13x+130
and then q1(x)=ZK(x)F′(x)=64x3+169x2+168x+51.
{
"CommitmentID": ,
"DeviceEncodedID": "",
"TimeStamp": <The Unix time of the program execution>,
"Input":4,
"Output":82,
"P1AHP":62,
"P2AHP":[166,121,161,97,149],
"P3AHP":[168,141,45,26,63,165],
"P4AHP":[124,81,137,101,71,178],
"P5AHP":[49,157,169,96,80,50],
"P6AHP":[32,16,153,20,1,164,45,92],
"P7AHP":[115,3,0,0,20,1,0,17,101,0,5],
"P8AHP":[100,90,92,134],
"P9AHP":[31,127,66,180,143,115],
"P10AHP":70,
"P11AHP":[105,173,30,40],
"P12AHP":[162,82,96,127],
"P13AHP":84,
"P14AHP":[134,111,161,123,110],
"P15AHP":[99,177,50,53,136,143,97,18,37,111,147,18,128,138,53,15,71,98,99,75,75,60,139,92,135,139,16,65,74,4]
"P16AHP":119
"P17AHP":149
"Protocol":"fidesinnova_v1"
}
The Prover sends πPFR2=(179,101,0,0,0,0,0,0,0,2,80), πPFR3=(0,179,0,0,0,0,0,0,0,0,2) , πPFR4=(2,1), πPFR5=(0,2) and πPFR6=(51,168,169,64) to the Verifier.
2-2-3- The Verifier derives hi′=hi+mi through additive homomorphism. Then samples β1, β2 and c of F∗−K and sends c to the Prover. Suppose β1=65, β2=21 and c=171. The Verifier sends c=171 to the Prover.
2-2-4- The Prover computes q2=r1+cr2+...+ct−1rt and the Verifier derives concrete oracle q2 through additive homomorphism. Here, the Prover computes q2(x)=r1(x)+cr2(x)=2+x+171(2x)=162x+2.
2-2-5- Let M(x)=m1(α1x)+cm2(α2x)+...+ct−1mt(αtx). The Verifier computes ZK(β1), ZK(β2), queries q1(β1)and q2(β2) and for i∈{1,2,..,t}, queries hi′(αiβ1) and mi(αiβ2)to compute F′(β1) and M(β2). The Verifier asserts two identities M(β2)−q2(β2)ZK(β2)=0 and F′(β1)−q1(β1)ZK(β1)=0.
Here, M(x)=m1(α1x)+cm2(α2x)=m1(γx)+171m2(x)=162x10+2x9+19x+179. The Verifier computes ZK(β1)=ZK(65)=659+180=0 and ZK(β2)=ZK(21)=219+180=30 and queries q1(β1)=86 and q2(β2)=146. Also queries values h1′(α1β1)=h1′(γ×65)=h1′(80)=0 , h2′(α2β1)=h2′(65)=0, m1(α1β2)=m1(γ×21)=m1(179)=147 and m2(α2β2)=m2(21)=174. Then checksM(β2)−q2(β2)ZK(β2)=0 , that means 36−30×146=36−36≡0(mod181), and F′(β1)−q1(β1)ZK(β1)=0, that means 0−86×0≡0(mod181).
3- The Prover and the Verifier run SubsetoverK between rowA and h to prove that rowA(K)⊂h(K) where rowA(K)={rowA(k):k∈K}and h(K)={h(k):k∈K}.
3-5-1-2- Step 3- Subset over K
4- The Prover and the Verifier run Discrete−logComparison between rowA and colA as following:
Let parameters (Δ∈F,n=∣H∣) such that ord(Δ)=2n and Δ2=ω.
Here, ω=59, Δ=56 and ord(Δ)=2n=10.
3-5-1-2- Step 4-Substep A- The Prover interpolates polynomial s so that agrees with colArowA on K. Then send them to the Verifier.
where L1(x), L2(x) and L3(x) are computed in step 1 and the rest of Li(x)s are
L4(x)=126x8+75x7+161x6+126x5+75x4+161x3+126x2+75x+161,
L5(x)=169x8+29x7+126x6+148x5+125x4+75x3+45x2+27x+161,
L6(x)=27x8+45x7+75x6+125x5+148x4+126x3+29x2+169x+161,
L7(x)=75x8+126x7+161x6+75x5+126x4+161x3+75x2+126x+161,
L8(x)=148x8+27x7+126x6+45x5+29x4+75x3+169x2+125x+161and
L9(x)=29x8+148x7+75x6+27x5+169x4+126x3+125x2+45x+161.
Therefore s(x)=41x8+101x7+34x6+38x5+x4+25x3+152x2+123x+87. The Prover sends s(x) to the Verifier.
3-5-1-2- Step 4-Substep B- For b∈{rowA,colA,s}, the Prover interpolates polynomial b′ so that for all k∈K, b′(k)=Δlogωb(k).
Here, if b=rowA, rowA′(k)=ΔlogωrowA(k)=56log59rowA(k)that means rowA′(1)=56log5942=562≡59(mod181), rowA′(43)=56log59125=563≡46(mod181),
rowA′(39)=56log59135=564≡42(mod181), rowA′(48)=56log5948≡49(mod181),
rowA′(73)=56log5936≡114(mod181), rowA′(62)=56log59151≡(mod181).
if b=colA, colA′(k)=ΔlogωcolA(k)=56log59colA(k)that means colA′(1)=56log5959=561≡56(mod181), colA′(48)=56log591=565≡180(mod181) and colA′(132)=56log59125=563≡46(mod181). Therefore colA′(x)=56L1(x)+180L2(x)+46L3(x)=96x2+47x+94.
if b=s, s′(k)=Δlogωs(k)=56log59s(k)that means s′(1)=56log5959=561≡56(mod181), s′(48)=56log59125=563≡46(mod181) and s′(132)=56log5959=561≡56(mod181). Therefore s′(x)=56L1(x)+46L2(x)+56L3(x)=21x2+103x+113.
Then the Prover sends rowA′, colA′ and s′ to the Verifier.
3-5-1-2- Step 4-Substep C- The Prover interpolates polynomial h so that seqK(h)=1,Δ,Δ2,..,Δn−1,0,0,..,0.
Here seqK(h)=1,56,59,46,42.
Since in this example ni=1, therefore input and output are not vector. So, we denote input by x and output by y instead of X and Y.
1- The Prover puts x=4 in ComAHPX1 . We consider z=(1,x,w1,w2,y) where w1=5x, w2=w1+11 and y=26w2. Therefore z=(1,x,W,y)=(1,4,20,31,82). The Prover calculates zA=Az=000100010000000000010000014203182=004131, zB=Bz=00511260000000010000000000014203182=0053126and zC=Cz=000000000000100000100000114203182=00203182
2- The Prover calculates the polynomial zA(x)using indexing zA by elements of H that mean zA(x) is the polynomial where zA(1)=0, zA(59)=0, zA(42)=4, zA(125)=1 and zA(135)=31.
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 wprovided the locations are in F−H.
Here, for simplicity, let b=2. The Prover calculates z^A(x) such that agree with zA(x) on H and also z^A(150)=5, z^A(80)=47.
Therefore, we have z^A(x)=4L3(x)+L4(x)+31L5(x)+5L6(x)+47L7(x) where L3(x)=133x6+155x5+117x4+27x3+48x2+73x+171, L4(x)=4x6+123x5+25x4+48x3+27x2+113x+22, L5(x)=75x6+115x5+27x4+25x3+117x2+154x+30, L6(x)=132x6+119x5+49x+62 and L7(x)=97x6+111x5+84x+70.
So z^A(x)=116x6+165x5+63x4+26x3+45x