前序博客有:
2.5 Arguments
本节引入“arguments”来扩展vanilla STARK。
此处的“argument”,是指多项式之间的关系无法直接通过identity来表示。从而将这些arguments称为non-identity constraint。本文重点关注3类arguments:
- Permutation argument
≐
\doteq
≐:PIL关键字为
is
。 - Connection argument
∝
\propto
∝:PIL关键字为
connect
。 - Lookup argument
∈
\in
∈:PIL关键字为
in
。
实例化这些arguments的协议,均基于相同的思想:
- 基于argument中2个(或多个)向量,计算相应的grand product多项式。
- grand product多项式为第一个向量函数和第二个向量函数商的累积。
- 然后提出一组identities,向该协议的Verifier保证,不仅Prover所计算的grand product是正确的,还保证该协议的特定意图也是满足的。
- 为确保该协议的soundness,在该计算中需使用Verifier均匀采样的随机值。
注意 G = < g > G=<g> G=<g>为order为 n n n的 F ∗ \mathbb{F}^* F∗ subgroup。
2.5.1 Permutation Argument(multiset equality argument)
已知2个向量 f = ( f 1 , ⋯ , f n ) f=(f_1,\cdots,f_n) f=(f1,⋯,fn) 和 t = ( t 1 , ⋯ , t n ) t=(t_1,\cdots,t_n) t=(t1,⋯,tn) in F n \mathbb{F}^n Fn,permutation argument表示为 f ≐ t f\doteq t f≐t,用于检查 f f f 和 t t t 互为 permutation。
因此,permutation argument可实例化为计算如下grand product 多项式
Z
∈
K
<
n
[
X
]
Z\in\mathbb{K}_{<n}[X]
Z∈K<n[X]:
Z
(
g
i
)
=
{
1
if
i
=
1
∏
j
=
1
i
−
1
(
f
j
+
γ
)
(
t
j
+
γ
)
if
i
=
2
,
⋯
,
n
Z(g^i)= \left\{\begin{matrix} 1 & \text{if } i=1 \\ \prod_{j=1}^{i-1}\frac{(f_j+\gamma)}{(t_j+\gamma)}& \text{if } i=2,\cdots,n \end{matrix}\right.
Z(gi)={1∏j=1i−1(tj+γ)(fj+γ)if i=1if i=2,⋯,n
其中
γ
∈
K
\gamma \in \mathbb{K}
γ∈K 为Verifier发来的随机挑战值。
然后Verifier必须检查如下 identities for
x
∈
G
x\in G
x∈G:
L
1
(
x
)
⋅
(
Z
(
x
)
−
1
)
=
0
,
(14)
L_1(x)\cdot (Z(x)-1)=0,\tag{14}
L1(x)⋅(Z(x)−1)=0,(14)
Z
(
x
⋅
g
)
⋅
(
t
(
x
)
+
γ
)
=
Z
(
x
)
⋅
(
f
(
x
)
+
γ
)
,
(15)
Z(x\cdot g)\cdot (t(x)+\gamma) = Z(x)\cdot (f(x)+\gamma),\tag{15}
Z(x⋅g)⋅(t(x)+γ)=Z(x)⋅(f(x)+γ),(15)
其中:
- f , t ∈ F < n [ X ] f,t\in\mathbb{F}_{<n}[X] f,t∈F<n[X]:为基于 G G G,分别对 { f i } i ∈ [ n ] \{f_i\}_{i\in [n]} {fi}i∈[n] 和 { t i } i ∈ [ n ] \{t_i\}_{i\in [n]} {ti}i∈[n]插值而来的多项式。
- L 1 ( X ) : = g ( X n − 1 ) n ( X − g ) L_1(X):=\frac{g(X^n-1)}{n(X-g)} L1(X):=n(X−g)g(Xn−1):为Lagrange多项式,有 L 1 ( g ) = 1 L_1(g)=1 L1(g)=1 且 L 1 ( g i ) = 0 L_1(g^i)=0 L1(gi)=0 for 1 < i ≤ n 1<i\leq n 1<i≤n。
- 注意 G = < g > G=<g> G=<g>为order为 n n n的 F ∗ \mathbb{F}^* F∗ subgroup,因此有 g n = 1 g^n=1 gn=1。
permutation argument的可靠性:
- 基于某随机值
γ
∈
K
\gamma\in\mathbb{K}
γ∈K,若如下等式成立的概率大于
ε
P
e
r
m
(
n
)
:
=
n
/
∣
K
∣
\varepsilon_{Perm}(n):=n/|\mathbb{K}|
εPerm(n):=n/∣K∣:
∏ i = 1 n ( f i + γ ) = ∏ i = 1 n ( t i + γ ) , \prod_{i=1}^{n}(f_i+\gamma)=\prod_{i=1}^{n}(t_i+\gamma), ∏i=1n(fi+γ)=∏i=1n(ti+γ),
则 f ≐ t f\doteq t f≐t。
2.5.2 Connection Argument
本协议中的connection argument改编自PLONK中的定义和结论。
已知向量
f
1
,
⋯
,
f
k
∈
F
n
f_1,\cdots, f_k\in\mathbb{F}^n
f1,⋯,fk∈Fn 和 a partition
T
=
{
T
1
,
⋯
,
T
s
}
\mathcal{T}=\{T_1,\cdots,T_s\}
T={T1,⋯,Ts} of the set
[
k
n
]
[kn]
[kn],connection argument表示为
(
f
1
,
⋯
,
f
k
)
∝
{
T
1
,
⋯
,
T
s
}
(f_1,\cdots,f_k)\propto \{T_1,\cdots,T_s\}
(f1,⋯,fk)∝{T1,⋯,Ts},用于检查 partition
T
\mathcal{T}
T divides the field elements
{
f
i
,
j
}
i
∈
[
k
]
,
j
∈
[
n
]
\{f_{i,j}\}_{i\in[k],j\in[n]}
{fi,j}i∈[k],j∈[n] into sets with the same value,更具体来说,对于每个
i
∈
[
k
]
,
j
∈
[
n
]
i\in [k],j\in[n]
i∈[k],j∈[n],定义sequence
f
(
1
)
,
⋯
,
f
(
k
n
)
∈
F
f_{(1)},\cdots,f_{(kn)}\in\mathbb{F}
f(1),⋯,f(kn)∈F 为:
f
(
(
i
−
1
)
n
+
j
)
:
=
f
i
,
j
f_{((i-1)n+j)}:=f_{i,j}
f((i−1)n+j):=fi,j
则有
f
(
l
1
)
=
f
(
l
2
)
f_{(l_1)}=f_{(l_2)}
f(l1)=f(l2),当且仅当
l
1
,
l
2
l_1,l_2
l1,l2 belong to the same block
T
\mathcal{T}
T。
为在grand product多项式中表示 partition
T
\mathcal{T}
T,定义permutation
σ
:
[
k
n
]
→
[
k
n
]
\sigma:[kn]\rightarrow [kn]
σ:[kn]→[kn] 遵循:
- σ \sigma σ 使得对于 T \mathcal{T} T中的每个block T i T_i Ti, σ ( T ) \sigma(\mathcal{T}) σ(T)中包含了 a cycle going over all elements of T i T_i Ti。
因此connection argument可实例化为计算如下grand product 多项式
Z
∈
K
<
n
[
X
]
Z\in\mathbb{K}_{<n}[X]
Z∈K<n[X]:
Z
(
g
i
)
=
{
1
if
i
=
1
∏
l
=
1
k
∏
j
=
1
n
(
f
l
,
j
+
γ
⋅
(
(
l
−
1
)
⋅
n
+
j
)
+
δ
)
(
f
l
,
j
+
γ
⋅
σ
(
(
l
−
1
)
⋅
n
+
j
)
+
δ
)
if
i
=
2
,
⋯
,
n
Z(g^i)= \left\{\begin{matrix} 1 & \text{if } i=1 \\ \prod_{l=1}^{k}\prod_{j=1}^{n}\frac{(f_{l,j}+\gamma\cdot ((l-1)\cdot n+j)+\delta)}{(f_{l,j}+\gamma\cdot \sigma((l-1)\cdot n+j)+\delta)}& \text{if } i=2,\cdots,n \end{matrix}\right.
Z(gi)={1∏l=1k∏j=1n(fl,j+γ⋅σ((l−1)⋅n+j)+δ)(fl,j+γ⋅((l−1)⋅n+j)+δ)if i=1if i=2,⋯,n
其中
γ
,
δ
∈
K
\gamma,\delta\in\mathbb{K}
γ,δ∈K为由Verifier发送的随机挑战。
然后Verifier必须检查如下identities for
x
∈
G
x\in G
x∈G:
L
1
(
x
)
⋅
(
Z
(
x
)
−
1
)
=
0
,
Z
(
x
⋅
g
)
=
Z
(
x
)
⋅
(
f
1
(
x
)
+
γ
⋅
S
I
D
1
(
x
)
+
δ
)
(
f
1
(
x
)
+
γ
⋅
S
σ
1
(
x
)
+
δ
)
⋅
⋯
(
f
k
(
x
)
+
γ
⋅
S
I
D
k
(
x
)
+
δ
)
(
f
k
(
x
)
+
γ
⋅
S
σ
k
(
x
)
+
δ
)
,
(16)
L_1(x)\cdot (Z(x)-1)=0,\\ Z(x\cdot g)=Z(x)\cdot \frac{(f_1(x)+\gamma\cdot S_{ID_1}(x)+\delta)}{(f_1(x)+\gamma\cdot S_{\sigma_1}(x)+\delta)}\cdot \cdots \frac{(f_k(x)+\gamma\cdot S_{ID_k}(x)+\delta)}{(f_k(x)+\gamma\cdot S_{\sigma_k}(x)+\delta)},\tag{16}
L1(x)⋅(Z(x)−1)=0,Z(x⋅g)=Z(x)⋅(f1(x)+γ⋅Sσ1(x)+δ)(f1(x)+γ⋅SID1(x)+δ)⋅⋯(fk(x)+γ⋅Sσk(x)+δ)(fk(x)+γ⋅SIDk(x)+δ),(16)
其中:
- S I D i = ( i − 1 ) ⋅ n + j S_{ID_i}=(i-1)\cdot n+j SIDi=(i−1)⋅n+j 为将 G G G-elements 映射到 [ k n ] [kn] [kn]中索引值的多项式。
- S σ i = σ ( ( i − 1 ) ⋅ n + j ) S_{\sigma_i}=\sigma((i-1)\cdot n+j) Sσi=σ((i−1)⋅n+j) 由 σ \sigma σ定义的多项式。
- 由于permutation σ \sigma σ 完美关联了其所指向的 partition T \mathcal{T} T,自此,可将多项式 f 1 , ⋯ , f k ∈ F [ X ] f_1,\cdots,f_k\in \mathbb{F}[X] f1,⋯,fk∈F[X] 和 partition T \mathcal{T} T之间的connect argument表示为 ( f 1 , ⋯ , f k ) ∝ { S σ 1 , ⋯ , S σ k } (f_1,\cdots,f_k)\propto \{S_{\sigma_1},\cdots,S_{\sigma_k}\} (f1,⋯,fk)∝{Sσ1,⋯,Sσk}。
connection argument的可靠性:
- 基于随机的
γ
,
δ
∈
K
\gamma, \delta\in\mathbb{K}
γ,δ∈K,若如下等式成立的概率大于
ε
C
o
n
(
n
)
:
=
k
n
/
∣
K
∣
\varepsilon_{Con}(n):=kn/|\mathbb{K}|
εCon(n):=kn/∣K∣:
∏ l = 1 k ∏ j = 1 n ( f l , j + γ ⋅ ( ( l − 1 ) ⋅ n + j ) + δ ) = ∏ l = 1 k ∏ j = 1 n ( f l , j + γ ⋅ σ ( ( l − 1 ) ⋅ n + j ) + δ ) , \prod_{l=1}^{k}\prod_{j=1}^{n}(f_{l,j}+\gamma\cdot ((l-1)\cdot n+j)+\delta)=\prod_{l=1}^{k}\prod_{j=1}^{n}(f_{l,j}+\gamma\cdot \sigma((l-1)\cdot n+j)+\delta), l=1∏kj=1∏n(fl,j+γ⋅((l−1)⋅n+j)+δ)=l=1∏kj=1∏n(fl,j+γ⋅σ((l−1)⋅n+j)+δ),
则 ( f 1 , ⋯ , f k ) ∝ { T 1 , ⋯ , T s } (f_1,\cdots,f_k)\propto \{T_1,\cdots,T_s\} (f1,⋯,fk)∝{T1,⋯,Ts}。
2.5.3 Lookup Argument(Inclusion argument)
本文的inclusion argument改编自著名的Plookup协议,并借鉴了PlonKup中的"alternating method"。
已知2个向量
f
=
(
f
1
,
⋯
,
f
n
)
f=(f_1,\cdots,f_n)
f=(f1,⋯,fn) 和
t
=
(
t
1
,
⋯
,
t
n
)
t=(t_1,\cdots,t_n)
t=(t1,⋯,tn) in
F
n
\mathbb{F}^n
Fn,lookup argument表示为
f
∈
t
f\in t
f∈t,用于检查由
{
f
i
}
i
∈
[
n
]
\{f_i\}_{i\in[n]}
{fi}i∈[n]值组成的集合
A
A
A 被包含在由
{
t
}
i
∈
[
n
]
\{t\}_{i\in[n]}
{t}i∈[n]值组成的集合
B
B
B中。注意
∣
A
∣
,
∣
B
∣
≤
n
|A|,|B|\leq n
∣A∣,∣B∣≤n。
在该协议中,Prover需构建辅助向量
s
=
(
s
1
,
⋯
,
s
2
n
)
s=(s_1,\cdots,s_{2n})
s=(s1,⋯,s2n),其包含
f
f
f 和
t
t
t中的每个元素,并按
t
t
t中的元素顺序排序。该协议背后的核心思想为:
-
若 f ∈ t f\in t f∈t,则 f f f会向 s s s贡献重复的元素。为此,可定义如下 Δ s \Delta s Δs向量:
Δ s = ( s 1 + γ s 2 , s 2 + γ s 3 , ⋯ , s 2 n + γ s 1 ) . \Delta s=(s_1+\gamma s_2, s_2+\gamma s_3,\cdots,s_{2n}+\gamma s_1). Δs=(s1+γs2,s2+γs3,⋯,s2n+γs1).
则该协议本质上是检查 Δ s \Delta s Δs与 f , t f,t f,t 和 s s s的元素一致。为此,将向量 s s s切分为2个向量 h 1 , h 2 ∈ F n h_1,h_2\in\mathbb{F}^n h1,h2∈Fn。在plookup协议中, h 1 h_1 h1 和 h 2 h_2 h2分别包含 s s s的前半部分和后半部分;而PlonKup协议中用 h 1 h_1 h1来存储奇数索引的元素,用 h 2 h_2 h2来存储偶数索引的元素,即:
h 1 = ( s 1 , s 3 , s 5 , ⋯ , s 2 n − 1 ) , h 2 = ( s 2 , s 4 , s 6 , ⋯ , s 2 n ) , (17) h_1=(s_1,s_3,s_5,\cdots,s_{2n-1}),\\ h_2=(s_2,s_4,s_6,\cdots,s_{2n}),\tag{17} h1=(s1,s3,s5,⋯,s2n−1),h2=(s2,s4,s6,⋯,s2n),(17)因此该lookup argument可实例化为计算如下grand product 多项式 Z ∈ K < n [ X ] Z\in\mathbb{K}_{<n}[X] Z∈K<n[X]:
Z ( g i ) = { 1 if i = 1 ( 1 + γ ) i − 1 ∏ j = 1 i − 1 ( δ + f j ) ( δ ( 1 + γ ) + t j + γ t j + 1 ) ( δ ( 1 + γ ) + s 2 j − 1 + γ s 2 j ) ( δ ( 1 + γ ) + s 2 j + γ s 2 j + 1 ) if i = 2 , ⋯ , n Z(g^i)= \left\{\begin{matrix} 1 & \text{if } i=1 \\ (1+\gamma)^{i-1}\prod_{j=1}^{i-1}\frac{(\delta+f_j)(\delta(1+\gamma)+t_j+\gamma t_{j+1})}{(\delta(1+\gamma)+s_{2j-1}+\gamma s_{2j})(\delta(1+\gamma)+s_{2j}+\gamma s_{2j+1})} & \text{if } i=2,\cdots,n \end{matrix}\right. Z(gi)={1(1+γ)i−1∏j=1i−1(δ(1+γ)+s2j−1+γs2j)(δ(1+γ)+s2j+γs2j+1)(δ+fj)(δ(1+γ)+tj+γtj+1)if i=1if i=2,⋯,n
其中 γ , δ ∈ K \gamma,\delta\in\mathbb{K} γ,δ∈K为Verifier发来的随机挑战值。然后Verifier必须检查如下identities for x ∈ G x\in G x∈G:
L 1 ( x ) ⋅ ( Z ( x ) − 1 ) = 0 , Z ( x ⋅ g ) = Z ( x ) ⋅ ( 1 + γ ) ( δ + f ( x ) ) ( δ ( 1 + γ ) + t ( x ) + γ t ( g x ) ) ( δ ( 1 + γ ) + h 1 ( x ) + γ h 2 ( x ) ) ( δ ( 1 + γ ) + h 2 ( x ) + γ h 1 ( x ⋅ g ) ) , (18) L_1(x)\cdot (Z(x)-1)=0,\\ Z(x\cdot g)=Z(x)\cdot \frac{(1+\gamma)(\delta+f(x))(\delta(1+\gamma)+t(x)+\gamma t(gx))}{(\delta(1+\gamma)+h_1(x)+\gamma h_2(x))(\delta(1+\gamma)+h_2(x)+\gamma h_1(x\cdot g))},\tag{18} L1(x)⋅(Z(x)−1)=0,Z(x⋅g)=Z(x)⋅(δ(1+γ)+h1(x)+γh2(x))(δ(1+γ)+h2(x)+γh1(x⋅g))(1+γ)(δ+f(x))(δ(1+γ)+t(x)+γt(gx)),(18)
其中: -
f , t ∈ F < n [ X ] f,t\in \mathbb{F}_{<n}[X] f,t∈F<n[X]:为基于 G G G分别对 { f i } i ∈ [ n ] \{f_i\}_{i\in [n]} {fi}i∈[n] 和 { t i } i ∈ [ n ] \{t_i\}_{i\in [n]} {ti}i∈[n]插值后的多项式。
-
h 1 , h 2 ∈ F < n [ X ] h_1,h_2\in\mathbb{F}_{<n}[X] h1,h2∈F<n[X]:为基于 G G G对上面方程式(17)插值后的多项式。
lookup argument的可靠性:
- 基于随机值
γ
,
δ
∈
K
\gamma,\delta\in\mathbb{K}
γ,δ∈K,若如下等式成立的概率大于
ε
l
o
o
k
u
p
(
n
)
:
=
(
4
n
−
2
)
/
∣
K
∣
\varepsilon_{lookup}(n):=(4n-2)/|\mathbb{K}|
εlookup(n):=(4n−2)/∣K∣:
( 1 + γ ) n ∏ i = 1 n ( δ + f i ) ∏ i = 1 n − 1 ( δ ( 1 + γ ) + t i + γ t i + 1 ) = ∏ i = 1 2 n − 1 ( δ ( 1 + γ ) + s i + γ s i + 1 ) , (1+\gamma)^n\prod_{i=1}^{n}(\delta+f_i)\prod_{i=1}^{n-1}(\delta(1+\gamma)+t_i+\gamma t_{i+1})=\prod_{i=1}^{2n-1}(\delta(1+\gamma)+s_i+\gamma s_{i+1}), (1+γ)ni=1∏n(δ+fi)i=1∏n−1(δ(1+γ)+ti+γti+1)=i=1∏2n−1(δ(1+γ)+si+γsi+1),
则 f ∈ t f\in t f∈t 且 s s s为 f f f和 t t t的拼接然后按 t t t排序。
3. Polygon zkEVM eSTARK中的关键技术
本章将重点解释:
- 2.4节中的vanilla STARK,与,Polygon zkEVM eSTARK,的各轮间所执行的多项式计算的,主要不同之处。
- 在AIR表示中控制约束degree,与,在eSTARK自身协议内控制约束degree,之间的取舍。
3.1 一次性对多个多项式进行承诺
在eSTARK协议中:
- Prover在每轮会发送,对多个多项式的Merkle tree承诺值。
- 最直观的处理方式是,为每个多项式发送一个Merkle tree root。【直观版本】
- 而eSTARK中实现了一种可靠的替代方案:每轮会为所有多项式计算单个Merkle tree。
eSTARK中一次性对多个多项式进行承诺 的策略:
- 不仅可减少 P \mathcal{P} P发送给 V \mathcal{V} V的Merkle root个数;
- 当 P \mathcal{P} P被请求对多个多项式在同一点进行evaluate时,还可减少 P \mathcal{P} P发送给 V \mathcal{V} V的Merkle path个数。
3.1.1 符号
如2.4节所示,通过基于 F ∗ \mathbb{F}^* F∗的某cyclic subgroup的、order为 m m m的nontrivial coset H H H,的多项式evaluations值所构建的Merkle trees,来计算出相应的承诺值。由于 H H H的order为 m m m,本节可将集合 H H H表示为 H = { h 1 , h 2 , h 3 , ⋯ , h m } H=\{h_1,h_2,h_3,\cdots,h_m\} H={h1,h2,h3,⋯,hm}。
假设
f
1
,
⋯
,
f
N
∈
K
<
n
[
X
]
f_1,\cdots,f_N\in\mathbb{K}_{<n}[X]
f1,⋯,fN∈K<n[X]为所要构建Merkle tree的多项式组。即,相当于基于如下
m
×
N
m\times N
m×N矩阵的多项式evaluations值来计算Merkle tree:
(
f
1
(
h
1
)
f
2
(
h
1
)
⋯
f
N
(
h
1
)
f
1
(
h
2
)
f
2
(
h
2
)
⋯
f
N
(
h
2
)
⋮
⋮
⋯
⋮
f
1
(
h
m
)
f
2
(
h
m
)
⋯
f
N
(
h
m
)
)
\begin{pmatrix} f_1(h_1) & f_2(h_1)& \cdots & f_N(h_1) \\ f_1(h_2) & f_2(h_2)& \cdots & f_N(h_2) \\ \vdots & \vdots & \cdots & \vdots \\ f_1(h_m) & f_2(h_m)& \cdots & f_N(h_m) \ \end{pmatrix}
f1(h1)f1(h2)⋮f1(hm)f2(h1)f2(h2)⋮f2(hm)⋯⋯⋯⋯fN(h1)fN(h2)⋮fN(hm)
eSTARK构建Merkle Tree的流程为:
- 将
f
1
,
⋯
,
f
N
f_1,\cdots,f_N
f1,⋯,fN按
H
H
H中单个点的evaluation值进行分组:
- 即,Merkle tree中第 i i i个叶子节点,为前一矩阵中第 i i i行元素值的哈希值。
- 对于具有 m m m行的矩阵,所构建的Merkle tree共有 m m m个叶子节点。此处假设 m m m为power of two值。
- 更准确来说,该Merkle tree的叶子节点,由相应的
H
H
H点值来索引,即结构为:
leaf h 1 ⇒ H ( f 1 ( h 1 ) , f 2 ( h 1 ) , ⋯ , f N ( h 1 ) ) leaf h 2 ⇒ H ( f 1 ( h 2 ) , f 2 ( h 2 ) , ⋯ , f N ( h 2 ) ) ⋮ ⋮ leaf h m ⇒ H ( f 1 ( h m ) , f 2 ( h m ) , ⋯ , f N ( h m ) ) \boxed{\begin{matrix} \text{leaf } h_1 & \Rightarrow & \mathcal{H}(f_1(h_1), f_2(h_1), \cdots , f_N(h_1))\\ \text{leaf } h_2 & \Rightarrow & \mathcal{H}(f_1(h_2), f_2(h_2), \cdots , f_N(h_2))\\ \vdots & & \vdots \\ \text{leaf } h_m & \Rightarrow & \mathcal{H}(f_1(h_m), f_2(h_m), \cdots , f_N(h_m)) \end{matrix} } leaf h1leaf h2⋮leaf hm⇒⇒⇒H(f1(h1),f2(h1),⋯,fN(h1))H(f1(h2),f2(h2),⋯,fN(h2))⋮H(f1(hm),f2(hm),⋯,fN(hm))
其中 H \mathcal{H} H为任意抗碰撞哈希函数。 - 一旦计算出了所有叶子节点,则剩余的就是将Merkle tree的2个子节点拼接依次递归哈希,直到获得Merkle tree root。从而对 f 1 , ⋯ , f N f_1,\cdots,f_N f1,⋯,fN的承诺值为单个Merkle root。
当 V \mathcal{V} V请求 所有 f 1 , ⋯ , f N f_1,\cdots,f_N f1,⋯,fN在 单个点 h i h_i hi 的evaluation的Merkle proof时:
- Prover可证明所有
f
1
(
h
i
)
,
⋯
,
f
N
(
h
i
)
f_1(h_i),\cdots,f_N(h_i)
f1(hi),⋯,fN(hi)的evaluations值 与 该Merkle root的一致性:
- 只需要简单发送 包含这些evaluations的叶子节点 对应的Merkle path即可。
- 相比于直观版本,eSTARK的这个版本,将proof size由 O ( N log m ) O(N\log m) O(Nlogm)个元素 降为了 O ( log m ) O(\log m) O(logm)个元素。
- 这将用于eSTARK协议中batched FRI执行,将在同一点进行evaluate的多项式进行分组,从而可简洁地应答每个batched consistency check。
实际上本方案中采用的哈希函数 H H H为Poseidon哈希函数,选择原因为:
-
Poseidon哈希函数的创建目的就是:在生成和验证ZKP时,使Prover的复杂度和Verifier的复杂度 最小化。
-
特别地,Poseidon哈希具有最好的哈希性能,所对应的参数为:
- state size限制为12个域元素
- state size中的4个用作Poseidon哈希函数的capacity。
这也就意味着,为让Poseidon哈希函数性能最佳,需限定input size为8个域元素。
为此,叶子节点的哈希是“linearly(线性)”计算的。所谓“linearly(线性)”,是指:若Poseidon哈希函数的输入为 t 1 ( s h i ) , t 2 ( s h i ) , ⋯ , t N ( s h i ) t_1(sh^i),t_2(sh^i),\cdots,t_N(sh^i) t1(shi),t2(shi),⋯,tN(shi),则相应的处理流程为:
- 1)将该输入切分为由8个域元素组成的chunks,若 N N N不能被8整除,则补0元素填充。
- 2)对第一个chunk做Poseidon哈希运算时,用到的capacity固定为 ( 0 , 0 , 0 , 0 ) (0,0,0,0) (0,0,0,0)。
- 3)在对后续chunk进行Poseidon哈希运算时,所用的capacity为前一哈希运算的输出。
- 4)重复步骤3),直到没有chunk待处理。
即叶子节点哈希运算示例如下:
一旦所有叶子节点哈希计算完毕,则可通过对2个子节点做Poseidon哈希运算(相应的capacity固定为
(
0
,
0
,
0
,
0
)
(0,0,0,0)
(0,0,0,0)),以该Poseidon哈希运算的输出作为父节点。这种定义是可以的,因为Poseidon的输出包含4个域元素,而其输入正好包含8个域元素。
具有4个叶子节点的Merkle tree构建流程示意如下:
整个构建Merkle tree的流程,可扩展为使用多个GPU来让哈希运算更快,具体流程为:
- 1)将所有多项式切分为4个chunks,其中每个chunk的size为:
batchSize = ⌊ max ( 8 , N + 3 4 ) ⌋ \text{batchSize}=\lfloor \max(8,\frac{N+3}{4}) \rfloor batchSize=⌊max(8,4N+3)⌋
当然,并不是所有chunks都正好有 batchSize \text{batchSize} batchSize个元素。这种情况下,优先填充前3个chunks正好有 batchSize \text{batchSize} batchSize个元素,而第4个chunk可以小一点,但不能小太多。具体思想为,当 N > 32 N>32 N>32时,( N = 32 N=32 N=32时为首次4个chunks的size都正好为 batchSize \text{batchSize} batchSize个元素,)借助上面的公式,若 N N N增加4 则chunk size增加1。因此 N N N如果足够大,则最后一个chunk的size将永远不会小于 batchSize − 3 \text{batchSize}-3 batchSize−3,从而使得多项式实现在4个chunks的基本均匀的分布。
下图展示了各种 N N N取值情况下,chunk的分布情况:
- 2)在将多项式切分为4个chunks(即 T 1 , T 2 , T 3 , T 4 T_1,T_2,T_3,T_4 T1,T2,T3,T4)之后,可并行地做之前定义的linear 哈希运算,最终会的最多16个域元素——对应4个输出,每个输出有4个域元素。
- 3)最后,需按之前的方式,对这16个元素做linear 哈希运算,输出最终4个域元素。即,若:
L H ( T i ) = ( H i , 1 , H i , 2 , H i , 3 , H i , 4 ) , i ∈ { 1 , 2 , 3 , 4 } LH(T_i)=(H_{i,1},H_{i,2},H_{i,3},H_{i,4}), i\in\{1,2,3,4\} LH(Ti)=(Hi,1,Hi,2,Hi,3,Hi,4),i∈{1,2,3,4}
则最终的输出为:
L H ( H 1 , 1 , H 1 , 2 , H 1 , 3 , H 1 , 4 , H 2 , 1 , H 2 , 2 , H 2 , 3 , H 2 , 4 , H 3 , 1 , H 3 , 2 , H 3 , 3 , H 3 , 4 , H 4 , 1 , H 4 , 2 , H 4 , 3 , H 4 , 4 ) LH(H_{1,1},H_{1,2},H_{1,3},H_{1,4},H_{2,1},H_{2,2},H_{2,3},H_{2,4},H_{3,1},H_{3,2},H_{3,3},H_{3,4},H_{4,1},H_{4,2},H_{4,3},H_{4,4}) LH(H1,1,H1,2,H1,3,H1,4,H2,1,H2,2,H2,3,H2,4,H3,1,H3,2,H3,3,H3,4,H4,1,H4,2,H4,3,H4,4)
其中:- L H LH LH:表示单个GPU版本的linear 哈希运算。
3.2 transcript生成 和 Verifier challenge计算
本文通过使用Fiat-Shamir heuristic来转换为非交互式协议。
为此,需明确如何从 K \mathbb{K} K(或等价为3个 F \mathbb{F} F域元素)中生成随机挑战值。
本节中所使用的Poseidon哈希函数实例,其:【而上一节中所使用的Poseidon哈希的输出size是4个,而不是12个域元素。】
- state size为12个域元素(其中有8个用于输入,4个用于capacity);
- output size为12个域元素。
生成transcript的策略与之前的linear哈希策略类似。假设想加 c 1 , ⋯ , c r c_1,\cdots,c_r c1,⋯,cr元素到transcript中,本文的处理流程为:
- 1)将该输入切分为由8个域元素组成的chunks,若 r r r不能被8整除,则补0元素填充。
- 2)对第一个chunk做Poseidon哈希运算时,用到的capacity固定为 ( 0 , 0 , 0 , 0 ) (0,0,0,0) (0,0,0,0)。
- 3)在对后续chunk进行Poseidon哈希运算时,所用的capacity为前一哈希运算的输出的最后4个元素。
- 4)重复步骤3),直到没有chunk待处理。
注意,每个哈希输出中有8个剩余元素未被使用,直到结束以上步骤3)和4)之间的循环。对应如下图所示:
当停止向transcript中添加元素时,最终的输出中包含8个域元素
(
t
1
,
⋯
,
t
8
)
(t_1,\cdots,t_8)
(t1,⋯,t8)。对于指定的transcript state,可从
K
\mathbb{K}
K中提取出所需数量的challenges:
- 挑战值中前2个域元素的获取方式为:
t 1 + t 2 φ + t 3 φ 2 , t 4 + t 5 φ + t 6 φ 2 t_1+t_2\varphi +t_3\varphi ^2,t_4+t_5\varphi +t_6\varphi ^2 t1+t2φ+t3φ2,t4+t5φ+t6φ2
其中:- φ \varphi φ:为从 F \mathbb{F} F构建 K \mathbb{K} K所用到的irreducible polynomial root值。
- 由于没有足够的元素来构建挑战值中(即扩域元素中)的第3个域元素,需按如下流程来处理:
- 构建域元素 t 9 t_9 t9:具体计算方式为,对8个0值做Poseidon哈希运算,该Poseidon哈希运算中的capacity为 上面生成transcript时的最后一次哈希运算所输出的 最后4个域元素——即其为向该transcript中添加新元素的下一次哈希的capacity。
- 由此构建
K
\mathbb{K}
K中的第3个元素:
t 7 + t 8 φ + t 9 φ 2 t_7+t_8\varphi +t_9\varphi ^2 t7+t8φ+t9φ2
接下来以 t r a n s c r i p t transcript transcript 来表示该transcript实例,并为其定义如下操作:
- Add操作:有元素
c
1
,
⋯
,
c
r
∈
F
c_1,\cdots,c_r\in\mathbb{F}
c1,⋯,cr∈F,以:
add t r a n s c r i p t ( c 1 , ⋯ , c r ) \text{add}_{transcript}(c_1,\cdots,c_r) addtranscript(c1,⋯,cr)
来表示使用之前流程,将 c 1 , ⋯ , c r c_1,\cdots,c_r c1,⋯,cr添加到该 t r a n s c r i p t transcript transcript的操作。 - Extract操作:有某transcript state
T
T
T,以:
extract i ( t r a n s c r i p t ) ∈ K , i ∈ { 1 , 2 , 3 } \text{extract}_i(transcript)\in\mathbb{K},i\in\{1,2,3\} extracti(transcript)∈K,i∈{1,2,3}
来表示使用之前流程,根据 t r a n s c r i p t transcript transcript提取单个扩域 K \mathbb{K} K元素的结果。有:
extract 1 ( t r a n s c r i p t ) = t 1 + t 2 φ + t 3 φ 2 \text{extract}_1(transcript)=t_1+t_2\varphi +t_3\varphi ^2 extract1(transcript)=t1+t2φ+t3φ2
extract 2 ( t r a n s c r i p t ) = t 4 + t 5 φ + t 6 φ 2 \text{extract}_2(transcript)=t_4+t_5\varphi +t_6\varphi ^2 extract2(transcript)=t4+t5φ+t6φ2
extract 3 ( t r a n s c r i p t ) = t 7 + t 8 φ + t 9 φ 2 \text{extract}_3(transcript)=t_7+t_8\varphi +t_9\varphi ^2 extract3(transcript)=t7+t8φ+t9φ2
通过以上策略应用Fiat-Shamir所获得的非交互式协议是knowledge sound的,详细证明见2021年Thomas Attema等人论文Fiat-shamir transformation of multi-round interactive proofs中的Theorem 4。
3.3 预处理多项式和公开值
在多项式集合中,有一部分多项式是用于表示problem’s statement约束系统的多项式,因此将多项式分为2大类:
- 1)committed polynomials 承诺多项式:
- 为Verifier在query之前,由Prover(通过Merkle tree)已进行承诺的多项式。
- Verifier仅可oracle access承诺多项式。
- 原则上,承诺多项式的具体内容仅对协议中的Prover已知。
- Verifier限制为仅知道这些承诺多项式的“一小部分”evaluation值。
- 事实上,这部分值由Verifier随机选择,且与Verifier对特定多项式做的oracle query次数成比例。
- 为让本协议具有可扩展性,对承诺多项式所做的query次数,最多为 log ( d ) \log(d) log(d),其中 d d d为多项式的degree。
- 如,之前提到的 trace column多项式 tr i \text{tr}_i tri,就是承诺多项式。
- 2)preprocessed polynomials 预处理多项式:
- 对Verifier来说,预处理多项式是完整已知的,甚至在协议执行之前,Verifier就知道相应的预处理多项式。
- 一旦某多项式约束系统 C \mathcal{C} C 固定,则Verifier可完整访问该预处理多项式集合——以系数形式 或 以evluation形式 来访问。
- 与承诺多项式类似,Veirifer最终仅需要知道这些预处理多项式的一小部分evluation值。
- 如,之前提到的Lagrange多项式 L i L_i Li,就是预处理多项式。
- 将在4.2节展示本协议是如何对待预处理多项式的。
所谓public values(公开值)的定义为:
- 用于证实某些约束的、承诺多项式的evaluation值集合。
- 对Prover和Verifier均已知。
- 某特定多项式可关联有多个公开值。
比如,某多项式约束系统中,使得对所有的
x
∈
G
x\in G
x∈G,满足:
L
1
(
x
)
(
tr
1
(
x
)
−
7
)
=
0
,
L
n
(
x
)
(
tr
1
(
x
)
−
3
)
=
0
,
(19)
L_1(x)(\text{tr}_1(x)-7)=0,L_n(x)(\text{tr}_1(x)-3)=0,\tag{19}
L1(x)(tr1(x)−7)=0,Ln(x)(tr1(x)−3)=0,(19)
该约束系统中包含了:
- 1个承诺多项式 tr 1 \text{tr}_1 tr1
- 2个预处理多项式 L 1 , L n L_1,L_n L1,Ln
- 对承诺多项式 tr 1 \text{tr}_1 tr1 在 g 和 g n g和g^n g和gn点的evaluation值,是公开值。因为等式(19)满足,当且仅当 tr 1 ( g ) = 7 且 tr 1 ( g n ) = 3 \text{tr}_1(g)=7且\text{tr}_1(g^n)=3 tr1(g)=7且tr1(gn)=3。
3.4 添加Selected Vector Arguments
本节中,将描述如何利用2.5节中提出的argument来增加可用约束的类型。回顾下将添加的3种新的argument类型有:
- Lookup argument(又名Inclusion argument)
∈
\in
∈:PIL关键字为
in
。
基于某multiplicative subgroup G G G,多项式 f f f的evaluation值所构建的集合,被包含在,另一多项式 t t t的evaluation值集合内。 - Permutation argument(又名Multiset Equality argument)
≐
\doteq
≐:PIL关键字为
is
。
基于某multiplicative subgroup G G G,多项式 f f f的evaluation值所构建的集合,与,另一多项式 t t t的evaluation值集合,等价。 - Connection argument
∝
\propto
∝:PIL关键字为
connect
。
基于某multiplicative subgroup G G G,一组多项式 f 1 , ⋯ , f N f_1,\cdots,f_N f1,⋯,fN的evaluation值所构建的向量,通过对其做某特定permutation σ \sigma σ之后,这些向量无差别。
为在协议中包含non-identity约束,会将这些non-identity约束,通过一组identity约束来简洁表示。假设协议中有 M M M个Lookup argument(又名Inclusion argument)实例、 M ′ M' M′个Permutation argument(又名Multiset Equality argument)实例、 M ′ ′ M'' M′′个Connection argument实例:
- 1)
M
M
M个Lookup argument(又名Inclusion argument)实例:对于每个
j
∈
[
M
]
j\in [M]
j∈[M] inclusion(lookup)约束,在计算相应的grand product多项式之前,需要计算并commit相关联的多项式
h
1
,
j
,
h
2
,
j
h_{1,j},h_{2,j}
h1,j,h2,j——即共有
2
M
2M
2M个承诺多项式。同时,还需对
f
j
f_j
fj多项式进行承诺,从而最终共有
3
M
3M
3M个承诺多项式。
然后计算相关联的grand product多项式 Z j Z_j Zj,对应的约束多项式 Z j Z_j Zj共有 2 M 2M 2M个。【具体的grand product多项式 Z j Z_j Zj会有所不同,其定义取决于所执行的是哪种argument,详情见2.5节。】 - 2)
M
′
M'
M′个Permutation argument(又名Multiset Equality argument)实例:对于每个
j
∈
[
M
′
]
j\in [M']
j∈[M′] Permutation(又名Multiset Equality)约束,需对
f
j
f_j
fj多项式进行承诺,从而最终共有
M
′
M'
M′个承诺多项式。
然后计算相关联的grand product多项式 Z j Z_j Zj,对应的约束多项式 Z j Z_j Zj共有 2 M ′ 2M' 2M′个。 - 3)
M
′
′
M''
M′′个Connection argument实例:对于每个
j
∈
[
M
′
′
]
j\in [M'']
j∈[M′′] Connection约束,需对
f
j
f_j
fj多项式进行承诺,从而最终共有
M
′
′
M''
M′′个承诺多项式。
然后计算相关联的grand product多项式 Z j Z_j Zj,对应的约束多项式 Z j Z_j Zj共有 2 M ′ ′ 2M'' 2M′′个。
因此,添加 M M M个Lookup argument(又名Inclusion argument)实例、 M ′ M' M′个Permutation argument(又名Multiset Equality argument)实例、 M ′ ′ M'' M′′个Connection argument实例后:
- 对应给STARK增加了 3 M + M ′ + M ′ ′ 3M+M'+M'' 3M+M′+M′′个承诺多项式。
- 对应给STARK增加了 2 ( M + M ′ + M ′ ′ ) 2(M+M'+M'') 2(M+M′+M′′)个约束多项式。
接下来,将解释将Lookup argument(又名Inclusion argument)和 Permutation argument(又名Multiset Equality argument)进行通用化,使得:
- 不仅包含多个多项式
- 还是a subset of the resulting vector
为此,某种程度来说,扩大这些arguments的可表达性,并可处理更通用的non-identity约束。
3.4.1 由Vector Arguments到Simple Arguments
本小节将首先解释如何将vector inclusions(即多个lookup argument)或 vector multiset equalities(即多个permutation argument),reduce为 “简单的” inclusions或multiset equalities。所谓“简单的”,是指每边都仅包含一个多项式。
Vector Arguments定义为:
- 对于
i
∈
[
N
]
i\in[N]
i∈[N],已知多项式
f
i
,
t
i
∈
K
<
n
[
X
]
f_i,t_i\in\mathbb{K}_{<n}[X]
fi,ti∈K<n[X],
- 以
(
f
1
,
⋯
,
f
N
)
∈
(
t
1
,
⋯
,
t
N
)
(f_1,\cdots,f_N)\in (t_1,\cdots,t_N)
(f1,⋯,fN)∈(t1,⋯,tN)来表示vector inclusion,即对于所有的
x
∈
G
x\in G
x∈G,存在某
y
∈
G
y\in G
y∈G,使得:
( f 1 ( x ) , ⋯ , f N ( x ) ) = ( t 1 ( y ) , ⋯ , t N ( y ) ) (20) (f_1(x),\cdots,f_N(x))=(t_1(y),\cdots,t_N(y))\tag{20} (f1(x),⋯,fN(x))=(t1(y),⋯,tN(y))(20) - 以 ( f 1 , ⋯ , f N ) ≐ ( t 1 , ⋯ , t N ) (f_1,\cdots,f_N)\doteq (t_1,\cdots,t_N) (f1,⋯,fN)≐(t1,⋯,tN)来表示vector multiset equality,即对于所有的 y ∈ G y\in G y∈G,存在有且仅有一个 x ∈ G x\in G x∈G,使得如上等式(20)成立。即,(vector)multiset equalities定义了某双向映射。
- 以
(
f
1
,
⋯
,
f
N
)
∈
(
t
1
,
⋯
,
t
N
)
(f_1,\cdots,f_N)\in (t_1,\cdots,t_N)
(f1,⋯,fN)∈(t1,⋯,tN)来表示vector inclusion,即对于所有的
x
∈
G
x\in G
x∈G,存在某
y
∈
G
y\in G
y∈G,使得:
为将之前的Vector Arguments,reduce为,“简单的”Arguments,需使用一个均匀采样元素
α
∈
K
\alpha \in \mathbb{K}
α∈K,即不再试图为如上等式(20)中的vector relation生成an argument,而是定义如下多项式:
F
′
(
X
)
:
=
∑
i
=
1
N
α
i
−
1
f
i
(
X
)
,
T
′
(
X
)
:
=
∑
i
=
1
N
α
i
−
1
t
i
(
X
)
,
(21)
F'(X):=\sum_{i=1}^{N}\alpha^{i-1}f_i(X),T'(X):=\sum_{i=1}^{N}\alpha^{i-1}t_i(X),\tag{21}
F′(X):=i=1∑Nαi−1fi(X),T′(X):=i=1∑Nαi−1ti(X),(21)
并继续证明relation
F
′
∈
T
′
F'\in T'
F′∈T′或
F
′
≐
T
′
F'\doteq T'
F′≐T′。
需注意的是,即使 f i , t i f_i,t_i fi,ti中的每个系数都是基于基域 F \mathbb{F} F的,但 F ′ 和 T ′ F'和T' F′和T′为通用多项式,其系数都是基于扩域 K \mathbb{K} K的。
基于随机选择的 α ∈ K \alpha \in \mathbb{K} α∈K,通过等式(21)所实现的Vector Arguments reduction,其对应的soundness exception probability为: n ⋅ ( N − 1 ) / ∣ K ∣ n\cdot (N-1)/|\mathbb{K}| n⋅(N−1)/∣K∣。【Lemma 4】
经等式(21)reduction之后,可获得:【Lemma 5】
-
1)Inclusion(lookup)协议为:
- 1.1)Prover在第一轮给Verifier发送oracle functions [ f i ] , [ t i ] [f_i],[t_i] [fi],[ti] for i ∈ [ N ] i\in [N] i∈[N]。
- 1.2)Verifier回复均匀采样值 α ∈ K \alpha \in \mathbb{K} α∈K。
- 1.3)若接下来Prover和Verifier像2.5节的inclusion protocol那样基于输入
F
′
,
T
′
F',T'
F′,T′进行交互,使得Verifier 认可的概率大于:
n ⋅ ( N − 1 ) / ∣ K ∣ + ε l o o k u p ( n ) n\cdot (N-1)/|\mathbb{K}|+\varepsilon_{lookup}(n) n⋅(N−1)/∣K∣+εlookup(n)
则 ( f 1 , ⋯ , f N ) ∈ ( t 1 , ⋯ , t N ) (f_1,\cdots,f_N)\in (t_1,\cdots,t_N) (f1,⋯,fN)∈(t1,⋯,tN)。
-
2)Multiset Equality(permutation)协议为:
- 2.1)Prover在第一轮给Verifier发送oracle functions [ f i ] , [ t i ] [f_i],[t_i] [fi],[ti] for i ∈ [ N ] i\in [N] i∈[N]。
- 2.2)Verifier回复均匀采样值 α ∈ K \alpha \in \mathbb{K} α∈K。
- 2.3)若接下来Prover和Verifier像2.5节的inclusion protocol那样基于输入
F
′
,
T
′
F',T'
F′,T′进行交互,使得Verifier 认可的概率大于:
n ⋅ ( N − 1 ) / ∣ K ∣ + ε P e r m ( n ) n\cdot (N-1)/|\mathbb{K}|+\varepsilon_{Perm}(n) n⋅(N−1)/∣K∣+εPerm(n)
则 ( f 1 , ⋯ , f N ) ≐ ( t 1 , ⋯ , t N ) (f_1,\cdots,f_N)\doteq (t_1,\cdots,t_N) (f1,⋯,fN)≐(t1,⋯,tN)。
3.4.2 由Selected Vector Arguments到Simple Arguments
接下来介绍selectors。
非正式来说,selected inclusion (multiset equality),不是2个特定多项式
f
,
t
f,t
f,t之间的inclusion (multiset equality),而是基于独立生成的selectors 分别与多项式
f
,
t
f,t
f,t相乘之后的inclusion (multiset equality)。
具体Selected Vector Arguments定义为:
- 对于
i
∈
[
N
]
i\in[N]
i∈[N],已知多项式
f
i
,
t
i
∈
K
<
n
[
X
]
f_i,t_i\in\mathbb{K}_{<n}[X]
fi,ti∈K<n[X],同时额外引入2个多项式
f
s
e
l
,
t
s
e
l
∈
K
<
n
[
X
]
f^{sel},t^{sel}\in\mathbb{K}_{<n}[X]
fsel,tsel∈K<n[X]——这2个多项式在domain
G
G
G的取值为
{
0
,
1
}
\{0,1\}
{0,1}。即
f
s
e
l
,
t
s
e
l
f^{sel},t^{sel}
fsel,tsel为selectors。
- 以
f
s
e
l
⋅
(
f
1
,
⋯
,
f
N
)
∈
t
s
e
l
⋅
(
t
1
,
⋯
,
t
N
)
f^{sel}\cdot(f_1,\cdots,f_N)\in t^{sel}\cdot(t_1,\cdots,t_N)
fsel⋅(f1,⋯,fN)∈tsel⋅(t1,⋯,tN)来表示selected vector inclusion,即对于所有的
x
∈
G
x\in G
x∈G,存在某
y
∈
G
y\in G
y∈G,使得:
f s e l ( x ) ⋅ ( f 1 ( x ) , ⋯ , f N ( x ) ) = t s e l ( y ) ⋅ ( t 1 ( y ) , ⋯ , t N ( y ) ) (22) f^{sel}(x)\cdot(f_1(x),\cdots,f_N(x))=t^{sel}(y)\cdot (t_1(y),\cdots,t_N(y))\tag{22} fsel(x)⋅(f1(x),⋯,fN(x))=tsel(y)⋅(t1(y),⋯,tN(y))(22)
其中 f s e l ( x ) ⋅ ( f 1 ( x ) , ⋯ , f N ( x ) ) f^{sel}(x)\cdot(f_1(x),\cdots,f_N(x)) fsel(x)⋅(f1(x),⋯,fN(x))表示的是域元素 f s e l ( x ) f^{sel}(x) fsel(x)与向量 ( f 1 ( x ) , ⋯ , f N ( x ) ) (f_1(x),\cdots,f_N(x)) (f1(x),⋯,fN(x))之间的component-wise scalar multiplication。 - 以 f s e l ⋅ ( f 1 , ⋯ , f N ) ≐ t s e l ⋅ ( t 1 , ⋯ , t N ) f^{sel}\cdot(f_1,\cdots,f_N)\doteq t^{sel}\cdot(t_1,\cdots,t_N) fsel⋅(f1,⋯,fN)≐tsel⋅(t1,⋯,tN)来表示selected vector multiset equality,即对于所有的 y ∈ G y\in G y∈G,存在有且仅有一个 x ∈ G x\in G x∈G,使得如上等式(22)成立。即,selected(vector)multiset equalities定义了某双向映射。
- 以
f
s
e
l
⋅
(
f
1
,
⋯
,
f
N
)
∈
t
s
e
l
⋅
(
t
1
,
⋯
,
t
N
)
f^{sel}\cdot(f_1,\cdots,f_N)\in t^{sel}\cdot(t_1,\cdots,t_N)
fsel⋅(f1,⋯,fN)∈tsel⋅(t1,⋯,tN)来表示selected vector inclusion,即对于所有的
x
∈
G
x\in G
x∈G,存在某
y
∈
G
y\in G
y∈G,使得:
注意:
- 若 f s e l = t s e l = 1 f^{sel}=t^{sel}=1 fsel=tsel=1,则以上等式(22)可reduce为等式(20)。
- 若 f s e l = t s e l = 0 f^{sel}=t^{sel}=0 fsel=tsel=0,则相应的argument是trivial的,即始终成立的。
- 若 f s e l f^{sel} fsel为1,或 t s e l t^{sel} tsel为1,则可分别移除 f s e l f^{sel} fsel或 t s e l t^{sel} tsel。
为将selected vector inclusion,reduce为,selected simple inclusion,需分为2步:
- 1)参照上面等式(21)中的reduction策略,来将内部的多项式vector,reduce为单个多项式。即获得输出多项式 F ′ , T ′ ∈ K < n [ X ] F',T'\in\mathbb{K}_{<n}[X] F′,T′∈K<n[X]。
- 2)使用另一个均匀采样值
β
∈
K
\beta\in\mathbb{K}
β∈K,定义如下多项式:
T ( X ) : = t s e l ( X ) [ T ′ ( X ) − β ] + β , F ( X ) : = f s e l ( X ) [ F ′ ( X ) − T ( X ) ] + T ( X ) , (23) \begin{matrix} T(X):=t^{sel}(X)[T'(X)-\beta]+\beta, \\ F(X):=f^{sel}(X)[F'(X)-T(X)]+T(X), \end{matrix} \tag{23} T(X):=tsel(X)[T′(X)−β]+β,F(X):=fsel(X)[F′(X)−T(X)]+T(X),(23) - 3)然后就是证明relation F ∈ T F\in T F∈T。
需注意的是,以上等式(23)中的“re-ordering”是相关的:
- 若转为在
F
F
F定义中引入
β
\beta
β,则可能存在如下场景:
- 最终将 β \beta β将作为某inclusion value,使得即使selectors正确,相应的inclusion argument也无法满足。
以上等式(23)中的“re-ordering”的相关性,示例见:
以上例为例,若定义
F
(
X
)
:
=
f
s
e
l
(
X
)
[
F
′
(
X
)
−
β
]
+
β
,
T
(
X
)
:
=
t
s
e
l
(
X
)
[
T
′
(
X
)
−
F
(
X
)
]
+
F
(
X
)
F(X):=f^{sel}(X)[F'(X)-\beta]+\beta,T(X):=t^{sel}(X)[T'(X)-F(X)]+F(X)
F(X):=fsel(X)[F′(X)−β]+β,T(X):=tsel(X)[T′(X)−F(X)]+F(X),将有
β
\beta
β作为inclusion value,即意味着即使
f
1
,
t
1
f_1,t_1
f1,t1和
f
s
e
l
,
t
s
e
l
f^{sel},t^{sel}
fsel,tsel均正确,确有
F
∉
T
F\notin T
F∈/T。
与上面的selected vector inclusion reduction类似,为将selected vector multiset equalities,reduce为,selected simple multiset equalities,需分为2步:
- 1)参照上面等式(21)中的reduction策略,来将内部的多项式vector,reduce为单个多项式。即获得输出多项式 F ′ , T ′ ∈ K < n [ X ] F',T'\in\mathbb{K}_{<n}[X] F′,T′∈K<n[X]。
- 2)使用另一个均匀采样值
β
∈
K
\beta\in\mathbb{K}
β∈K,定义如下多项式:
F ( X ) : = f s e l ( X ) [ F ′ ( X ) − β ] + β , T ( X ) : = t s e l ( X ) [ T ′ ( X ) − β ] + β , (24) \begin{matrix} F(X):=f^{sel}(X)[F'(X)-\beta]+\beta, \\ T(X):=t^{sel}(X)[T'(X)-\beta]+\beta, \end{matrix} \tag{24} F(X):=fsel(X)[F′(X)−β]+β,T(X):=tsel(X)[T′(X)−β]+β,(24) - 3)然后就是证明relation F ≐ T F\doteq T F≐T。
Lemma 6:
- 针对上面的等式(23)和(24),可知,基于独立随机选择的 α , β \alpha,\beta α,β,reduce之后相应的selected simple inclusion 和 selected simple multiset equalities 的exception概率均为 n ⋅ ( N − 1 ) / ∣ K ∣ n\cdot (N-1)/|\mathbb{K}| n⋅(N−1)/∣K∣。
Lemma 7:
对于
i
∈
[
N
]
i\in [N]
i∈[N],已知多项式
f
i
,
t
i
∈
K
<
n
[
X
]
f_i,t_i\in\mathbb{K}_{<n}[X]
fi,ti∈K<n[X],和selectors
f
s
e
l
,
t
s
e
l
∈
K
<
n
[
X
]
f^{sel},t^{sel}\in\mathbb{K}_{<n}[X]
fsel,tsel∈K<n[X],有:
- 1)inclusion协议:令
T
∈
K
<
2
n
−
1
[
X
]
,
F
∈
K
<
3
n
−
1
[
X
]
T\in\mathbb{K}_{<2n-1}[X],F\in\mathbb{K}_{<3n-1}[X]
T∈K<2n−1[X],F∈K<3n−1[X]为上面等式(23)中定义的多项式:
- 1.1)第一轮,Prover给Verifier发送oracle functions [ f i ] , [ t i ] , [ f s e l ] , [ t s e l ] [f_i],[t_i],[f^{sel}],[t^{sel}] [fi],[ti],[fsel],[tsel] for i ∈ [ N ] i\in [N] i∈[N]。
- 1.2)Verifier回复均匀采样值 α , β ∈ K \alpha,\beta\in\mathbb{K} α,β∈K。
- 1.3)需在2.5节inclusion协议中Verifier所需检查的identity集合的基础之上,对所有
x
∈
G
x\in G
x∈G,额外增加(enlarge)如下检查:
f s e l ( x ) ( f s e l ( x ) − 1 ) = 0 , t s e l ( x ) ( t s e l ( x ) − 1 ) = 0 , f^{sel}(x)(f^{sel}(x)-1)=0,\\ t^{sel}(x)(t^{sel}(x)-1)=0, fsel(x)(fsel(x)−1)=0,tsel(x)(tsel(x)−1)=0,
即,Verifier需检查多项式 f s e l , t s e l f^{sel},t^{sel} fsel,tsel为有效selectors。 - 1.4)若在2.5节的(enlarged)inclusion协议中的Prover与Verifier交互,使得Verifier认可的概率大于:
n N − 1 ∣ K ∣ + ε l o o k u p ( 3 n − 1 ) n\frac{N-1}{|\mathbb{K}|}+\varepsilon_{lookup}(3n-1) n∣K∣N−1+εlookup(3n−1)
则有 f s e l ⋅ ( f 1 , ⋯ , f N ) ∈ t s e l ⋅ ( t 1 , ⋯ , t N ) f^{sel}\cdot(f_1,\cdots,f_N)\in t^{sel}\cdot(t_1,\cdots,t_N) fsel⋅(f1,⋯,fN)∈tsel⋅(t1,⋯,tN)。
- 2)multiset equality协议:令
F
,
T
∈
K
<
2
n
−
1
[
X
]
F,T\in\mathbb{K}_{<2n-1}[X]
F,T∈K<2n−1[X]为上面等式(24)中定义的多项式:
- 2.1)第一轮,Prover给Verifier发送oracle functions [ f i ] , [ t i ] , [ f s e l ] , [ t s e l ] [f_i],[t_i],[f^{sel}],[t^{sel}] [fi],[ti],[fsel],[tsel] for i ∈ [ N ] i\in [N] i∈[N]。
- 2.2)Verifier回复均匀采样值 α , β ∈ K \alpha,\beta\in\mathbb{K} α,β∈K。
- 2.3)需在2.5节multiset equality协议中Verifier所需检查的identity集合的基础之上,对所有
x
∈
G
x\in G
x∈G,额外增加(enlarge)如下检查:
f s e l ( x ) ( f s e l ( x ) − 1 ) = 0 , t s e l ( x ) ( t s e l ( x ) − 1 ) = 0 , f^{sel}(x)(f^{sel}(x)-1)=0,\\ t^{sel}(x)(t^{sel}(x)-1)=0, fsel(x)(fsel(x)−1)=0,tsel(x)(tsel(x)−1)=0,
即,Verifier需检查多项式 f s e l , t s e l f^{sel},t^{sel} fsel,tsel为有效selectors。 - 2.4)若在2.5节的(enlarged)multiset equality协议中的Prover与Verifier交互,使得Verifier认可的概率大于:
n N − 1 ∣ K ∣ + ε P e r m ( 2 n − 1 ) n\frac{N-1}{|\mathbb{K}|}+\varepsilon_{Perm}(2n-1) n∣K∣N−1+εPerm(2n−1)
则有 f s e l ⋅ ( f 1 , ⋯ , f N ) ≐ t s e l ⋅ ( t 1 , ⋯ , t N ) f^{sel}\cdot(f_1,\cdots,f_N)\doteq t^{sel}\cdot(t_1,\cdots,t_N) fsel⋅(f1,⋯,fN)≐tsel⋅(t1,⋯,tN)。
示例3:
如对于所有的
x
∈
G
x\in G
x∈G,Prover想要证明其知道某些多项式
tr
1
,
tr
2
,
tr
3
,
tr
4
,
tr
5
∈
F
<
n
[
X
]
\text{tr}_1,\text{tr}_2,\text{tr}_3,\text{tr}_4,\text{tr}_5\in\mathbb{F}_{<n}[X]
tr1,tr2,tr3,tr4,tr5∈F<n[X],使得:
tr
1
∈
tr
3
,
tr
3
≐
tr
4
,
(
tr
2
,
tr
1
,
tr
5
)
∝
(
S
σ
1
,
S
σ
2
,
S
σ
3
)
(25)
\begin{matrix} \text{tr}_1\in \text{tr}_3, \\ \text{tr}_3\doteq \text{tr}_4, \\ (\text{tr}_2,\text{tr}_1,\text{tr}_5) \propto (S_{\sigma_1},S_{\sigma_2},S_{\sigma_3}) \end{matrix} \tag{25}
tr1∈tr3,tr3≐tr4,(tr2,tr1,tr5)∝(Sσ1,Sσ2,Sσ3)(25)
其中
≐
\doteq
≐表示
tr
3
和
tr
4
\text{tr}_3和 \text{tr}_4
tr3和tr4 互为permutation,但不指定具体的permutation规则。
根据之前章节,以及3.6节,对于所有的
x
∈
G
x\in G
x∈G,可将等式(25)转换为如下多项式约束系统:
L
1
(
x
)
(
Z
1
(
x
)
−
1
)
=
0
,
L_1(x)(Z_1(x)-1)=0,
L1(x)(Z1(x)−1)=0,
Z
1
(
g
x
)
=
Z
1
(
x
)
(
1
+
β
)
(
γ
+
tr
1
(
x
)
)
(
γ
(
1
+
β
)
+
tr
3
(
x
)
+
β
tr
3
(
g
x
)
)
(
γ
(
1
+
β
)
+
h
1
,
1
(
x
)
+
β
h
1
,
2
(
x
)
)
(
γ
(
1
+
β
)
+
h
1
,
2
(
x
)
+
β
h
1
,
1
(
g
x
)
)
,
Z_1(gx)=Z_1(x)\frac{(1+\beta)(\gamma+\text{tr}_1(x))(\gamma(1+\beta)+\text{tr}_3(x)+\beta\text{tr}_3(gx))}{(\gamma(1+\beta)+h_{1,1}(x)+\beta h_{1,2}(x))(\gamma (1+\beta)+h_{1,2}(x)+\beta h_{1,1}(gx))},
Z1(gx)=Z1(x)(γ(1+β)+h1,1(x)+βh1,2(x))(γ(1+β)+h1,2(x)+βh1,1(gx))(1+β)(γ+tr1(x))(γ(1+β)+tr3(x)+βtr3(gx)),
L
1
(
x
)
(
Z
2
(
x
)
−
1
)
=
0
,
L_1(x)(Z_2(x)-1)=0,
L1(x)(Z2(x)−1)=0,
Z
2
(
g
x
)
=
Z
2
(
x
)
(
γ
+
tr
3
(
x
)
)
(
γ
+
tr
4
(
x
)
)
,
Z_2(gx)=Z_2(x)\frac{(\gamma+\text{tr}_3(x))}{(\gamma+\text{tr}_4(x))},
Z2(gx)=Z2(x)(γ+tr4(x))(γ+tr3(x)),
L
1
(
x
)
(
Z
3
(
x
)
−
1
)
=
0
,
L_1(x)(Z_3(x)-1)=0,
L1(x)(Z3(x)−1)=0,
im
1
(
x
)
=
(
tr
1
(
x
)
+
β
k
1
x
+
γ
)
(
tr
5
(
x
)
+
β
k
2
x
+
γ
)
,
\text{im}_1(x)=(\text{tr}_1(x)+\beta k_1x+\gamma)(\text{tr}_5(x)+\beta k_2x +\gamma),
im1(x)=(tr1(x)+βk1x+γ)(tr5(x)+βk2x+γ),
im
2
(
x
)
=
(
tr
1
(
x
)
+
S
σ
2
(
x
)
+
γ
)
(
tr
5
(
x
)
+
S
σ
3
(
x
)
+
γ
)
,
\text{im}_2(x)=(\text{tr}_1(x)+S_{\sigma_2}(x)+\gamma)(\text{tr}_5(x)+S_{\sigma_3}(x) +\gamma),
im2(x)=(tr1(x)+Sσ2(x)+γ)(tr5(x)+Sσ3(x)+γ),
Z
3
(
g
x
)
=
Z
3
(
x
)
(
tr
2
(
x
)
+
β
x
+
γ
)
⋅
im
1
(
x
)
(
tr
2
(
x
)
+
S
σ
1
(
x
)
+
γ
)
⋅
im
2
(
x
)
,
Z_3(gx)=Z_3(x)\frac{(\text{tr}_2(x)+\beta x+\gamma)\cdot\text{im}_1(x)}{(\text{tr}_2(x)+S_{\sigma_1}(x)+\gamma)\cdot\text{im}_2(x)},
Z3(gx)=Z3(x)(tr2(x)+Sσ1(x)+γ)⋅im2(x)(tr2(x)+βx+γ)⋅im1(x),
注意,其中有时仅需调整connection argument类型。
3.4.2 arguments的并行执行
本节将解释如何将之前协议的multiple executions进行合并,所获得的Protocol 2协议定义为:
- 初始条件为:对于 i ∈ [ N ] , j ∈ [ M + M ′ + M ′ ′ ] i\in [N],j\in[M+M'+M''] i∈[N],j∈[M+M′+M′′],Prover知道一组多项式 f i , j , t i , j ∈ F < n [ X ] f_{i,j},t_{i,j}\in\mathbb{F}_{<n}[X] fi,j,ti,j∈F<n[X]。
- 待证明的关系为:
- 对于每个 j ∈ [ M ] j\in [M] j∈[M], { f i , j , t i , j } i \{f_{i,j},t_{i,j}\}_i {fi,j,ti,j}i对应为 M M M个inclusion argument中的每组多项式。【对inclusion argument,还可额外引入selectors f j s e l , t j s e l f^{sel}_j,t^{sel}_j fjsel,tjsel。】
- 对于每个 j ∈ [ M + 1 , M + M ′ ] j\in [M+1, M+M'] j∈[M+1,M+M′], { f i , j , t i , j } i \{f_{i,j},t_{i,j}\}_i {fi,j,ti,j}i对应为 M ′ M' M′个multiset equality argument中的每组多项式。【对multiset equality argument,还可额外引入selectors f j s e l , t j s e l f^{sel}_j,t^{sel}_j fjsel,tjsel。】
- 对于每个 j ∈ [ M + M ′ + 1 , M + M ′ + M ′ ′ ] j\in [M+M'+1, M+M'+M''] j∈[M+M′+1,M+M′+M′′], { f i , j , t i , j , S i , σ j } i \{f_{i,j},t_{i,j}, S_{i,\sigma_j}\}_i {fi,j,ti,j,Si,σj}i对应为 M ′ ′ M'' M′′个connection argument中的每组多项式,其中 S i , σ j S_{i,\sigma_j} Si,σj为对应每个permutation σ j \sigma_j σj的多项式。。
对应的Protocol 2协议执行流程为:
- 1)Execution trace oracles:对于 i ∈ [ N ] , j ∈ [ M + M ′ + M ′ ′ ] i\in [N],j\in[M+M'+M''] i∈[N],j∈[M+M′+M′′],Prover发送oracle functions [ f i , j ] , [ t i , j ] , [ f j s e l ] , [ t j s e l ] [f_{i,j}],[t_{i,j}],[f_j^{sel}],[t_j^{sel}] [fi,j],[ti,j],[fjsel],[tjsel]给Verifier,Verifier回复均匀采样值 α , β ∈ K \alpha,\beta\in \mathbb{K} α,β∈K。
- 2)Inclusion oracles:对于每个 j ∈ [ M ] j\in [M] j∈[M]的inclusion argument,Prover计算相应的inclusion多项式 h 1 , j , h 2 , j h_{1,j},h_{2,j} h1,j,h2,j,然后发送这2组inclusion多项式的oracle functions给Verifier,Verifier回复均匀采样值 γ , δ ∈ K \gamma,\delta\in \mathbb{K} γ,δ∈K。
- 3)Grand product oracles:对于每个 j ∈ [ M + M ′ + M ′ ′ ] j\in[M+M'+M''] j∈[M+M′+M′′],Prover计算相应的grand product多项式 Z j Z_j Zj,然后发送这些grand product多项式的oracle functions给Verifier
- 4)Verification:对于所有的
x
∈
G
x\in G
x∈G,Verifier会对不同的argument类型进行验证:
- 对于每个 j ∈ [ M ] j\in [M] j∈[M],Verifier会检查等式(18)中的约束成立。【对inclusion argument】
- 对于每个 j ∈ [ M + 1 , M + M ′ ] j\in [M+1,M+M'] j∈[M+1,M+M′],Verifier会检查等式(14)(15)中的约束成立。【对multiset equality argument】
- 对于每个 j ∈ [ M + M ′ + 1 , M + M ′ + M ′ ′ ] j\in [M+M'+1,M+M'+M''] j∈[M+M′+1,M+M′+M′′],Verifier会检查等式(16)中的约束成立。【对connection argument】
- 对于每个
j
∈
[
M
+
M
′
]
j\in [M+M']
j∈[M+M′],Verifier会确认如下约束成立,从而确认
f
j
s
e
l
,
t
j
s
e
l
f_j^{sel},t_j^{sel}
fjsel,tjsel多项式为有效selectors:
f s e l ( x ) ( f s e l ( x ) − 1 ) = 0 , t s e l ( x ) ( t s e l ( x ) − 1 ) = 0. f^{sel}(x)(f^{sel}(x)-1)=0,\\ t^{sel}(x)(t^{sel}(x)-1)=0. fsel(x)(fsel(x)−1)=0,tsel(x)(tsel(x)−1)=0.
对应完整的Protocol 2框架描述示意如下:
借助:
- Eli Ben-Sasson等人2016年论文Interactive Oracle Proofs的Theorem 7
- Oded Goldreich 2020年书本 Modern Cryptography, Probabilistic Proofs and Pseudorandomness的Parallel Repetition Theorem for polynomial IOP
同时对于Protocol 2中的inclusion argument以:
- M 1 M_1 M1:来表示simple inclusion个数
- M 2 M_2 M2:来表示vector inclusion个数
- M 3 M_3 M3:来表示selected vector inclusion个数
有
M
=
M
1
+
M
2
+
M
3
M=M_1+M_2+M_3
M=M1+M2+M3。
同理对Protocol 2中的multiset equality argument以:
- M 1 ′ M_1' M1′:来表示simple multiset equality个数
- M 2 ′ M_2' M2′:来表示vector multiset equality个数
- M 3 ′ M_3' M3′:来表示selected vector multiset equality个数
有 M ′ = M 1 ′ + M 2 ′ + M 3 ′ M'=M_1'+M_2'+M_3' M′=M1′+M2′+M3′。
Lemma 8(Soundness bound for Protocol 2):
- 以 ε I n c \varepsilon_{Inc} εInc来表示单个inclusion argument的soundness
- 以 ε M u l E q \varepsilon_{MulEq} εMulEq来表示单个multiset equality argument的soundness
- 以 ε C o n \varepsilon_{Con} εCon来表示单个connection argument的soundness
- 整个Protocol 2中Prover与Verifier交互,让Verifier认可的概率大于:
ε A r g s : = ( M 2 + M 3 + M 2 ′ + M 3 ′ ) n ( N − 1 ) ∣ K ∣ + ε I n c ( n ) M 1 + M 2 ε I n c ( 2 n − 1 ) M 3 ε M u l E q ( n ) M 1 + M 2 ε M u l E q ( 3 n − 1 ) M 3 ε C o n ( n ) M ′ ′ \varepsilon_{Args}:=(M_2+M_3+M_2'+M_3')\frac{n(N-1)}{|\mathbb{K}|}+\varepsilon_{Inc}(n)^{M_1+M_2}\varepsilon_{Inc}(2n-1)^{M_3}\varepsilon_{MulEq}(n)^{M_1+M_2}\varepsilon_{MulEq}(3n-1)^{M_3}\varepsilon_{Con}(n)^{M''} εArgs:=(M2+M3+M2′+M3′)∣K∣n(N−1)+εInc(n)M1+M2εInc(2n−1)M3εMulEq(n)M1+M2εMulEq(3n−1)M3εCon(n)M′′
则, M M M个inclusion argument中的每个、 M ′ M' M′个multiset equality argument中的每个、 M ′ ′ M'' M′′个connection argument中的每个,均得到满足。
3.5 On the Quotient Polynomial
在vanilla STARK协议中,等式(8)中的quotient多项式
Q
Q
Q是通过对如下有理函数调整degree计算而来的:
q
i
(
X
)
:
=
C
i
(
tr
1
(
X
)
,
⋯
,
tr
N
(
X
)
,
tr
1
(
g
X
)
,
⋯
,
tr
N
(
g
X
)
)
Z
G
(
X
)
q_i(X):=\frac{C_i(\text{tr}_1(X),\cdots,\text{tr}_N(X),\text{tr}_1(gX),\cdots,\text{tr}_N(gX))}{Z_G(X)}
qi(X):=ZG(X)Ci(tr1(X),⋯,trN(X),tr1(gX),⋯,trN(gX))
通过借助2个随机值
a
i
,
b
i
\mathfrak{a}_i,\mathfrak{b}_i
ai,bi,将以上有理函数的degree调整到某足够大的power of two
D
D
D值,将调整后的个多项式
q
^
i
:
=
(
a
i
X
D
−
deg
(
q
i
)
−
1
+
b
i
)
⋅
q
i
(
X
)
\hat{q}_i:=(\mathfrak{a}_iX^{D-\deg{(q_i)}-1}+\mathfrak{b}_i)\cdot q_i(X)
q^i:=(aiXD−deg(qi)−1+bi)⋅qi(X)求和之后,即得到相应的quotient多项式
Q
Q
Q。
vanilla STARK协议等式(8)中的quotient多项式 Q Q Q存在2个主要问题:
- 1)所引入的随机值 a i , b i \mathfrak{a}_i,\mathfrak{b}_i ai,bi的个数,与约束数成比例。
- 2)目前为止,ethSTARK及其它文档中,并未提供为何需要这种degree调整的证明。
为此,本文修改为引入单个随机值
a
\mathfrak{a}
a,并将quotient多项式定义为有理函数
q
i
q_i
qi的随机线性组合:
Q
(
X
)
:
=
∑
i
=
1
l
a
i
−
1
q
i
(
X
)
Q(X):=\sum_{i=1}^{l}\mathfrak{a}^{i-1}q_i(X)
Q(X):=∑i=1lai−1qi(X)
这样:
- 1)不仅移除了对 q i q_i qi的degree调整
- 2)还使用单个随机值 a \mathfrak{a} a的powers,来代替,需对每个约束采样一个随机值 的情况。
本文对quotient多项式计算方式的这种修改,是足够可靠的,详细分析见:
- Ulrich Hab¨ock 2022年论文A summary on the FRI low degree test中的Theorem 7,其基于Eli Ben-Sasson等人2020年论文Proximity gaps for reed-solomon codes中的Theorem 7.2。
最重要的是,修改后的soundness上限,随约束数 l l l线性增加,因此自此可假设 l l l为sublinear in ∣ K ∣ |\mathbb{K}| ∣K∣,以确保协议的安全性。
参考资料
[1] Polygon zkEVM技术文档 eSTARK: Extending the STARK Protocol with Arguments v.1.2
附录:Polygon Hermez 2.0 zkEVM系列博客
- ZK-Rollups工作原理
- Polygon zkEVM——Hermez 2.0简介
- Polygon zkEVM网络节点
- Polygon zkEVM 基本概念
- Polygon zkEVM Prover
- Polygon zkEVM工具——PIL和CIRCOM
- Polygon zkEVM节点代码解析
- Polygon zkEVM的pil-stark Fibonacci状态机初体验
- Polygon zkEVM的pil-stark Fibonacci状态机代码解析
- Polygon zkEVM PIL编译器——pilcom 代码解析
- Polygon zkEVM Arithmetic状态机
- Polygon zkEVM中的常量多项式
- Polygon zkEVM Binary状态机
- Polygon zkEVM Memory状态机
- Polygon zkEVM Memory Align状态机
- Polygon zkEVM zkASM编译器——zkasmcom
- Polygon zkEVM哈希状态机——Keccak-256和Poseidon
- Polygon zkEVM zkASM语法
- Polygon zkEVM可验证计算简单状态机示例
- Polygon zkEVM zkASM 与 以太坊虚拟机opcode 对应集合
- Polygon zkEVM zkROM代码解析(1)
- Polygon zkEVM zkASM中的函数集合
- Polygon zkEVM zkROM代码解析(2)
- Polygon zkEVM zkROM代码解析(3)
- Polygon zkEVM公式梳理
- Polygon zkEVM中的Merkle tree
- Polygon zkEVM中Goldilocks域元素circom约束
- Polygon zkEVM Merkle tree的circom约束
- Polygon zkEVM FFT和多项式evaluate计算的circom约束
- Polygon zkEVM R1CS与Plonk电路转换
- Polygon zkEVM中的子约束系统
- Polygon zkEVM交易解析
- Polygon zkEVM 审计及递归证明
- Polygon zkEVM发布公开测试网2.0
- Polygon zkEVM测试集——创建合约交易
- Polygon zkEVM中的Recursive STARKs
- Polygon zkEVM的gas定价
- Polygon zkEVM zkProver基本设计原则 以及 Storage状态机
- Polygon zkEVM bridge技术文档
- Polygon zkEVM Trustless L2 State Management 技术文档
- Polygon zkEVM中的自定义errors
- Polygon zkEVM RPC服务
- Polygon zkEVM Prover的 RPC功能
- Polygon zkEVM PIL技术文档
- Polygon zkEVM递归证明技术文档(1)【主要描述了相关工具 和 证明的组合、递归以及聚合】
- Polygon zkEVM递归证明技术文档(2)—— Polygon zkEVM架构设计
- Polygon zkEVM递归证明技术文档(3)——代码编译及运行
- Polygon zkEVM递归证明技术文档(4)—— C12 PIL Description
- Polygon zkEVM递归证明技术文档(5)——附录:借助SNARKjs和PIL-STARK实现proof composition
- eSTARK:Polygon zkEVM的扩展STARK协议——支持lookup、permutation、copy等arguments(1)