relation R
constraints
f ( k ) ( s 1 , ... , s r ) = ∑ i , j = 1 r ′ a i , j ( k ) < s i , s j > + ∑ i = 1 r < φ i ( k ) , s i > − b ( k ) = 0
c t ( f ′ ( l ) ( s 1 , ... , s l )) = c t ( ∑ i , j = 1 L a i , j ( k ) < s i , s j > + ∑ i = 1 L < φ i ( l ) , s i > − b ( l ) ) mod q ′
norm check
s is witness
∑ i = 1 r ∣∣ s i ∣ ∣ 2 2 ≤ β 2
data structure
s i , s j ∈ R q n
φ i ( k ) ∈ R q n
a ij ( k ) ∈ R q
b ( k ) ∈ R q
φ i ′ ( l ) ∈ R q n
a ij ′ ( l ) ∈ R q
b ′ ( l ) ∈ R q
b 0 ′ ( l ) is the constant term of b ′ ( l )
< s i , s j > ∈ R q
< φ i , s i > ∈ R q
k ∈ [ K ]
l ∈ [ L ]
params
φ i ( k ) , a ij ( k ) , b ( k ) , φ i ′ ( l ) , a ij ′ ( l ) , b ′ ( l ) are public inputs of dot product constraint system(DPCS)
each iteration they are the same?
d = 64 (page 26)
q ≈ 2 32 (page 26)
β = 128/30 ( n + ( 3 + l ) k ) d /2 (page 26)
sample A, B, C, D in challenge space
they are common reference string(CRS)
challenge space
sample ring element from ring R = Z q [ X ] / ( X 64 + 1 )
sampled ring element should meet below requirements
23 zero coefficients
31 coefficient that are ±1
10 coefficients that are ±2
coefficients are total 64
data structure
A ∈ R q κ × n
B ik ∈ R q κ 1 × κ
1 ≤ i ≤ r
0 ≤ k ≤ t 1 − 1
t 1 see below decomposition section
C ijk ∈ R q κ 2 × 1
1 ≤ i ≤ j ≤ r
0 ≤ k ≤ t 2 − 1
t 2 see below decomposition section
κ 2 ??
D ijk ∈ R q κ 2 × 1
questions
use K and L to compute β ??
how to get the values of κ i ??
commit s i , i ∈ 1.. r
t i = A s i ∈ R q κ , this is Ajtai commitment
decompose and combine
problems
problem 1:
costly to send t i directly to verifier
solution: combine all inner commitments t i into a shorter outer commitment
problem 2:
ring elements t i , j , g i , j ∈ R q have arbitrary length of coefficients, not good for commitment
solution: decompose and concatenate
each coefficient of ring element need to be decomposed to same length with a proper basis, then concatenate them together
decompose
decompose t i , j
t i , j ∈ R q , i ∈ [ r ] , j ∈ [ κ ]
in total there are r × κ R q in t , means t ∈ R q r κ
choose length t 1 , basis b 1
decompose t i , j , output decomposed t i , j = t i , j ( 0 ) + ... + t i , j ( t 1 − 1 ) b 1 t 1 − 1 ∈ R q t 1
concatenate all decomposed t i , j , get decomposed t ∈ R q t 1 κ r
decompose g i , j
g i , j =< s i , s j > ∈ R q , i ∈ [ r ] , j ∈ [ i , r ]
since g i , j =< s i , s j > , means choose any 2 items from r items, this a classical combination problem, the result is r ( r + 1 ) /2 = ( r 2 + r ) /2
in total there are ( r 2 + r ) /2 R q in g , means g ∈ R q ( r 2 + r ) /2
choose length t 2 , basis b 2
decompose g k , which k ∈ [( r 2 + r ) /2 ] , output decomposed g k = g k ( 0 ) + ... + g g ( t 2 − 1 ) b 2 t 2 − 1 ∈ R q t 2
concatenate all decomposed g k , get decomposed g ∈ R q t 2 ( r 2 + r ) /2
decomposition params(page 16, 19)
τ : variance for the sum of the coefficients of a challenge polynomial
s = β / r n d : standard deviation for the Z q coefficients of the vectors s i
b ≈ b 1 ≈ b 2 = 12 r τ s , b is used in recurse section
t 1 = ⌊ l o g b l o g q ⌉
t 2 = ⌊ l o g b l o g ( 24 n d s 2 ) ⌉
combine
combine all inner commitments t i with random matrix B to get a shooter outer commitment u 1 = B t ∈ R q κ 1
also put g ij ∈ R q combination here, because g ij is dependent of all the challenges, so compute it in the very beginning of the protocol
finally get: u 1 = B t + C g ∈ R q κ 1
prover sends u 1 to verifier
data structure
s i ∈ R q n
A ∈ R q κ × n
t i = A s i ∈ R q κ , 1 ≤ i ≤ r
g i , j =< s i , s j >∈ R q , 1 ≤ i ≤ j ≤ r
after decompose
t i ∈ R q t 1 κ , i ∈ [ r ]
t ∈ R q t 1 κ r
g i , j ∈ R q t 2 , 1 ≤ i ≤ j ≤ r
g ∈ R q t 2 ( r 2 + r ) /2
u 1 = B t + C g ∈ R q κ 1
goal: norm check can be replaced by Johnson-Lindenstrauss projection.
why: because the JL proof is more compact than check the long vector s
need to reach a security level λ ( λ = 128 )
steps
verifier do a random sample get ∏ i ∈ { − 1 , 0 , 1 } 2 λ × n d then send to prover
s i ∈ R q n
n: length of s i
d: degree of each element(R q ) in s i
sample probability
prover calculate p j
p j = ∑ i = 1 r < π i ( j ) , s i > ∈ Z q , j = 1 , ... , 2 λ
prover sends p ∈ Z q 2 λ
verifier check ∣∣ p ∣ ∣ 2 ≤ λ β instead of ∑ i = 1 r ∣∣ s i ∣ ∣ 2 2 ≤ β 2
notes: greyhound only use {1, -1} to do the sample
new constraint added to: (1) make sure final projection is correct, (2) aggregate
∑ i = 1 r < τ ( π i ( j ) ) , τ ( s i ) > − p j = 0
=> c t ( ∑ i = 1 r < σ − 1 ( π i ( j ) ) , s i > ) − p j = 0
=> c t ( ∑ i = 1 r < σ − 1 ( π i ( j ) ) , s i > − p j ) = 0
π i ( j ) is the j-th row of ∏ i
σ − 1 ( f ( x )) = f ( x − 1 ) , just replace x with x − 1
this defines a LaBRADOR compatible constant-term constraint(F ′ ) that can be aggregated
data structure
n: Z q , length of s i
d: Z q , degree of s i
1 ≤ i ≤ r
j = 1 , ... , 2 λ
∏ i ∈ { − 1 , 0 , 1 } 2 λ × n d
π i ( j ) : ∈ { − 1 , 0 , 1 } n d
p j ∈ Z q
p ∈ Z q 2 λ
goal: aggregate all dot product constraints
steps
aggregate F ′
for security λ , F' is aggregated to ⌈ λ / l o g 2 ( q )⌉ constant-term constraints(why??)
F' includes constant-term constraints related to f ′ and p j
steps
verifier sends random samples: ψ ( k ) $ Z q ∣ L ∣ , ω ( k ) $ Z q 2 λ
aggregate:
k = 1 , ... , ⌈ λ / l o g 2 ( q )⌉ , j = 1 , ... , 2 λ
f ′′ ( k ) ( s 1 , ... , s r )
= ∑ l = 1 ∣ L ∣ ψ l ( k ) f ′ ( l ) ( s 1 , ... , s r )
+ ∑ j = 1 2 λ ω j ( k ) ( ∑ i = 1 r < σ − 1 ( π i ( j ) ) , s i > − p j )
= ∑ i , j = 1 r a i , j ′′ ( k ) < s i , s j > + ∑ i = 1 r < φ i ′′ ( k ) , s i > − b 0 ′′ ( k )
so prover gets:
a i , j ′′ ( k ) = ∑ l = 1 ∣ L ∣ ψ l ( k ) a i , j ′ ( l )
φ i ′′ ( k ) = ∑ l = 1 ∣ L ∣ ψ l ( k ) φ i ′ ( l ) + ∑ j = 1 2 λ ω j ( k ) σ − 1 ( π i ( j ) )
b ′′ ( k ) = ∑ i , j = 1 r a i , j ′′ ( k ) < s i , s j > + ∑ i = 1 r < φ i ′′ ( k ) , s i >
extends integers b 0 ′′ ( k ) to full polynomials such that f ′′ ( k ) ( s 1 , ... , s r ) = 0
prover sends b 0 ′′ ( k ) to verifier
verifier checks the constant term
b 0 ′′ ( k ) = ∑ l = 1 ∣ L ∣ ψ l ( k ) b 0 ( l ) + < ω ( k ) , p >
aggregate linear constraints f ( k ) ( k = 1 , ... , ∣ F ∣ ) and f ′′ ( k ) ( k = 1 , ... , ⌈ λ / l o g 2 ( q )⌉)
verifier sends random samples from challenge space: α $ R q ∣ F ∣ , β $ R q ⌈ λ / l o g 2 ( q )⌉ , K = ∣ F ∣
F =< α , f > + < β , f ′′ >
F ( s 1 , ... , s r )
= ∑ k = 1 K α k f ( k ) + ∑ k = 1 ⌈ λ / l o g 2 ( q )⌉ β k f ′′ ( k )
= ∑ i , j = 1 r a i , j < s i , s j > + ∑ i = 1 r < φ i , s i > − b
compute outer commitment u 2
φ i = ∑ k = 1 K α k φ i ( k ) + ∑ k = 1 ⌈ λ / l o g 2 ( q )⌉ β k φ i ′′ ( k )
h ij = 2 1 ( < φ i , s j > + < φ j , s i > )
decompose h i , j
h i , j ∈ R q , i ∈ [ r ] , j ∈ [ r ]
in total there are ( r 2 + r ) /2 R q in h , means h ∈ R q ( r 2 + r ) /2
choose length t 1 , basis b 1
decompose h i , j , output decomposed h i , j = h i , j ( 0 ) + ... + h i , j ( t 1 − 1 ) b 1 t 1 − 1 ∈ R q t 1
concatenate all decomposed h i , j , get decomposed h ∈ R q t 1 ( r 2 + r ) /2
u 2 = D h ∈ R q κ 2
data structure
1 ≤ i , j ≤ r
φ i ∈ R q n
h ij = 2 1 ( < φ i , s j > + < φ j , s i > ) ∈ R q
after decompose
h i , j ∈ R q t 1
h ∈ R q t 1 ( r 2 + r ) /2
u 2 = D h ∈ R q κ 2
questions
purpose: achieve small proof size
method: instead of checking F is satisfied by the witness, verifier will check 3 dot product constraints hold
steps
verifier sends challenge c i ∈ R q from challenge space
prover calculates z , h
provers sends z , t , g , h
data structure
κ + κ 1 + κ 2 + 3 dot product constraints
3 dot product constraints check
(1) < z , z >= ∑ i , j = 1 r g i , j c i c j
(2) ∑ i = 1 r < φ i , z > c i = ∑ i , j = 1 r h i , j c i c j
(3) ∑ i , j = 1 r a i , j g i , j + ∑ i = 1 r h i , i − b = 0
κ + κ 1 + κ 2 dot product constraints check
A z = ∑ i = 1 r c i t i ∈ R q κ
u 1 = B t + C g ∈ R q κ 1
u 2 = D h ∈ R q κ 2
norm check for z , t , g , h
∣∣ z ∣∣ ≤ γ
∣∣ t ∣∣ ≤ γ 1
∣∣ g ∣ ∣ 2 + ∣∣ h ∣ ∣ 2 ≤ γ 2
params
goal: prove the last message (z , t , g , h ) of each iteration with base protocol recursively until get shooter witness and proof, then output the last message (z , t , g , h )
steps:
convert last message to new witness vector s i ′ , i ∈ [ r ′ ]
decompose z
z = z ( 0 ) + b z ( 1 ) , z ( 0 ) , z ( 1 ) ∈ R q n
combine t , g , h
v = t ∣∣ g ∣∣ h ∈ R q m
m = r t 1 κ + ( t 1 + t 2 ) ( r 2 + r ) /2
compose s i ′
choose ν , μ how to choose??
s i ′ part 1:
z ( 0 ) = s 1 ′ ∣∣...∣∣ s ν ′
s i ′ ∈ R q ⌈ n / ν ⌉
s i ′ part 2:
z ( 1 ) = s ν + 1 ′ ∣∣...∣∣ s 2 ν ′
s i ′ ∈ R q ⌈ n / ν ⌉
s i ′ part 3:
v = s 2 ν + 1 ′ ∣∣...∣∣ s 2 ν + μ ′
s i ′ ∈ R q ⌈ m / μ ⌉
use base protocol to prove the new witness
get new relation g ( k ) ( s 1 , ... , s r ′ ) = ∑ i , j = 1 r ′ a i , j ( k ) < s i , s j > + ∑ i = 1 r ′ < φ i ( k ) , s i > − b ( k ) = 0
k = 1 , ... , κ + κ 1 + κ 2 + 3
a ij value refer page 15
keep recursing, until proof is small enough
need O(log log n) iterations
in practice , 6-7 iterations gives the best results
norm check
∣∣ z ( 0 ) ∣ ∣ 2 + ∣∣ z ( 1 ) ∣ ∣ 2 + ∣∣ v ∣ ∣ 2 ≤ b 2 2 γ 2 + γ 1 2 + γ 2 2
verifier checks(without recursion)
data structure
z ( 0 ) , z ( 1 ) ∈ R q n
z ( 0 ) ∣∣ z ( 1 ) ∈ R q 2 n
v ∈ R q m
params
2 n ≈ m
γ , γ 1 , γ 2 , β ′ (page 19)
ν n ≈ μ m
r ′ = 2 ν + μ = O ( r 1/3 ) is optimal(page 5)