ZKP 发展脉络
1 ZKP基础概念
1.1 简要介绍
1.1.1 ZKP 定义
零知识证明(Zero-knowledge proofs)可以证明一个陈述(Statement)为真,同时不泄露任何秘密信息。
需要明确的是无论验证者(Verifier)是否知道证明者(Prover)的秘密信息(或秘密信息的一部分),ZKP都是有意义的。因为证明者仍然需要像验证者证明自己掌握完整的秘密,同时确保不向验证者泄露更多秘密信息。
知识: 能够提高验证者获得证明者秘密能力的信息均可以被称为知识。
Proof 和 Argument: 在Proof 系统中哪怕证明者用于无线计算能力也无法欺骗验证者。 在Argument 系统中,只有拥有多项式时间计算能力的证明者才没办法欺骗,如果破解了椭圆曲线离散对数问题,证明者就可以欺骗验证者。
1.1.2 ZKP 基本性质
零知识证明需具备的三个基本性质:
- 完备性:如果陈述(Statement)是正确的的,证明者(Prover)一定可以说服验证者(Verifier)
- 可靠性:如果陈述(Statement)是错误的,证明者(Prover)无法说服验证者(Verifier)
- 零知识性:协议的交互仅揭露陈述的正确性,不泄露其他信息。
1.2 预备知识
1.2.1 术语
实例(Instance): 这是证明者和验证者双方都知道的输入,用于支撑需要被证明的陈述。记为:$x$。
证据(Witness): 这里的证据是指用于支持陈述的证据,即证明者所知的秘密信息(隐私输入)。记为:$w$。
关系(Relation): 关系用于明确instance和witness之间联系,关系可以被视为一组合理的(instance,witness)对。记为:$R$。
语言(Language): 在关系中出现为允许配对的实例集合。记为:$L$。
陈述 (Statement): 通过实例和关系来定义。声称实例在关系中有一个证据(可以是真或假)。记为:$x \in L$。
安全参数(Security Parameter): 全参数为一个正整数(通常为$128$或$256$),越大表示系统越安全,大部分构造中将安全参数区分计算安全参数(记为:$k$)和统计安全参数(记为:$s$),或者统一记为:$\lambda$。
设置(Setup): 给证明者和验证者的输入,除了实例$x$和证据$w$之外,每个参与者的设置可以分解为私有组件(PrivateSetupP或PrivateSetupV)和公共组件(如公共参考串 ,CRS)。
例:证明自己拥有付款能力但是又不泄露银行余额。拥有付款能力(statement)需要依赖于银行签名的加密资料(instance),而加密密钥和资料明文(witness)是证明者的隐私,验证者不应当知道。
1.2.2 符号
符号 | 含义 |
---|---|
$\vec{a}\in \mathbb{F}^{1\times n}$ | 表示域$\mathbb{F}$上长度为$n$的向量 |
$A\in \mathbb{F}^{m \times n}$ |
表示$m$行$n$列的矩阵 |
$f(\cdot )$ | 多项式 |
$\vec{f(\cdot)}$ |
向量多项式 |
$A\vec{a}$ |
矩阵向量的成绩 |
$\vec{a} \cdot \vec{b} =\sum_{i=1}^{n} a_i \cdot b_i$ | 表示向量 $\vec{a}$ 与向量 $\vec{b}$的内积. |
$\odot$ | 哈达玛积 |
$[n]$ | $\{1,2,\dots ,n \}$ |
$y \overset{$}{\leftarrow} S$ | 从集合$S$中随机挑选$y$ |
1.2.3 缩略词
缩略词 | 英文含义 | 中文含义 |
---|---|---|
IP | interactive proof | 交互式证明 |
LIP | linear interactive proof | 线性交互式证明 |
PCP | probabilistic checkable proof | 概率可验证证明 |
DEIP | doubly efficient interactive proof | 双向高效的交互式证明 |
linear-PCP | - | 线性 PCP |
sum-check协议 | - | 求和验证协议 |
IPCP | interactive PCP | 交互式概率可验证证明 |
R1CS | rank-1 constraint system | 一阶约束系统 |
IOP | interactive oracle proof | 交互式谕示证明 |
IPA | inner product argument | 内积论证 |
CRS | common reference string | 公共参考字符串 |
URS | 统一参考字符串 | |
SRS | structured reference string | 结构化引用字符串 |
DLOG | discrete logarithm assumption | 离散对数假设 |
ROM | random oracle model | 随机谕言模型 |
MPC | secure multiparty computation | 安全多方计算 |
C-SAT问题 | circuit satisfiability problem | 电路可满足问题 |
RS 码 | reed solomon code | 里德-所罗门码 |
CRHF | collision-resistant hash function | 抗碰撞哈希函数 |
NIZKAoK | non-interactive zero-knowledge argument of knowledge | 非交互零知识知识论证 |
QAP | quadratic arithmetic program | 二次算术程序 |
1.3 构建ZKP系统
- 将待证明陈述归约为 C-SAT 问题。C-SAT问题是一个NPC问题,任何NP问题都可在多项式时间内归约为C-SAT问题,同时大多数实际问题都可用电路形式表达,因此待证明陈述表示形式大都为C-SAT问题。
- 将 C-SAT 问题转换为易证明的语言。需要将C-SAT问题表现形式转换为容易证明的表现形式,例如QAP问题等。
- 针对易证明的语言构造信息论安全证明。
- 利用密码编译器将信息论安全证明转换为简洁非交互零知识证明。
1.3.1 待证明陈述表达方式
算术电路
算数电路是一种计算模型,可以表示为有向无环图。电路中的每个节点均有若干域上的加法门和乘法门。
布尔电路
布尔电路是算数电路的子类,其仅有与门、异或门等布尔逻辑门,变量取值仅为0或1。通过增加常数级别的电路门和深度, 任何布尔电路都可以转换为算术电路
分层算术电路
分层算术电路是一种特殊的算术电路,其中的门(或操作)被分成不同的层次,每一层的门只能使用前一层门的输出作为输入。这种结构使得电路的计算过程可以进行有效的并行化,同时也能够减少电路的深度。在零知识证明的构建中,分层算术电路可以帮助降低证明的复杂性。
数据并行电路
数据并行电路是一种可以处理多个输入数据并同时执行多个操作的电路。在这种电路中,同一操作可以在不同数据上并行执行,从而实现高效计算。数据并行电路在处理大规模数据时非常有效,因为它们可以利用现代硬件的并行计算能力来加速运算。
对数空间可计算电路
对数空间可计算电路是一种特殊类型的电路,其计算过程只需要对数级别的内存空间。这类电路在复杂性理论和计算机科学中有重要应用,因为它们可以有效地解决一些具有特定属性的问题。对数空间电路的一个关键特性是它们能够在非常有限的空间内执行复杂的计算,这使得它们在处理大规模数据集或者内存受限的环境中特别有用。
一阶约束系统
阶约束系统(Rank-1 Constraint Systems, R1CS)是一种特定的代数约束系统,广泛应用于零知识证明的构造。在R1CS中,每一个约束都要求一组变量的线性组合、另一组变量的线性组合和第三组变量的线性组合的乘积相等。这种约束系统对于构造零知识证明非常有用,因为它可以有效地编码许多不同类型的计算和条件。
二次算术程序(QAP)双线性配对
这可能是指在零知识证明中使用双线性配对来处理次算术程序。双线性配对是一种数学工具,可以用于构造各种密码学协议,包括一些零知识证明系统。二次算术程序是一种特殊类型的算术电路,其中的每个门只能执行乘法或者加法操作,并且所有的乘法门的输入必须来自于前一层的门或者输入层。
1.3.2 信息论证明
IP (Interactive Proof Systems) 交互证明系统
IP系统由证明者(Prover)和验证者(Verifier)组成,通过交互验证某个语句的正确性。
IP系统通常有以下特点:
- 证明者和验证者交替发送信息(回合交互)
- 信息量每轮都很小(通常是多项式大小)
- 通过有限回合交互,验证者可以判断语句正确性
- 可提供完全性和可靠性保证
PCP(Probabilistically Checkable Proofs) 概率检查可证明
对于一个长证明,验证者只需要读取证明的少数位置,就可以以非常高的概率判断整个证明是否正确。Prover 不会直接把 PCP 证明发送给 Verifier,而是向 Verifier 发送一个预言机 (Oracle),叫做 PCP 预言机。Verifier 可以随意查询 PCP 预言机,获取 PCP 字符串任意位置的比特。
IPCP (Interactive PCP)交互式概率可验证证明
交互式概率可验证证明模型可以看做 IP 模型和 PCP 模型的相加。在 IPCP 模型中,Prover 向 Verifier 发送了 PCP 预言机后,Prover 和 Verifier 继续进行交互。交互过程中,Verifier 可以不时地访问 PCP 预言机。
IOP(Interactive Oracle Proof)交互式谕示证明
IOP是一个交互协议,包括一个验证者和一个预言机(具有特定功能的黑盒)。验证者可以交互查询预言机,以此验证某个语句的正确性。是构建SNARK的一个关键概念。
IOP的特点:
- 验证者只与预言机进行交互,不需要了解预言机的内部构造
- 通过有限的交互,验证者可以验证复杂语句的正确性
- 预言机无需保密,只需要正确回答查询
可分为如下几类
- 多项式IOP(PIOP):预言机是计算多项式的黑盒
- 多线性IOP:预言机是计算线性多项式的黑盒
- 向量IOP:预言机支持向量运算的黑盒
Linear-PCP 线性概率可验证证明
与PCP相比,增加了一个限制这里的预言机只能是线性的。
1.3.3 承诺
默克尔树:抗碰撞哈希函数
默克尔树(Merkle Tree)是一种数据结构,通常用于对大量数据进行有效的验证和校验。它使用抗碰撞哈希函数来创建一个“树”结构,其中每个节点是其子节点内容的哈希值。这使得任何对数据的更改都会导致树中相应节点的哈希值改变,从而能够方便地检测出数据的篡改。
里德-所罗门码
里德-所罗门码(Reed-Solomon codes)是一种纠错码,能够有效地处理信息传输过程中的错误。在零知识证明中,里德-所罗门码可以用于低度检查,这是一种验证电路或者函数是否为低度的方法。通过对求和验证或者其他方法的使用,可以有效地验证一个里德-所罗门码是否满足特定的属性或者条件。
FRI(Fast Reed-Solomon Interactive Oracle Proofs of Proximity)
主要用于检查一个点集是否都在一个给定的多项式上。
IPA (Inner Product Arguments)内积论证
内积论证是一种证明两个向量内积值的有效方法。在零知识证明中,内积论证常常用于证明两个向量的内积满足某个特定值,而不需要揭示这两个向量的具体内容。这对于保护证明者的隐私非常有用。
KZG承诺
一种由椭圆曲线和多项式组成的承诺方案
1.3.4 ZKP系统的前后端
ZKP证明系统可以分为前端和后端两个部分。
前端:是算术化步骤,将语句的高级表示转换为本地表示。在大多数情况下,将完整的计算机程序转变为电路。
后端:包含低级加密协议实现的软件部分。它证明了实例和见证被表示为变量赋值的语句,并且关系通过低级语言表示。通常由ZKP方案的具体实现组成。
1.4 评价标准
证明复杂度:线性级别、准线性级别
通信复杂度(证明规模):根号级别、对数级别、常数级别
验证复杂度::线性级别、亚线性级别
系统参数生成方式:系统参数私密生成、 系统参数公开生成。
抗量子性
通用性
1.5 其他概念
Fiat-Shamir启发式[6]
这是一种将交互式证明系统转换为非交互式签名方案的通用方法。
Sumcheck protocol
Sumcheck协议是一种交互式证明系统,它允许证明者证明一个关于多项式的性质,例如多项式在一个域上的和。这种协议被广泛应用于一些基于PCP的零知识证明系统。
递归零知识证明
递归零知识证明是一种特殊的零知识证明方案,它允许你在一个证明中嵌入另一个证明。可以将多个证明压缩成一个单一的证明,而无需透露任何关于原始证明或其所证明的声明的信息。可以有效地处理和验证大量的证明,特别是在资源受限或者需要高效率的环境中。
Proof-Carrying Data
在分布式计算任务的每个步骤,节点会生成一个证明,证明它执行这一步的计算是正确的。然后将这个证明与下一步的计算输入一起传递给下一个节点。所以每个节点接收到的输入都附带了证明,证明这个输入的计算是正确的。节点可以验证上一步的证明,确保自己接收到的输入是合法的,然后再执行下一步计算。最终结果也会附带一个证明,可以被验证器全面验证整个计算的正确性。
Folding schemes
折叠方案最初由 Nova 引入。 它是一种将两个待证明的实例压缩为一个实例的方法。
2 发展脉络
2.1 发展历史
2.1.1 起源
GMR98[7]
零知识证明的概念由Shafi Goldwasser、S. Micali和C. Rackoff在1985年的论文《The Knowledge Complexity of Interactive Proof Systems》中首次提出。他们定义了交互式证明系统的知识复杂性,并引入了零知识证明的概念。
2.1.2 早期发展
Pinocchio13[8]
Pinocchio是零知识简洁非交互式知识论证 (zk-SNARK) 证明系统的第一个概念验证实现之一。证明生成和密钥设置的渐近在计算大小上是线性的,验证时间在公共输入和输出的大小上是线性的。也是 Zcash 使用的基础协议。
- 信息论安全证明: Linear -PCP
- 待证明表示方式: 算数电路
- 证明复杂度:$O(|C|) \mathbb{G}_o$
- 验证复杂度:$O(|io|)E$、$4P$
- 证明大小: 288 B
- 参数生成方式: 私密
- 密码学假设: 椭圆曲线
Groth16[9]
Groth 于 2016 年推出,是使 zkSnarks 高效且极其实用的首批协议之一。提高了由 R1CS 描述问题的性能,主要缺点是待证明的每个程序都需要不同的可信设置。应用于ZCash,当下仍有很多基于该协议的应用。
- 信息论安全证明: Linear -PCP
- 待证明表示方式: 算数电路
- 证明复杂度:$O(|C|) \mathbb{G}_o$
- 验证复杂度:$O(|io|)E$、$4P$
- 证明大小: 0.2KB
- 参数生成方式: 私密
- 密码学假设: 椭圆曲线
2.1.3 透明
Bulletproofs16[10]
一种新的非交互式零知识证明协议,其证明非常简短,并且无需可信设置;该协议可以用于证明秘密在给定范围内。证明大小只是见证大小的对数。应用于 Monero。
- 信息论安全证明: ?
- 待证明表示方式: 算数电路
- 证明复杂度:$O(|C|) \mathbb{F}_o$
- 验证复杂度:$O(|C|)\mathbb{G}_o$
- 证明大小:$O(\log N)$
- 参数生成方式: 公开
- 密码学假设: 椭圆曲线
Ligero 17[11]
Ligero 引入了一个证明系统,该系统实现了大小为的证明,其中电路的大小。它以矩阵形式排列多项式系数并使用线性代码。
- 信息论安全证明:IPCP
- 待证明表示方式: 算数/布尔电路
- 证明复杂度:$O(|C| \log^2 |C|)\mathbb{F}_o$
- 验证复杂度:$O(\sqrt{n}) \mathbb{G}_o$ 或$O(|C|) \mathbb{F}_o$
- 证明大小:$O(\sqrt{n})$
- 参数生成方式: 公开
- 密码学假设: 抗碰撞哈希函数
STARKs18[12]
STARKS(Zero-Knowledge Scalable Transparent ARguments of Knowledge)零知识可扩展透明知识论证。可快速证明和验证,不需要可信设置,并且被认为是后量子安全的。其首先由Starkware/Starknet 与 Cairo 虚拟机一起使用。STARKs 也被其他项目(Polygon Miden、Risc0、Winterfell、Neptune)使用,或对其的一些改编(ZK-Sync 的 Boojum、Plonky2、Starky),此外还有zilch框架。
- 信息论安全证明:IOP
- 待证明表示方式: 对数空间可计算电路
- 证明复杂度:$O(T \log T ) \mathbb{F}_o$
- 验证复杂度:$O(\log T ) \mathbb{F}_o$
- 证明大小:$O(\log^2 n)$
- 参数生成方式: 公开
- 密码学假设: 抗碰撞哈希函数
Spartan19[13]
Spartan 为使用 R1CS 描述的电路提供了 IOP,利用多变量多项式和 sumcheck 协议的属性。使用合适的多项式承诺方案,它会产生带有线性时长 prover 的透明 SNARK。
- 信息论安全证明:IOP
- 待证明表示方式: 一阶约束系统
- 证明复杂度:$O(n) \mathbb{G}_o$ 或$O(n \log n)\mathbb{ F}_o$
- 验证复杂度:$O(\sqrt{n}) \mathbb{G}_o$ 或$O( \log^2 n)\mathbb{ F}_o$
- 证明大小:$O( \log^2 n)$~$O(\sqrt{n})$
- 参数生成方式: 公开
- 密码学假设: 抗碰撞哈希函数
2.1.4 通用化
SONIC19[14]
Sonic 是早期的通用 zk-SNARK 协议。CRS 满足通用性的同时,支持连续可更新,同时大小与待证明的关系呈线性。Sonic 还具有恒定的证明大小但是验证时间很长。
- 信息论安全证明:
- 待证明表示方式:
- 证明复杂度:$O(n\log n)$
- 验证复杂度:$O(I+\log n)$
- 证明大小:$O(1)$
- 参数生成方式:
- 密码学假设: 椭圆曲线
MARLIN19[15]
Marlin 是 Sonic 的显著改进版本,证明时间减少了 10 倍。它还提供了更快的验证而无需批处理,并将验证时间缩短了 3 倍。
- 信息论安全证明:
- 待证明表示方式:
- 证明复杂度:$O(n\log n)$
- 验证复杂度:$O(I+\log n)$
- 证明大小:$O(1)$
- 参数生成方式:
- 密码学假设: 椭圆曲线
PLONK19[16]
PLONK 是 SONIC 的另一个改进版本,引入了一种新的算术化方案(Plonkish),允许自定义门。多个项目都有 Plonk 的定制版本,包括 Aztec、ZK-Sync、Polygon ZKEVM、Mina’s Kimchi、Plonky2、Halo 2 和 Scroll 等。
- 信息论安全证明:
- 待证明表示方式:
- 证明复杂度:$O(n\log n)$
- 验证复杂度:$O(I)$
- 证明大小:$O(1)$
- 参数生成方式:
- 密码学假设: 椭圆曲线
Plonkup22[17]
在 Plonk 中引入 plookup 参数。这些查找参数的问题在于,它们迫使证明者为整个表付出代价,而与他的查找次数无关。这意味着大型表的成本相当高,并且已经投入了大量精力来降低证明者的成本,仅减少他使用的查找次数。
HALO2
2020 年,Zcash 团队推出了 HALO 2(HALO 的继后继者),它结合了 PLONK 和 Bulletproofs 的优点,然后允许在没有可信设置的情况下进行快速验证。
HYPERPLONK23[18]
HyperPlonk 建立在 Plonk 的思想之上,使用多元多项式。依赖于 sumcheck 协议检查约束执行。由于它依赖于多元多项式,因此无需进行FFT,并且证明者的运行时间在电路尺寸上是线性的。HyperPlonk 引入了适用于较小字段的新排列 IOP 和基于总和检查的批量打开协议,从而减少了证明者的工作量、证明大小和验证者的时间。
HyperPlonk+
将查找门集成到 HyperPlonk 的约束系统。
PLONKY2[19]
最近,Polygon 于 2022 年 1 月发布的 Plonky2 是 ZKP 世界中最新的。它是一种递归 SNARK,比现有其他方案快 100 倍。它结合了 PLONK 和 FRI,以获得最好的 STARK(即快速证明和无可信设置)和最好的 SNARK(即支持递归和以太坊上的低验证成本)。
- 信息论安全证明:
- 待证明表示方式:
- 证明复杂度:$O(\log n)$
- 验证复杂度:$O(\log n)$
- 证明大小:$O(n\log n)$
- 参数生成方式:
- 密码学假设: 抗碰撞哈希函数
2.1.5 折叠
Nova21[19]
Nova 引入了折叠方案的概念,这是一种实现增量可验证计算 (IVC) 的新方法。Nova 使用 R1CS 的宽松版本,并在友好的椭圆曲线上工作。使用曲线的友好循环来实现 IVC,也用于 Pickles,这是 Mina 的主要构建块,以实现简洁状态。
SuperNova22[20]
将Nova扩展到处理不同类型的电路。
Sangria
Sangria 借鉴了 Nova 的思想,为 Plonk 的变体构建了一个折叠方案
2.2 发展趋势
新的多项式承诺方案
随着基于多元多项式的高效 SNARK 的出现,例如 Spartan 或 HyperPlonk,人们对适合此类多项式的新承诺方案越来越感兴趣。Binius、Zeromorph 和 Basefold 都提出了新的形式来致力于多线性多项式。Binius 的优点是表示数据类型的开销为零(而许多证明系统至少使用至少 32 位字段元素来表示单个位),并且适用于二进制字段。该承诺调整了制动,该制动被设计为与现场无关。Basefold 将 FRI 推广到 Reed-Solomon 以外的代码,从而产生与字段无关的 PCS。
可定制约束系统
CCS 泛化 R1CS,同时捕获 R1CS、Plonkish 和 AIR 算术,无需开销。将 CCS 与 Spartan IOP 结合使用会产生 SuperSpartan,它支持高度约束,而无需证明者产生随约束程度而扩展的加密成本。特别是,SuperSpartan 为具有线性时间证明器的 AIR 生成了 SNARK。
参考文献
[1]李威翰, 张宗洋, 周子博, 等. 简洁非交互零知识证明综述[J/OL]. 密码学报, 2022, 9(3): 379-447. DOI:10.13868/j.cnki.jcr.000525.
[2]Community Reference - ZKProof Resources[EB/OL]. [2024-06-07]. https://docs.zkproof.org/reference.
[3]SNOWOLF. ZKP Part 1:Background and Preliminary - 三两老友杂的小岛[EB/OL]//ZKP Part 1:Background and Preliminary - 三两老友杂的小岛. (2022-11-10)[2024-06-09]. https://snowolf0620.xyz/index.php/zkp/798.html.
[4]GE 戈文波Geir-Wenbo. 第一部分:零知识证明[EB/OL]//Medium. (2024-01-26)[2024-06-10]. https://medium.com/@gewenbo888/第一部分-零知识证明-c21379e3ea83
[5]FEIYU. 零知识zhe —Zkpass[EB/OL]//Medium. (2022-09-20)[2024-06-12]. https://medium.com/@chong599llj/%E9%9B%B6%E7%9F%A5%E8%AF%86zhe-zkpass-8950b00cd9a2.
[6]FIAT A, SHAMIR A. How To Prove Yourself: Practical Solutions to Identification and Signature Problems[C/OL]//ODLYZKO A M. Advances in Cryptology — CRYPTO’ 86. Berlin, Heidelberg: Springer, 1987: 186-194. DOI:10.1007/3-540-47721-7_12.
[7]GOLDWASSER S, MICALI S, RACKOFF C. The Knowledge Complexity of Interactive Proof Systems[J/OL]. SIAM Journal on Computing, 1989, 18: 186-208. DOI:10.1137/0218012.
[8]Pinocchio: Nearly Practical Verifiable Computation | IEEE Conference Publication | IEEE Xplore[EB/OL]. [2024-06-11]. https://ieeexplore.ieee.org/document/6547113.
[9]GROTH J. On the Size of Pairing-Based Non-interactive Arguments[C/OL]//FISCHLIN M, CORON J S. Advances in Cryptology – EUROCRYPT 2016. Berlin, Heidelberg: Springer, 2016: 305-326. DOI:10.1007/978-3-662-49896-5_11.
[10]BOOTLE J, CERULLI A, CHAIDOS P, 等. Efficient Zero-Knowledge Arguments for Arithmetic Circuits in the Discrete Log Setting[C/OL]//FISCHLIN M, CORON J S. Advances in Cryptology – EUROCRYPT 2016. Berlin, Heidelberg: Springer, 2016: 327-357. DOI:10.1007/978-3-662-49896-5_12.
[11]AMES S, HAZAY C, ISHAI Y, 等. Ligero: Lightweight Sublinear Arguments Without a Trusted Setup[C/OL]//Proceedings of the 2017 ACM SIGSAC Conference on Computer and Communications Security. New York, NY, USA: Association for Computing Machinery, 2017: 2087-2104[2024-06-11]. https://dl.acm.org/doi/10.1145/3133956.3134104. DOI:10.1145/3133956.3134104.
[12]BEN-SASSON E, BENTOV I, HORESH Y, 等. Scalable, transparent, and post-quantum secure computational integrity[A/OL]. (2018)[2024-06-12]. https://eprint.iacr.org/2018/046.
[13]SETTY S. Spartan: Efficient and General-Purpose zkSNARKs Without Trusted Setup[C/OL]//Advances in Cryptology – CRYPTO 2020. Springer, Cham, 2020: 704-737[2024-06-12]. https://link.springer.com/chapter/10.1007/978-3-030-56877-1_25. DOI:10.1007/978-3-030-56877-1_25.
[14]MALLER M, BOWE S, KOHLWEISS M, 等. Sonic: Zero-Knowledge SNARKs from Linear-Size Universal and Updatable Structured Reference Strings[C/OL]//Proceedings of the 2019 ACM SIGSAC Conference on Computer and Communications Security. New York, NY, USA: Association for Computing Machinery, 2019: 2111-2128[2024-06-11]. https://doi.org/10.1145/3319535.3339817. DOI:10.1145/3319535.3339817.
[15]CHIESA A, HU Y, MALLER M, 等. Marlin: Preprocessing zkSNARKs with Universal and Updatable SRS[C/OL]//CANTEAUT A, ISHAI Y. Advances in Cryptology – EUROCRYPT 2020. Cham: Springer International Publishing, 2020: 738-768. DOI:10.1007/978-3-030-45721-1_26.
[16]GABIZON A, WILLIAMSON Z J, CIOBOTARU O. PLONK: Permutations over Lagrange-bases for Oecumenical Noninteractive arguments of Knowledge[A/OL]. (2019)[2024-06-12]. https://eprint.iacr.org/2019/953.
[17]PEARSON L, FITZGERALD J, MASIP H, 等. PlonKup: Reconciling PlonK with plookup[A/OL]. (2022)[2024-06-12]. https://eprint.iacr.org/2022/086.
[18]CHEN B, BÜNZ B, BONEH D, 等. HyperPlonk: Plonk with Linear-Time Prover and High-Degree Custom Gates[C/OL]//Advances in Cryptology – EUROCRYPT 2023. Springer, Cham, 2023: 499-530[2024-06-12]. https://link.springer.com/chapter/10.1007/978-3-031-30617-4_17. DOI:10.1007/978-3-031-30617-4_17.
[19]KOTHAPALLI A, SETTY S, TZIALLA I. Nova: Recursive Zero-Knowledge Arguments from Folding Schemes[C/OL]//DODIS Y, SHRIMPTON T. Advances in Cryptology – CRYPTO 2022. Cham: Springer Nature Switzerland, 2022: 359-388. DOI:10.1007/978-3-031-15985-5_13.
[20]KOTHAPALLI A, SETTY S. SuperNova: Proving universal machine executions without universal circuits[A/OL]. (2022)[2024-06-12]. https://eprint.iacr.org/2022/1758.