Customizable constraint systems for succinct arguments学习笔记(2)

微软研究中心Srinath Setty、a16z crypto research 和 Georgetown University Justin Thaler、Carnegie Mellon University Riad Wahby 20203年论文《Customizable constraint systems for succinct arguments》。

前序博客有:

4. SuperSpartan的Polynomial IOP for CCS

本节讨论的“SuperSpartan的Polynomial IOP for CCS”,为“Spartan [Set20] polynomial IOP for R1CS”的扩展。附录C中展示了如何扩展SuperSpartan的polynomial IOP来处理CCS+(即具有lookup操作的CCS)。

根据Definition 2.2,假定有某CCS structure-instance tuple with size bounds:
( ( m , n , l , t , q , d ) , ( M 0 , ⋯   , M t − 1 , S 0 , ⋯   , S q − 1 , x ) ) ((m,n,l,t,q,d),(M_0,\cdots,M_{t-1},S_0,\cdots,S_{q-1},x)) ((m,n,l,t,q,d),(M0,,Mt1,S0,,Sq1,x))

为简便表示,令协议中的 m , n m,n m,n均为powers of 2(若不是,则对每个矩阵 M i M_i Mi以及witness vector z z z进行补零,扩展 m , n m,n m,n均为powers of 2,在以下SNARK协议中,并不会增加SNARK中的Prover time或Verifier time)。

将矩阵 M 0 , ⋯   , M t − 1 M_0,\cdots, M_{t-1} M0,,Mt1解析为函数: { 0 , 1 } log ⁡ m × { 0 , 1 } log ⁡ n → F \{0,1\}^{\log m}\times \{0,1\}^{\log n}\rightarrow \mathbb{F} {0,1}logm×{0,1}lognF。任何 { 0 , 1 } log ⁡ m × { 0 , 1 } log ⁡ n \{0,1\}^{\log m}\times \{0,1\}^{\log n} {0,1}logm×{0,1}logn格式的输入都可解析为是索引 ( i , j ) ∈ { 0 , 1 , ⋯   , m − 1 } × { 0 , 1 , ⋯   , n − 1 } (i, j)\in\{0,1,\cdots,m-1\}\times\{0,1,\cdots,n-1\} (i,j){0,1,,m1}×{0,1,,n1}的二进制表示。该函数的输出为矩阵中第 ( i , j ) (i,j) (i,j)个元素。

Spartan背景知识参见:

将Spartan中R1CS扩展为CCS表示:
在这里插入图片描述
Remark 10:

  • Theorem 1中Prover runtime中的 O ( q m d log ⁡ 2 d ) O(qmd\log^2d) O(qmdlog2d)项中包含了使用FFT来将 d d d个不同的degree为1 的多项式相乘。FFT仅适于某些有限域。
    此外,实际的CCS/AIR/Plonkish instance,其 d d d很少会超过100,通常低至5甚至是2 [GPR21, BGtRZt23]。因此,FFT的 O ( d log ⁡ 2 d ) O(d\log^2d) O(dlog2d) time要远远慢于 直接将 d d d个degree为1的多项式相乘的 O ( d 2 ) O(d^2) O(d2) time。使用Karatsuba算法来代替FFT,也可获得sub-quadratic-in- d d d time算法,且适于任何有限域。

Theorem 1证明:
对于某CCS structure和instance, I = ( M 0 , ⋯   , M t − 1 , S 0 , ⋯   , S q − 1 , x ) \mathcal{I}=(M_0,\cdots,M_{t-1}, S_0,\cdots,S_{q-1},x) I=(M0,,Mt1,S0,,Sq1,x)和声称的witness W W W。令 Z = ( W , 1 , x ) Z=(W,1,x) Z=(W,1,x)
如之前所述,可:

  • 将矩阵 M 0 , ⋯   , M t − 1 M_0,\cdots, M_{t-1} M0,,Mt1解析为函数: { 0 , 1 } log ⁡ m × { 0 , 1 } log ⁡ n → F \{0,1\}^{\log m}\times \{0,1\}^{\log n}\rightarrow \mathbb{F} {0,1}logm×{0,1}lognF
  • Z Z Z解析为函数: { 0 , 1 } log ⁡ n → F \{0,1\}^{\log n}\rightarrow \mathbb{F} {0,1}lognF
  • ( 1 , x ) (1,x) (1,x)解析为函数: { 0 , 1 } log ⁡ n − 1 → F \{0,1\}^{\log n-1}\rightarrow \mathbb{F} {0,1}logn1F。【此时假设 Z Z Z中witness W W W ( 1 , x ) (1,x) (1,x)具有相同的长度 n / 2 n/2 n/2。】

函数 Z Z Z的MLE Z ~ \tilde{Z} Z~表示为:
Z ~ ( X 0 , ⋯   , X log ⁡ n − 1 ) = ( 1 − X 0 ) ⋅ W ~ ( X 1 , ⋯   , X log ⁡ n − 1 ) + X 0 ⋅ ( 1 , x ) ~ ( X 1 , ⋯   , X log ⁡ n − 1 )             ( 13 ) \tilde{Z}(X_0,\cdots,X_{\log n -1})=(1-X_0)\cdot \widetilde{W}(X_1,\cdots,X_{\log n-1})+ X_0\cdot \widetilde{(1,x)}(X_1,\cdots,X_{\log n-1})\ \ \ \ \ \ \ \ \ \ \ (13) Z~(X0,,Xlogn1)=(1X0)W (X1,,Xlogn1)+X0(1,x) (X1,,Xlogn1)           (13)

可看出方程式(13)中的右侧为multilinear多项式。对于所有的 ( x 0 , ⋯   , x log ⁡ n − 1 ) ∈ { 0 , 1 } log ⁡ n (x_0,\cdots,x_{\log n -1})\in\{0,1\}^{\log n} (x0,,xlogn1){0,1}logn,很容易检查有 Z ~ ( x 0 , ⋯   , x log ⁡ n − 1 ) = Z ( x 0 , ⋯   , x log ⁡ n − 1 ) \tilde{Z}(x_0,\cdots,x_{\log n -1})=Z(x_0,\cdots,x_{\log n -1}) Z~(x0,,xlogn1)=Z(x0,,xlogn1)。(因为 Z Z Z evaluations的前半部分对应 W W W,后半部分对应vector ( 1 , x ) (1,x) (1,x)。)
因此方程式(13)中的右侧为 Z Z Z的唯一multilinear extension。

( 1 , x ) (1,x) (1,x)长度小于 W W W长度(如当根据Lemma 3将AIR转换为CCS)时,可对 x x x填充补零获得 x p a d x_{pad} xpad,使其填充后 ( 1 , x p a d ) (1,x_{pad}) (1,xpad)的长度与 W W W一样。这样填充补零后,会让Verifier计算 ( 1 , x ) ~ ( X 1 , ⋯   , X log ⁡ n − 1 ) \widetilde{(1,x)}(X_1,\cdots,X_{\log n-1}) (1,x) (X1,,Xlogn1)的time增加 O ( log ⁡ n ) O(\log n) O(logn)次field加法运算。如,若未填充 ( 1 , x ) (1,x) (1,x)长度为 2 l 2^l 2l,则很容易检查具有length为 n / 2 n/2 n/2的填充 ( 1 , x p a d ) (1,x_{pad}) (1,xpad)的multilinear extension为:
( X 1 , ⋯   , X log ⁡ n − 1 ) → ( 1 − X l + 1 ) ⋅ ( 1 − X l + 2 ) ⋯ ⋅ ( 1 − X log ⁡ n − 1 ) ⋅ ( 1 , x ) ~ ( X 1 , ⋯   , X l ) (X_1,\cdots,X_{\log n -1})\rightarrow (1-X_{l+1})\cdot (1-X_{l+2})\cdots\cdot (1-X_{\log n -1})\cdot\widetilde{(1,x)}(X_1,\cdots,X_l) (X1,,Xlogn1)(1Xl+1)(1Xl+2)(1Xlogn1)(1,x) (X1,,Xl)

使得该multilinear多项式对于所有的inputs ( x 1 , ⋯   , x log ⁡ n − 1 ) (x_1,\cdots,x_{\log n-1}) (x1,,xlogn1)对应填充后的 ( 1 , x p a d ) (1,x_{pad}) (1,xpad),可认为其是填充后 ( 1 , x p a d ) (1,x_{pad}) (1,xpad)的唯一multilinear多项式。

与Spartan论文Theorem 4.1类似,对由Spartan R1CS转换的CCS的“SuperSpartan的Polynomial IOP for CCS”协议为:
在这里插入图片描述
可对方程式(14)右侧的多项式应用sum-check协议:
在这里插入图片描述

从Verifier的角度来看,这可将方程式(14)右侧的计算 reduce为 "evaluate g g g at a random input r a ∈ F log ⁡ m r_a\in\mathbb{F}^{\log m} raFlogm。且Verifier 可自己以 O ( log ⁡ m ) O(\log m) O(logm)次field运算来计算 e q ~ ( τ , r a ) \tilde{eq}(\tau,r_a) eq~(τ,ra),因其易于检查:
在这里插入图片描述
当Verifier计算出 e q ~ ( τ , r a ) \tilde{eq}(\tau,r_a) eq~(τ,ra)值之后,Verifier计算 g ( r a ) g(r_a) g(ra)的time为 O ( d q ) O(dq) O(dq)。对于 i ∈ { 0 , 1 , ⋯   , t − 1 } i\in\{0,1,\cdots,t-1\} i{0,1,,t1}
在这里插入图片描述
对该计算,可并行执行 t t t个sum-check协议:为此,引入随机数 γ ∈ F \gamma\in\mathbb{F} γF,并对 M ~ i ( r a , y ) ⋅ Z ~ ( y ) \tilde{M}_i(r_a,y)\cdot \tilde{Z}(y) M~i(ra,y)Z~(y)做random linear combination,权重分别为 [ γ 0 , ⋯   , γ t − 1 ] [\gamma^0,\cdots,\gamma^{t-1}] [γ0,,γt1]

在该sum-check协议中,Verifier在做final check时:仅需对以上 t t t个多项式 M ~ i ( r a , y ) ⋅ Z ~ ( y ) \tilde{M}_i(r_a,y)\cdot \tilde{Z}(y) M~i(ra,y)Z~(y) evaluate at r y r_y ry,即意味着Verifier evaluate M ~ i ( r a , r y ) \tilde{M}_i(r_a,r_y) M~i(ra,ry)就足矣。这样的前提假设是Verifier具有query access to M ~ 0 , ⋯   , M ~ t − 1 \tilde{M}_0,\cdots,\tilde{M}_{t-1} M~0,,M~t1,根据方程式(13),Verifier仅需对 W ~ \tilde{W} W~ ( 1 , x ) ~ \widetilde{(1,x)} (1,x) 各query一次就可获得 Z ~ ( r y ) \tilde{Z}(r_y) Z~(ry)

本文所实现的“SuperSpartan的Polynomial IOP for CCS”协议伪代码实现为:
在这里插入图片描述

总之,本文所实现的“SuperSpartan的Polynomial IOP for CCS”协议具有如下属性:
在这里插入图片描述
根据上面的“SuperSpartan的Polynomial IOP for CCS”协议伪代码可知,其包含了2次sum-check协议调用:

  • 1)在3.a步骤中第一次触发sum-check协议时,Prover主要工作量为:
    在这里插入图片描述
    在这里插入图片描述
  • 2)在3.c步骤中第二次调用sum-check协议,对应为 log ⁡ n \log n logn个变量的多项式:
    在这里插入图片描述
    其每个变量的degree最多为2。在sum-check协议中采用标准的linear-time-sum-check技术[CTY12, Tha13],Prover的用时为 O ( N + t ) O(N+t) O(N+t)

5. 避免uniform IR中的预处理

当CCS instance中有“uniform” structure时(如某circuit具有多个相同的sub-circuit),为实现succinct verification cost,应避免对circuit structure的预处理。
对于uniform CCS instance,本文实现了:

  • Verifier可evaluate the multilinear extension polynomials M ~ 0 , ⋯   , M ~ t − 1 \tilde{M}_0,\cdots,\tilde{M}_{t-1} M~0,,M~t1 at any desired point in time logarithmic in the number of rows and columns of these matrices。

5.1 “adding 1 in binary”函数的multilinear extension

可将整数 { 0 , 1 , ⋯   , D − 1 } \{0,1,\cdots, D-1\} {0,1,,D1}的索引以二进制表示。整数 D − 1 D-1 D1的索引可以全1向量表示,整数0索引可以全零向量表示。在这种索引表示法中,可将最右侧的bit看成是low-order bit。

对于某bit-vector i ∈ { 0 , 1 } log ⁡ D i\in\{0,1\}^{\log D} i{0,1}logD,令 to-int ( i ) = ∑ j = 0 log ⁡ D − 1 i j ⋅ 2 j \text{to-int}(i)=\sum_{j=0}^{\log D-1}i_j\cdot 2^j to-int(i)=j=0logD1ij2j对应 i i i所表示的整数。对于整数 κ ∈ { 0 , 1 , ⋯   , t − 1 } \kappa \in\{0,1,\cdots,t-1\} κ{0,1,,t1} bin ( κ ) \text{bin}(\kappa) bin(κ)表示 κ \kappa κ对应的二进制表示。

定义函数:
next ( i , j ) : { 0 , 1 } log ⁡ D × { 0 , 1 } log ⁡ D → { 0 , 1 } \text{next}(i,j):\{0,1\}^{\log D}\times \{0,1\}^{\log D}\rightarrow \{0,1\} next(i,j):{0,1}logD×{0,1}logD{0,1}
其中:

  • i , j i,j i,j为bit-vector输入
  • 当且仅当整数 I = to-int ( i ) I=\text{to-int}(i) I=to-int(i)和整数 J = to-int ( j ) J=\text{to-int}(j) J=to-int(j)满足 J = I + 1 J=I+1 J=I+1时,该函数输出为1,否则为0。

因此可将该函数称为“adding 1 in binary”函数:

  • 输入为2个bit-vector,判断第2个输入的整数 是否 为第1个输入整数加1。

注意:

  • i i i为全1向量,则对于所有的 j ∈ { 0 , 1 } log ⁡ D j\in\{0,1\}^{\log D} j{0,1}logD,都有 ( i , j ) = 0 (i,j)=0 (i,j)=0

从而有Theorem 2:
在这里插入图片描述
实际分析时分为3种情况:
在这里插入图片描述
接下来是解释方程式(16)可evaluate at any point ( r x , r y ) ∈ F log ⁡ D × F log ⁡ D (r_x,r_y)\in\mathbb{F}^{\log D}\times \mathbb{F}^{\log D} (rx,ry)FlogD×FlogD in O ( log ⁡ D ) O(\log D) O(logD) time:

  • 很容易看出 h ( r x , r y ) h(r_x,r_y) h(rx,ry)可evaluate in O ( log ⁡ D ) O(\log D) O(logD) time。
  • g g g中每个求和项可evaluate at ( r x , r y ) (r_x,r_y) (rx,ry) in O ( log ⁡ D ) O(\log D) O(logD) time。
  • g g g中共有 O ( log ⁡ D ) O(\log D) O(logD)个求和项,因此总的time bound 为 O ( log ⁡ D 2 ) O(\log D^2) O(logD2)
  • 不过,求和的相邻项中有几乎相同的因子,该runtime可reduce为 O ( log ⁡ m ) O(\log m) O(logm)。如,若 v ( k ) v(k) v(k)为求和中的第 k k k项,则:
    在这里插入图片描述
    在这里插入图片描述

5.2 由AIR转换来的CCS

本小节中, m m m表示AIR的参数,有 w A I R ∈ F ( m − 1 ) ⋅ t / 2 , z A I R ∈ F ( m + 1 ) ⋅ t / 2 w_{AIR}\in\mathbb{F}^{(m-1)\cdot t/2},z_{AIR}\in\mathbb{F}^{(m+1)\cdot t/2} wAIRF(m1)t/2zAIRF(m+1)t/2。同时 m m m表示CCS矩阵 M 0 , ⋯   , M t − 1 M_0,\cdots,M_{t-1} M0,,Mt1的行数。本节还假设 m − 1 m-1 m1为a power of 2,同时对 M 0 , ⋯   , M t − 1 M_0,\cdots,M_{t-1} M0,,Mt1填充补零,使得其行数为a power of 2(该填充不会增加SuperSpartan中的Verifier或Prover time)。即意味着填充后的 M 0 , ⋯   , M t − 1 M_0,\cdots,M_{t-1} M0,,Mt1的行数不再为 m m m,而是 2 ( m − 1 ) 2(m-1) 2(m1)
这样处理便于基于实际域做实现,并借助上一节的 “adding 1 in binary”函数的multilinear extension,对由AIR转换来的CCS实际表达做了进一步优化。

5.3 避免SIMD CCS中的预处理

6. 将Polynomial IOP for CCS编译为SNARK for CCS

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值