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

前序博客有:

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

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​,⋯,Mt−1​,S0​,⋯,Sq−1​,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​,⋯,Mt−1​解析为函数: { 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}logn→F。任何 { 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,⋯,m−1}×{0,1,⋯,n−1}的二进制表示。该函数的输出为矩阵中第 ( i , j ) (i,j) (i,j)个元素。

Spartan背景知识参见:

  • 博客Spartan: zkSNARKS without trusted setup学习笔记
  • 博客Spartan: zkSNARKS without trusted setup 源代码解析
  • 博客Spartan中 Vitalik R1CS例子 SNARK证明基本思路

将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​,⋯,Mt−1​,S0​,⋯,Sq−1​,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​,⋯,Mt−1​解析为函数: { 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}logn→F。
  • 将 Z Z Z解析为函数: { 0 , 1 } log ⁡ n → F \{0,1\}^{\log n}\rightarrow \mathbb{F} {0,1}logn→F。
  • 将 ( 1 , x ) (1,x) (1,x)解析为函数: { 0 , 1 } log ⁡ n − 1 → F \{0,1\}^{\log n-1}\rightarrow \mathbb{F} {0,1}logn−1→F。【此时假设 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~表示为:
t i l d e 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) tildeZ(X0​,⋯,Xlogn−1​)=(1−X0​)⋅W (X1​,⋯,Xlogn−1​)+X0​⋅(1,x) ​(X1​,⋯,Xlogn−1​)           (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​,⋯,xlogn−1​)∈{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​,⋯,xlogn−1​)=Z((x0​,⋯,xlogn−1​))。(因为 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​,⋯,Xlogn−1​)的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}\widetilde{(1,x)})(X_1,\cdots,X_l) (X1​,⋯,Xlogn−1​)→(1−Xl+1​)⋅(1−Xl+2​)⋯⋅(1−Xlogn−1​(1,x) ​)(X1​,⋯,Xl​)

使得该multilinear多项式对于所有的inputs ( x 1 , ⋯ , x log ⁡ n − 1 ) (x_1,\cdots,x_{\log n-1}) (x1​,⋯,xlogn−1​)对应填充后的 ( 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 m r_a\in\mathbb{F}^m ra​∈Fm”。且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,⋯,t−1}:

对该计算,可并行执行 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,⋯,γt−1]。

在该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~t−1​,根据方程式(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~t−1​ 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,⋯,D−1}的索引以二进制表示。整数 D − 1 D-1 D−1的索引可以全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=0logD−1​ij​⋅2j对应 i i i所表示的整数。对于整数 κ ∈ { 0 , 1 , ⋯ , t − 1 } \kappa \in\{0,1,\cdots,t-1\} κ∈{0,1,⋯,t−1}, 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} wAIR​∈F(m−1)⋅t/2,zAIR​∈F(m+1)⋅t/2。同时 m m m表示CCS矩阵 M 0 , ⋯ , M t − 1 M_0,\cdots,M_{t-1} M0​,⋯,Mt−1​的行数。本节还假设 m − 1 m-1 m−1为a power of 2,同时对 M 0 , ⋯ , M t − 1 M_0,\cdots,M_{t-1} M0​,⋯,Mt−1​填充补零,使得其行数为a power of 2(该填充不会增加SuperSpartan中的Verifier或Prover time)。即意味着填充后的 M 0 , ⋯ , M t − 1 M_0,\cdots,M_{t-1} M0​,⋯,Mt−1​的行数不再为 m m m,而是 2 ( m − 1 ) 2(m-1) 2(m−1)。
这样处理便于基于实际域做实现,并借助上一节的 “adding 1 in binary”函数的multilinear extension,对由AIR转换来的CCS实际表达做了进一步优化。

5.3 避免SIMD CCS中的预处理

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


Customizable constraint systems for succinct arguments学习笔记(2)相关推荐

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

    1. 引言 微软研究中心Srinath Setty.a16z crypto research 和 Georgetown University Justin Thaler.Carnegie Mellon ...

  2. Subvector Commitments with Application to Succinct Arguments学习笔记

    1. 背景知识 Russell W. F. Lai 和 Giulio Malavolta 在Crypto 2019上发表的论文<Subvector Commitments with Applic ...

  3. Linear Algebra with Sub-linear Zero-Knowledge Arguments学习笔记

    1. 引言 Groth 2009年论文<Linear Algebra with Sub-linear Zero-Knowledge Arguments>. 已知2个matrices A,B ...

  4. 架构设计 之一 C 嵌入式设计模式(Design Patterns for Embedded Systems in C)学习笔记

    前言   时至今日,已经不知道在嵌入式的道路上到底挣扎了多少个岁月,总感觉要"病入膏肓"了.此间总是不时出现一些疑惑:人家搞 Java.搞 C# 的动不动就是什么架构 / 框架的, ...

  5. CST(Crypto Systems Toolkit) 7.1学习笔记-chapter6

    6,加密入门  6.1,使用密码则安全   非对称加密包括RSA,DSA,Diffie-Hellman...   对称加密包括DES, Triple DES,RC2,RC4,IDEA,RC5,Blow ...

  6. Vector Commitment Techniques and Applications to Verifiable Decentralized Storage学习笔记

    1. 引言 Campanelli等人 2020年论文<Vector Commitment Techniques and Applications to Verifiable Decentrali ...

  7. Linear-time zero-knowledge proofs for arithmetic circuit satisfiability 学习笔记

    1. 引言 Bootle等人2017年论文<Linear-time zero-knowledge proofs for arithmetic circuit satisfiability> ...

  8. Practical Zero-Knowledge Protocols Based on the Discrete Logarithm Assumption 学习笔记 1

    1. 引言 Stephanie Bayer 2013年博士论文 <Practical Zero-Knowledge Protocols Based on the Discrete Logarit ...

  9. PLONK: permutations over lagrange-bases for oecumenical noninteractive arguments of knowledge 学习笔记

    1. 引言 Gabizon等人2019年论文<PLONK: permutations over lagrange-bases for oecumenical noninteractive arg ...

最新文章

  1. 动态规划 最小编辑代价
  2. 配置一台路由器,两台电脑的重点
  3. BCB写的简单的EXCEL合并
  4. hadoop streaming编程小demo(python版)
  5. Azure SQL Database (1) 用户手册
  6. 信息奥赛一本通(1096:数字统计)
  7. MySQL--流程控制
  8. Unix/Linux Command Reference
  9. 【POJ2774】Long Long Message(求两个字符串的最长公共子串----后缀数组)
  10. java虚拟机安装_java虚拟机官方下载|Java Virtual Machine(java虚拟机)下载v5.0官方版 附安装教程 - 欧普软件下载...
  11. html引入思源黑体
  12. “软件工程造价师”和“软件造价评估师”有什么区别?
  13. Linux驱动开发|UART驱动
  14. powerbi导入地图_PowerBI 地图 - 层级下钻形状地图最佳实践
  15. 运行内存扩展器(RAM)扩大,最高达2.5g
  16. node-sass是什么?
  17. 虚拟资源素材商品交易平台网站源码
  18. 写论文要学python的哪些部分组成_一篇完整的论文由哪几个部分组成
  19. 深入软件测试(vi)
  20. vue中使用echarts折现图表(多图表与定时递归刷新图表解决方案在附录1、2中)

热门文章

  1. CPU占用率高 主板显卡温度高 不妨看看是不是内存条的问题
  2. optimizer.load_state_dict()
  3. RNA修饰质谱检测|dextran-siRNA 葡聚糖化学偶联DNA/RNA|siRNA-PLGA聚乳酸-羟基乙酸共聚物修饰核糖核酸
  4. 如何将新闻稿发布到门户网站?
  5. 无人机视频回传 5G视频回传 5G无人机回传
  6. 一款根据图片内的文字,把图片分类的软件
  7. 推荐一个靠谱的ubuntu镜像源网站
  8. 安卓手机从开机到桌面,系统经历的过程有哪些?
  9. Pepper/Nao初级教程:第三章 Choregraphe用法 (Pepper与Nao本质是同一种机器人)
  10. PS - Photoshop 抠图与剪贴蒙版功能与 Stable Diffusion 重绘