eSTARK:Polygon zkEVM的扩展STARK协议——支持lookup、permutation、copy等arguments(2)

前序博客有:

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 ft,用于检查 f f f t t t 互为 permutation。

因此,permutation argument可实例化为计算如下grand product 多项式 Z ∈ K < n [ X ] Z\in\mathbb{K}_{<n}[X] ZK<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)={1j=1i1(tj+γ)(fj+γ)if i=1if i=2,,n
其中 γ ∈ K \gamma \in \mathbb{K} γK 为Verifier发来的随机挑战值。

然后Verifier必须检查如下 identities for x ∈ G x\in G xG
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(xg)(t(x)+γ)=Z(x)(f(x)+γ),(15)

其中:

  • f , t ∈ F < n [ X ] f,t\in\mathbb{F}_{<n}[X] f,tF<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(Xg)g(Xn1):为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<in
  • 注意 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 ft

2.5.2 Connection Argument

本协议中的connection argument改编自PLONK中的定义和结论。
已知向量 f 1 , ⋯   , f k ∈ F n f_1,\cdots, f_k\in\mathbb{F}^n f1,,fkFn 和 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((i1)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] ZK<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)={1l=1kj=1n(fl,j+γσ((l1)n+j)+δ)(fl,j+γ((l1)n+j)+δ)if i=1if i=2,,n
其中 γ , δ ∈ K \gamma,\delta\in\mathbb{K} γ,δK为由Verifier发送的随机挑战。
然后Verifier必须检查如下identities for x ∈ G x\in G xG
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(xg)=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=(i1)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=σ((i1)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,,fkF[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=1kj=1n(fl,j+γ((l1)n+j)+δ)=l=1kj=1n(fl,j+γσ((l1)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 ft,用于检查由 { 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,Bn
在该协议中,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 ft,则 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,h2Fn。在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,,s2n1),h2=(s2,s4,s6,,s2n),(17)

    因此该lookup argument可实例化为计算如下grand product 多项式 Z ∈ K < n [ X ] Z\in\mathbb{K}_{<n}[X] ZK<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+γ)i1j=1i1(δ(1+γ)+s2j1+γ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 xG
    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(xg)=Z(x)(δ(1+γ)+h1(x)+γh2(x))(δ(1+γ)+h2(x)+γh1(xg))(1+γ)(δ+f(x))(δ(1+γ)+t(x)+γt(gx)),(18)
    其中:

  • f , t ∈ F < n [ X ] f,t\in \mathbb{F}_{<n}[X] f,tF<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,h2F<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):=(4n2)/∣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=1n(δ+fi)i=1n1(δ(1+γ)+ti+γti+1)=i=12n1(δ(1+γ)+si+γsi+1),
    f ∈ t f\in t ft 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,,fNK<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 h2leaf hmH(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 batchSize3,从而使得多项式实现在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,,crF,以:
    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 xG,满足:
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 ggn点的evaluation值,是公开值。因为等式(19)满足,当且仅当 tr 1 ( g ) = 7 且 tr 1 ( g n ) = 3 \text{tr}_1(g)=7且\text{tr}_1(g^n)=3 tr1(g)=7tr1(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,tiK<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 xG,存在某 y ∈ G y\in G yG,使得:
      ( 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 yG,存在有且仅有一个 x ∈ G x\in G xG,使得如上等式(20)成立。即,(vector)multiset equalities定义了某双向映射。

为将之前的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=1Nαi1fi(X),T(X):=i=1Nαi1ti(X),(21)
并继续证明relation F ′ ∈ T ′ F'\in T' FT F ′ ≐ T ′ F'\doteq T' FT

需注意的是,即使 f i , t i f_i,t_i fi,ti中的每个系数都是基于基域 F \mathbb{F} F的,但 F ′ 和 T ′ F'和T' FT为通用多项式,其系数都是基于扩域 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(N1)/∣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(N1)/∣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(N1)/∣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,tiK<n[X],同时额外引入2个多项式 f s e l , t s e l ∈ K < n [ X ] f^{sel},t^{sel}\in\mathbb{K}_{<n}[X] fsel,tselK<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,tselselectors
    • 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 xG,存在某 y ∈ G y\in G yG,使得:
      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 yG,存在有且仅有一个 x ∈ G x\in G xG,使得如上等式(22)成立。即,selected(vector)multiset equalities定义了某双向映射。

注意:

  • 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,TK<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 FT

需注意的是,以上等式(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,TK<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 FT

Lemma 6:

  • 针对上面的等式(23)和(24),可知,基于独立随机选择的 α , β \alpha,\beta α,β,reduce之后相应的selected simple inclusionselected simple multiset equalities 的exception概率均为 n ⋅ ( N − 1 ) / ∣ K ∣ n\cdot (N-1)/|\mathbb{K}| n(N1)/∣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,tiK<n[X],和selectors f s e l , t s e l ∈ K < n [ X ] f^{sel},t^{sel}\in\mathbb{K}_{<n}[X] fsel,tselK<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] TK<2n1[X],FK<3n1[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 xG,额外增加(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) nKN1+εlookup(3n1)
      则有 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,TK<2n1[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 xG,额外增加(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) nKN1+εPerm(2n1)
      则有 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 xG,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,tr5F<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} tr1tr3,tr3tr4,(tr2,tr1,tr5)(Sσ1,Sσ2,Sσ3)(25)
其中 ≐ \doteq 表示 tr 3 和 tr 4 \text{tr}_3和 \text{tr}_4 tr3tr4 互为permutation,但不指定具体的permutation规则。

根据之前章节,以及3.6节,对于所有的 x ∈ G x\in G xG,可将等式(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,jF<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 xG,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框架描述示意如下:
在这里插入图片描述
借助:

同时对于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)Kn(N1)+εInc(n)M1+M2εInc(2n1)M3εMulEq(n)M1+M2εMulEq(3n1)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:=(aiXDdeg(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=1lai1qi(X)

这样:

  • 1)不仅移除了对 q i q_i qi的degree调整
  • 2)还使用单个随机值 a \mathfrak{a} a的powers,来代替,需对每个约束采样一个随机值 的情况。

本文对quotient多项式计算方式的这种修改,是足够可靠的,详细分析见:

最重要的是,修改后的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系列博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值