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

news2024/12/19 3:42:46

微软研究中心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,,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: 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,,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~表示为:
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,,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}\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 m r_a\in\mathbb{F}^m raFm”。且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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/612403.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

别小瞧,搬迁网络机房,讲究的可不少

大家好,我的网工朋友 最近围观咱们网工交流群,不少朋友提到机房搬迁这档子事,毕竟嘛,做到这方面项目的概率还是很高的。 别看机房搬迁很简单,其实可讲究了。 随着企业、单位的不断深入发展,机房搬迁&…

【正点原子STM32连载】 第二十六章 USMART调试组件实验摘自【正点原子】STM32F103 战舰开发指南V1.2

1)实验平台:正点原子stm32f103战舰开发板V4 2)平台购买地址:https://detail.tmall.com/item.htm?id609294757420 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html 第二十…

记录搭建hadoop集群的过程

Linux(CentOS-7.6-x64位)基础配置, 虚拟机平台VmWare15 CentOS-7.6-x64镜像下载: https://www.aliyundrive.com/s/72Xg449t6i8 提取码: 32rm VmVare15安装包下载带序列号:VmVare15安装包下载带激活序列号资源-CSDN文库 点击关闭,点击完成&…

NineData,稳定、高效的Redis数据同步解决方案

在 DB-Engines 网站的排名中,Redis 在 Key-value 存储的NoSQL领域连续霸榜多年,是目前最流行的键值对存储数据库,被广泛用于缓存、队列、实时分析等多种高并发的场景中。在生产环境中,我们会遇到对Redis进行版本升级和架构的扩缩容…

vue 自定义el-table穿梭框功能

一、需求描述:前段时间接到一个需求是点击做一个类似穿梭框的表格点击选中功能,弹框的左边是全部数据展示,点击表格行数据可以选中自动增加到右边的已选框,并且可以手动删除、重置选中数据。点击确定后到展示到主页面,…

深入理解Linux虚拟内存管理(四)

系列文章目录 Linux 内核设计与实现 深入理解 Linux 内核(一) 深入理解 Linux 内核(二) Linux 设备驱动程序(一) Linux 设备驱动程序(二) Linux 设备驱动程序(三&#xf…

精选一线企业最佳生产实践,《Apache Doris 用户案例集》重磅发布!

过去的一年势必是 Apache Doris 在发展历程中有着浓墨重彩的一年,凭借对技术创新的执着与用户体验的追求,Apache Doris 已俘获全球范围内超过 2000 家企业的认可,拥有了极为广泛的用户规模、在企业实时数据分析的多种场景中得到广泛应用&…

热门AI通用大模型对比盘点(附论文)

今天我来和大家聊聊通用大模型,垂直领域大模型等整理完了再和大家分享。大家可以先关注一下我,有更新可以立马看见。 本文文末有整理好的通用大模型论文,都是各个大模型的原始论文,强烈建议大模型方向的同学,或者对大…

突破软件交付不可能三角,企业级无代码如何实现卓越交付?

一、VUCA时代下项目交付面临的困境 软件开发或软件项目交付一直以来都存在着“不可能三角”,即成本、效率和质量三者难以兼得。 交付周期长、成本高、满意度低等一直是行业内长期存在的现象,甚至软件交付双方都习以为常。传统项目管理与软件实施过程难…

Niagara—— Texture Sample 与 Particle Subuv 区别

一,Texture Sample 此节点是最基本的采样节点,依据UV坐标来采样Texture; MipValueMode,设置采样的Mipmap Level; None,根据当前Texture大小和物理缩放,自动选择合适的 Mipmap Level &#xff1b…

行为型设计模式03-观察者模式

🧑‍💻作者:猫十二懿 🏡账号:CSDN 、个人博客 、Github 🎊公众号:猫十二懿 观察者模式 1、观察者模式介绍 观察者模式是一种行为型设计模式,也被称为发布-订阅模式,它定…

Hive学习---4、函数(单行函数、高级聚合函数、炸裂函数、窗口函数)

1、函数 1.1 函数简介 Hive会将常用的逻辑封装成函数给用户进行使用,类似java中的函数。 好处:避免用户反复写逻辑,可以直接拿来使用 重点:用户需要知道函数叫什么,能做什么 Hive提供了大量的内置函数,按…

《相信》读后感

近日阅读了蔡磊的《相信》一书,蔡磊先生曾是京东集团副总裁,中国电子发票的推动者。上天给了他优越的智商条件,从上学到工作,前半生几乎顺风顺水、获誉无数,却在初为人父、本该享受家庭幸福的时候,接到突患…

Python字典及用法详解

Python中的字典(Dictionary)是一种无序、可变的数据类型,用于存储键(Key)和值(Value)之间的映射关系。字典是一种高效的数据结构,可以用于快速查找和检索数据。 1.创建字典 可以使…

MobileViT详解:轻型,通用,移动友好的视觉变压器

MobileViT详解:轻型,通用,移动友好的视觉变压器 0. 引言1. 网络结构2. 模型详解2.1 MobileViT Block2.1.1 Local representations2.1.2 Transformers as Convolutions (global representations)2.1.3 Fusion 2.2 MV2 3. 简化版理解4. 总结 0.…

Ubuntu系统搭建FTP服务器

Ubuntu 系统版本:Ubuntu 22.04.2 LTS 安装 vsftpd 软件包 sudo apt-get update sudo apt-get install vsftpd查看版本,验证是否安装成功:vsftpd -v 配置文件 以下是我翻译后的默认配置文件(地址 /etc/vsftpd.conf)&a…

[NOI2009] 描边

题目描述 小 Z 是一位杰出的数学家。聪明的他特别喜欢研究一些数学小问题。 有一天,他在一张纸上选择了 n 个点,并用铅笔将它们两两连接起来,构成 (�−1)22n(n−1)​ 条线段。由于铅笔很细,可以认为这些线段的宽度为…

ROS:参数的使用与编程方法

目录 一、参数模型二、 创建功能包三、参数命令行的使用(rosparam)四、使用程序来使用参数(C)4.1创建代码4.2编译4.3运行 一、参数模型 在ROS Master中,存在一个参数服务器(Parameter Server),它是一个全局…

Python高光谱遥感数据处理与机器学习实践技术丨Matlab高光谱遥感数据处理与混合像元分解

目录 Python高光谱遥感数据处理与机器学习实践技术 第一章 高光谱基础 第二章 高光谱开发基础(Python) 第三章 高光谱机器学习技术(python) 第四章 典型案例操作实践 Matlab 高光谱遥感数据处理与混合像元分解 第一章 理论…

java SSM 互助旅游管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM 互助旅游管理系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采…