零知识证明

零知识证明 (ZKP) 是一种密码协议,它使一方(称为证明者)能够说服另一方(称为验证者)相信某个特定的数学陈述是正确的,而无需披露除该陈述确实为真的事实之外的任何信息。

这一概念源于一个基本见解,即知识和验证从根本上来说是可分离的:可以证明拥有知识而无需转移该知识。

在区块链技术和加密货币领域,零知识证明已成为最具变革性的技术之一。 加密 基本功能,可实现隐私保护交易、可扩展的 Layer 2 计算、可验证的链下处理以及无需泄露底层数据即可证明属性的身份系统。

零知识证明的数学基础建立在计算复杂性理论和交互式证明系统理论之上。如果对于每一个可能的验证者(包括试图提取信息的对抗性验证者),都存在一个模拟器,能够在不获取证明者秘密证人的情况下,生成与真实证明交互过程无法区分的记录,则该证明系统满足零知识性质。

Goldwasser、Micali 和 Rackoff 在他们 1985 年的开创性论文中引入的这个模拟模型,通过表明验证者可以从证明交互中计算出的任何内容,也可以在没有任何交互的情况下独立计算出该内容,从而形式化了证明“什么也不揭示”的直觉。

三个基本属性是完备性(诚实的证明者总能说服诚实的验证者相信一个真命题)、可靠性(任何作弊的证明者都无法说服验证者相信一个假命题,除非概率极低)和零知识性(验证者除了知道命题的真假之外,什么也得不到)。

在区块链应用中,零知识证明(ZKP)解决了公共账本系统固有的透明度和隐私之间的根本矛盾。比特币和以太坊的设计初衷是将所有交易数据公开可见,包括金额、地址和智能合约交互,从而创建了一个永久且可审计的记录,同时也使用户面临监控、抢先交易和财务分析的风险。零知识证明通过允许用户和系统在不暴露底层数据的情况下证明合规性、正确性或所有权来解决这个问题。ZKP 可以证明交易的有效性(输入等于输出、不存在双重支付、发送方余额充足),而无需透露是谁向谁发送了多少。

起源与历史

1985年: Shafi Goldwasser、Silvio Micali 和 Charles Rackoff 发表了论文《交互式证明系统的知识复杂度》,提出了零知识证明的形式化定义,并奠定了该领域的理论基础。这篇论文促成了 Goldwasser 和 Micali 因其在密码学领域的贡献而荣获 2012 年图灵奖。

1986年: Oded Goldreich、Silvio Micali 和 Avi Wigderson 证明,NP 中的每个问题都存在零知识证明,从而确立了零知识证明的非凡通用性:任何能够被高效验证的陈述都可以用零知识证明。与此同时,Amos Fiat 和 Adi Shamir 发表了 Fiat-Shamir 启发式算法,该算法通过将验证者的挑战替换为哈希函数的输出,将交互式证明转换为非交互式证明。这种转换成为在非交互式环境(包括区块链)中部署零知识证明的标准技术。

1988年: Manuel Blum、Paul Feldman 和 Silvio Micali 引入了使用公共参考字符串模型的非交互式零知识 (NIZK) 证明,消除了来回通信的要求,并为实际应用奠定了基础。

2012年: Nir Bitansky、Ran Canetti、Alessandro Chiesa 和 Eran Tromer 正式提出了简洁的非交互式知识论证 (SNARK),为紧凑的证明提供了理论基础,而紧凑的证明将成为区块链隐私和扩展的核心。

2013年: 由微软研究院的 Bryan Parno、Jon Howell、Craig Gentry 和 Mariana Raykova 开发的 Pinocchio 协议,展示了第一个实用的 zk-SNARK 构造,其效率足以在现实世界中部署,证明了通用可验证计算是可行的。

2014年: Zcash 项目(原名 Zerocash)正式启动开发,标志着 zk-SNARKs 技术首次在加密货币领域得到大规模应用。由 Electric Coin Company 协调的 Zcash 启动仪式生成了首批用于生产环境的可信设置参数,从而实现了完全屏蔽(私密)的加密货币交易。

2016年: Jens Groth 发布了 Groth16 证明系统,该系统在当时实现了所有基于配对的 SNARK 中最小的证明大小和最快的验证速度。Groth16 成为生产系统中部署最广泛的 SNARK 之一,被 Zcash、Tornado Cash 和许多其他协议所采用。

2018年: Eli Ben-Sasson、Iddo Bentov、Yinon Horesh 和 Michael Riabzev 发表了 zk-STARK 构造,该构造消除了可信设置要求,并提供了后量子安全。StarkWare Industries 的成立旨在将 STARK 技术商业化,用于区块链扩展。

2019年: Ariel Gabizon、Zachary J. Williamson 和 Oana Ciobotaru 发表了 PLONK,引入了通用且可更新的结构化引用字符串。PLONK 的自定义门和置换参数使其在处理复杂电路时比 Groth16 灵活得多,并迅速被 Aztec、zkSync 和 Mina Protocol 等项目采用。

2020年: 来自 Electric Coin Company 的 Sean Bowe、Jack Grigg 和 Daira Hopwood 发布了 Halo 构造,随后又发布了 Halo 2,实现了无需可信设置即可递归证明组合,这一突破使得能够验证其他证明的证明成为可能,这对于增量式区块链状态验证至关重要。

2021年: zkSync(Matter Labs)和 StarkNet(StarkWare)作为基于以太坊的 zk-rollup 二层网络上线,分别使用 SNARK 和 STARK 将数千笔交易批量打包成单个证明,并由以太坊智能合约进行验证。zk-rollup 项目之间的竞争日益激烈,使零知识证明 (ZKP) 成为以太坊领先的扩容技术。

2022年: 由 Kothapalli、Setty 和 Tzialla 开发的 Nova 引入了折叠方案,用于高效的增量可验证计算,显著降低了递归证明系统的证明器开销。Polygon 收购了 Hermez 和 Miden 项目,并发布了 Polygon zkEVM,这是一个基于零知识证明 (ZKP) 的以太坊虚拟机等效方案。

2023到2024: zk-rollup 生态系统进一步成熟。zkSync Era、StarkNet、Polygon zkEVM、Scroll、Linea 和 Taiko 等项目均已推出主网或公开测试网 zk-rollup。随着 GPU 和 FPGA 加速技术的出现,证明生成过程日益并行化。证明聚合和共享证明成为活跃的研究领域,一些项目提出了共享的零知识证明 (ZKP) 验证层。

2025到2026: 零知识证明正进一步融入主流区块链基础设施。以太坊的研究路线图持续推进基于零知识证明的“Verkle证明”及相关状态管理技术的应用,跨链零知识证明桥接也在不断发展,旨在实现链间更无需信任的互操作性。与此同时,以太坊自身计划于2025年底进行Fusaka升级,该升级将一种不同的但相关的加密扩容技术——数据可用性采样——投入生产,用于网络的blob数据。

“零知识证明是区块链领域乃至其他领域最被低估的技术之一。它将成为我们思考数字世界中隐私和验证方式的基石。”——以太坊联合创始人 Vitalik Buterin,2022 年 EthCC Paris 大会。

简单来说

密码类比:想象一下,你需要向一个网站证明你知道密码,但你不用输入密码(因为密码可能被拦截),而是解一个特殊的数学谜题,这个谜题只有在你知道密码的情况下才能解出来。网站会检查你的谜题答案,并在完全看不到密码的情况下确认你知道密码。这就是零知识证明的作用:它在不显示你具体知道什么的情况下,证明你知道某些东西。

数独解法:你解出了一道难度很高的数独题,想在不展示解法的情况下证明你的答案。你用卡片盖住每一行、每一列以及每个3×3的方格,然后让验证者随机选择一行、一列或一个方格进行检查。他们发现这些方格包含1到9的数字,且没有重复。经过多次随机检查后,他们确信整个解法都是正确的,但他们看到的解法信息不足以让他们完全还原出答案。

重要提示: 零知识证明虽然提供了强大的隐私和验证能力,但它们是复杂的密码系统,需要谨慎实现。零知识证明电路(即被证明的计算的数学描述)中的漏洞可能导致可靠性漏洞,使虚假证明被接受。许多零知识证明系统的安全性依赖于密码学假设,例如离散对数难度或配对假设,而这些假设原则上可以被足够先进的量子计算机破解。依赖基于零知识证明的隐私保护的用户应该明白,隐私保证的强度仅取决于底层密码实现的强度,并且密码分析或量子计算的进步可能会随着时间的推移影响其安全性。

关键技术特征

数学基础:多项式承诺和算术电路

现代零知识证明系统的核心在于将计算表示为有限域上的多项式方程。任何计算,包括区块链交易的验证、智能合约的执行或身份属性的验证,都可以表示为算术电路:一个由加法门和乘法门组成的有向无环图,这些门作用于有限域(模素数的整数)的元素。

证明者的任务是证明他们拥有电路导线的值赋值(“见证”),使得所有门都得到满足,但又不透露见证。

从计算到多项式方程的转换是通过算术化实现的。证明器将电路的线路值编码为多项式的系数或求值点,电路的约束条件则转化为多项式恒等式检验。例如,乘法门 a × b = c 就变成了一个多项式约束,该约束必须在特定的求值点成立。

如果证明者能够证明这些多项式恒等式成立(在验证者提供的随机挑战点上评估,或通过 Fiat-Shamir 启发式推导得出),则验证者确信底层计算已正确执行。

多项式承诺方案是一种机制,证明者通过这种机制“承诺”一个多项式而不公开它,之后在特定点“打开”该承诺以证明其值。基于椭圆曲线配对的 KZG(Kate-Zaverucha-Goldberg)承诺方案是应用最广泛的方案之一:证明者计算出一个椭圆曲线上的点作为承诺,而验证过程只需几次配对操作,与多项式的次数无关。

这种简洁性使得 zk-SNARKs 非常紧凑。其他承诺方案包括 STARKs 中使用的 FRI(快速 Reed-Solomon 交互式预言机邻近性证明),它依赖于哈希函数而非配对,并以更大的证明规模为代价,提供了透明性和后量子安全性。

zk-SNARK 证明的工作原理(分步详解)

  1. 电路汇编: 待证明的计算,例如“此交易有效”,可以用算术电路来表示,即有限域上的一系列加法门和乘法门。诸如 Circom、Noir、Leo 或 Cairo 等专用领域语言会将高级程序编译成这些电路。
  2. 见证生成: 证明者计算完整的电路,为每条线路(输入、中间线路和输出)分配具体值。见证信息包括对验证者可见的公共输入(例如交易哈希)和私密输入(例如发送者的余额或私钥)。
  3. 算术运算: 电路和见证信息通过特定的算术化方案转换为一组多项式方程。在 R1CS(秩 1 约束系统,由 Groth16 使用)中,每个门都成为一种涉及见证向量和选择器向量的特定类型的约束。在 PLONK 式算术化中,门通过选择器多项式、置换参数和查找表进行编码。
  4. 多项式承诺: 证明者将见证和约束满足情况编码成多项式,并使用多项式承诺方案(例如 SNARK 的 KZG 或 STARK 的 FRI)来承诺这些多项式。这些承诺是紧凑的密码学对象,例如椭圆曲线点或默克尔根,它们将证明者绑定到特定的多项式,但又不泄露这些多项式。
  5. 挑战生成: 随机评估点的生成方式有两种:一种是通过与验证者交互(交互模式),另一种是通过 Fiat-Shamir 启发式方法(非交互模式,其中挑战是通过对迄今为止的证明记录进行哈希运算而得出的)。
  6. 证明构造: 证明者在挑战点处对已承诺的多项式进行求值,并提供初步证明,表明求值结果与承诺一致。证明中还包含商多项式,以证明多项式恒等式在所有约束点上都成立。
  7. 验证: 验证者通过验证多项式承诺开集并检查多项式恒等式在随机挑战点是否成立来检验证明。对于 Groth16,这需要少量固定数量的椭圆曲线配对;对于 PLONK,需要更多配对检查;对于 STARK,需要哈希函数求值和默克尔路径验证。验证速度通常比重新执行计算快几个数量级。

Groth16:一种紧凑的防腐标准

由 Jens Groth 于 2016 年发布的 Groth16 至今仍是证明紧凑性的标准之一。一个 Groth16 证明恰好由三个椭圆曲线群元素组成,总大小约为 128 到 192 字节,具体大小取决于曲线类型。

验证过程只需要少量固定数量的配对操作以及一些分组乘法,在现代硬件上大约需要 1 到 3 毫秒。这种极致的简洁性使得 Groth16 非常适合链上验证,因为链上验证的 gas 成本与证明大小和验证计算量成正比。

权衡之处在于,Groth16 需要针对特定​​电路建立可信设置:每个独特的电路都需要通过多方计算仪式生成其自身的结构化引用字符串。如果仪式中的所有参与者串通或随机性遭到破坏,由此产生的“有害数据”原则上可用于伪造证明。

Zcash 的 Powers of Tau 仪式和随后的 Hermez 仪式都涉及众多参与者,以确保至少有一位诚实的参与者,从而使伪造几乎不可能。尽管采取了这种缓解措施,但可信设置的要求仍然促使人们寻求更透明的替代方案。

PLONK:通用且可更新的安装程序

PLONK 通过引入通用的结构化参考字符串改变了零知识证明 (ZKP) 的格局:一个单一的可信设置即可适用于任何规模的电路。这意味着,一次认证仪式(可由更多参与者不断增强)即可服务于整个电路生态系统,从而无需为每个电路单独举行认证仪式。

PLONK 的算术运算采用门方程组,使用选择器多项式、复制约束机制(大乘积论证)来强制执行连线,并能够为频繁出现的模式定义自定义门。

PLONK 的证明大小比 Groth16 大,根据不同版本,大约在 400 到 900 字节之间,验证速度也稍慢一些,但绝对速度仍然很快。该设置的通用性和可更新性,加上自定义门和查找表的灵活性,使其成为复杂区块链应用的首选系统。包括带有自定义门、plookup 式查找表和改进批处理的版本在内的各种变体,已部署在 zkSync、Aztec、Polygon zkEVM 和 Scroll 等区块链上。

Halo 2:无需可信设置即可进行递归证明

由 Zcash/Electric Coin Company 团队开发的 Halo 2 突破了此前被认为是一项根本性障碍的难题:无需任何可信设置即可实现高效的递归证明组合。递归证明组合意味着一个证明可以验证另一个证明,从而形成一个证明链,其中每个证明都验证前一个证明的正确性,最终将任意数量的计算压缩成一个最终证明。

Halo 的技术创新在于其基于内积论证的多项式承诺累积方案。Halo 并非对每个承诺进行完全验证(这需要配对,从而需要可信的设置),而是“累积”承诺检查,将耗时的验证推迟到递归链的末尾。

这种延迟验证机制实现了无需信任的递归。Halo 2 在此基础上扩展了 PLONK 式的算术运算和查找参数,使其成为一个功能齐全的证明系统。Zcash 在其 Orchard 屏蔽池中采用了 Halo 2,从而消除了自 Zcash 发布以来一直备受诟病的信任设置要求。

Nova 和折叠方案:高效的增量计算

Nova 于 2022 年推出,标志着递归证明构建方式的重大变革。它不再像传统方法那样先完整证明增量计算的每一步,然后再递归验证证明,而是采用折叠方案将计算的两个实例“折叠”成一个实例,从而将每一步的证明工作量从生成完整证明简化为一次标量乘法。由此产生的增量可验证计算 (IVC) 系统的证明成本远低于传统的递归 SNARK,尤其适用于具有大量重复步骤的计算,例如顺序处理区块链交易。

zk-STARKs:透明度和后量子安全

zk-STARKs 通过使用哈希函数和代数编码理论取代椭圆曲线配对,实现了透明性(无需可信设置)和后量子安全。STARKs 的核心承诺机制是 FRI,它通过反复“折叠”函数来测试该函数是否接近低次多项式。折叠过程通过随机线性组合将函数的定义域减半,并通过默克尔树检查一致性。由于 FRI 仅依赖于抗碰撞哈希函数(据信可以抵抗量子攻击),因此 STARKs 继承了后量子安全。

零知识虚拟机(zkVM 和 zkEVM)

区块链中零知识证明(ZKP)技术的最终目标是零知识虚拟机:一个通用的计算环境,其中任何程序的执行都可以在零知识条件下得到证明。零知识以太坊虚拟机(zkEVM)可以证明以太坊智能合约的正确执行,从而实现与EVM完全兼容的zk-rollup。在兼容性方面,存在着不同的实现方法:

  • 类型 1(完全等同于以太坊): 验证以太坊的实际执行环境,包括状态树和 gas 计费,这是许多项目梦寐以求的目标。兼容性极佳,但验证器成本最高。
  • 类型 2(完全等同于 EVM): 证明了 EVM 字节码的执行,但状态管理方式有所修改,类似于 Scroll 和 Polygon zkEVM。几乎完全兼容,仅有细微差别。
  • 类型 3(几乎等同于 EVM): 能够证明大部分 EVM 操作码,但会修改或移除一些与零知识证明不兼容的操作码,例如某些预编译操作码。证明速度更快,兼容性差距较小。
  • 类型 4(高级语言等效物): 它证明的是从 Solidity 或 Vyper 编译成符合零知识证明 (ZKP) 指令集的代码的执行情况,而不是像 zkSync Era 那样直接证明 EVM 字节码。证明速度很快,但合约必须重新编译,并且在字节码层面上的行为可能略有不同。

除了以太坊之外,通用零知识证明虚拟机(zkVM)还包括 RISC Zero(用于证明 RISC-V 指令的执行)、SP1(同样基于 RISC-V)以及 Miden VM(基于 STARK 架构的虚拟机,拥有针对零知识证明效率优化的自定义指令集)。这些系统使得用 Rust、C、Go 或其他可编译为 RISC-V 的语言编写的程序能够通过加密的正确性证明来执行。

优点缺点

方面企业优势坏处
隐私保护支持在公共区块链上进行私密交易和计算;用户可以进行交易、验证身份属性并与智能合约交互,而无需向观察者或验证者透露敏感数据。隐私功能可能被滥用于洗钱、规避制裁和非法融资;2022年美国财政部外国资产控制办公室(OFAC)对Tornado Cash的制裁就体现了基于零知识共享(ZKP)的隐私工具可能面临的监管风险。
可扩展性zk-rollups 将数千笔交易压缩成一个在 Layer 1 上验证的单一证明,领先的平台每秒可处理数千笔交易,同时继承以太坊的安全保障。证明生成需要大量的计算资源;在消费级硬件上,为复杂电路生成 SNARK 证明可能需要几分钟到几小时,而生产系统则需要专门的基础设施,例如 GPU 集群或 FPGA 加速器。
安全模型零知识共享卷(zk-rollups)注重的是数学(密码学)安全性而非纯粹的经济安全性;与依赖欺诈证明和挑战期的乐观卷不同,零知识共享卷能够提供更快的最终性,并由数学确定性提供支持。SNARK 背后的密码学假设,例如离散对数问题和各种配对假设,原则上可能被足够强大的量子计算机破解,这可能会影响在这些假设下生成的证明。
可信设置消除包括 STARK、Halo 2 和 Nova 在内的现代系统已经完全消除了可信设置要求,从而消除了仪式参数泄露的风险以及运行 MPC 仪式的后勤负担。像 Groth16 这样仍然需要可信设置的系统依赖于仪式的完整性;如果所有参与者串通或随机性遭到破坏,理论上伪造证明就可能在不被察觉的情况下被制造出来。
验证效率链上验证速度快且成本相对较低;在以太坊上,无论被验证的计算有多么复杂,Groth16 证明通常需要花费 200,000 万到 300,000 万 gas。电路开发难度很高;编写正确的零知识证明(ZKP)电路需要精通有限域算术、约束系统和密码工程,而且电路中的错误可能非常隐蔽且后果严重。
Composability基于零知识证明(ZKP)的系统通常可以与现有的区块链基础设施组合使用;零知识证明汇总结算在现有的 Layer 1 链上进行,零知识证明身份系统与现有的 DeFi 协议集成,零知识证明桥接器连接现有的链。零知识证明(ZKP)生态系统仍然相当分散;不同的证明系统、算术运算和零知识模型(zkVM)类型造成了互操作性方面的挑战。
资料压缩有效性证明允许将状态差异(而非完整的交易数据)发布到链上,与必须发布完整交易调用数据的乐观汇总相比,降低了 Layer 1 数据成本。证明的大小差异很大;例如,STARK 证明的大小可能从几十千字节到几百千字节不等,虽然比它们所替代的原始交易数据要小,但仍然代表着一笔不小的链上成本,而且这笔成本会随着证明复杂性的增加而增加。
跨链验证ZKP 通过向另一条链上的验证者合约证明一条链的状态,从而实现更多无需信任的跨链桥接,减少对可信桥接运营商或多重签名委员会的依赖。跨链零知识证明 (ZKP) 验证需要为每个源链构建轻客户端电路,由于每条链的共识机制和状态结构都必须编码为 ZKP 电路,因此这些电路的构建、维护和审计都非常复杂。
法律合规零知识证明 (ZKP) 可以实现“合规设计”,使用户能够在不泄露个人数据的情况下证明其符合监管要求,例如 KYC 状态或所在司法管辖区不受制裁,从而同时满足隐私和监管目标。围绕零知识证明(ZKP)隐私工具的监管不确定性依然存在;“龙卷风现金”案的先例产生了寒蝉效应,多个司法管辖区的监管机构仍在继续制定相关框架,这些框架可能会限制或要求在隐私保护系统中进行额外披露。

风险管理

电路健全性和审核要求: 零知识证明(ZKP)系统中最关键的风险是电路健全性,即算术电路中的漏洞可能允许证明者生成看似有效的证明,但实际上却是错误的陈述。与智能合约漏洞(其代码以公开可读的形式呈现)不同,ZKP 电路漏洞可能极其隐蔽,因为它们通常涉及约束未明确定义:电路可能无法约束某个线路值,从而允许证明者插入任意值,这些值虽然满足证明条件,但对应的却是无效交易。包括专注于以太坊隐私和扩展路线图的团队在内的研究人员已经记录了多种类型的电路漏洞,例如缺少约束、范围检查错误以及有限域运算中的算术溢出。用户应该只与那些电路经过专业 ZKP 审计公司审计,并且最好经过形式化验证的 ZKP 系统进行交互。

可信设置风险及缓解措施: 对于使用可信设置的系统,例如 Groth16 或原始 PLONK,设置仪式的完整性是单点故障。如果仪式中使用的秘密随机数(即“有毒废物”)可以重构,攻击者原则上可以伪造证明,凭空创建代币,花费他们不拥有的资金,或生成虚假的身份证明。缓解策略包括:多方参与的计算仪式(只需一个诚实的参与者即可保证安全)、持续强化设置的“τ 力量”仪式,以及迁移到完全消除设置过程的透明系统,例如 STARKs 或 Halo 2。用户应验证他们所交互的任何基于可信设置的系统是否执行了足够大规模且记录完善的仪式。

实施漏洞: 即使数学证明系统本身是健全的,证明器、验证器或周边基础设施中的实现缺陷也可能造成可被利用的漏洞。值得注意的案例包括已记录的 Zcash 通胀漏洞,该漏洞中电路验证的缺陷如果被恶意方率先发现,则可能导致无法检测的代币创建;以及多年来通过漏洞赏金计划发现的各种电路实现中的漏洞。零知识证明 (ZKP) 实现的复杂性,涉及有限域运算、椭圆曲线运算、多项式求值和哈希函数,造成了巨大的攻击面。防御策略包括对关键电路进行形式化验证、广泛的模糊测试和基于属性的测试、对共识关键验证进行多种独立的实现,以及采取保守的部署方式并逐步推广。

量子计算威胁: 基于配对的SNARKs(包括Groth16和带有KZG承诺的PLONK)依赖于椭圆曲线上离散对数问题的难度,而该问题可以通过Shor算法在足够大的量子计算机上高效求解。虽然目前的量子计算机规模远未达到所需水平,但通常的估计表明,破解256位椭圆曲线需要数千个逻辑量子比特,按照目前的错误率,这相当于需要更多数量的物理量子比特。因此,该领域的长期风险不容忽视。STARKs和基于哈希的承诺方案被认为是抗量子攻击的,而目前向基于STARK和基于格的证明系统的转变提供了一条迁移路径。持有受基于配对的零知识证明(ZKP)保护的资产的用户应密切关注量子计算的发展,并在必要时做好迁移到后量子替代方案的准备。

隐私限制和元数据泄露: 零知识证明 (ZKP) 可以保护计算内容,但本身并不保护元数据。链上 ZKP 验证会显示已提交证明,包括时间、交互的智能合约、支付的 gas 费用以及交易在区块中的位置。对于注重隐私的应用,例如屏蔽交易或身份证明,这些元数据可能会泄露重要信息。匿名集的大小至关重要:如果只有少量用户使用屏蔽池,即使底层采用了加密隐私保护,交易图分析仍有可能泄露用户的匿名身份。用户应考虑使用具有较大匿名集、时间混淆和元数据最小化中继网络的 ZKP 隐私工具。

文化相关性

零知识证明(ZK)已超越其最初作为复杂性理论中纯粹的理论构想,成为区块链生态系统中最具文化意义的技术之一。“ZK”一词已进入加密货币领域的常用词汇:“ZK-rollup”、“ZK-proof”、“ZK-EVM”和“ZK-bridge”已成为以太坊开发者社区的日常用语,“ZK”也成为技术成熟度和密码学严谨性的标志。2021年至2024年间,出现了一股“ZK淘金热”,众多项目纷纷在其名称中添加“ZK”,引发了关于“ZK洗白”(即声称拥有ZK属性但实际上并未实现零知识证明)的社区辩论。

零知识证明(ZKP)在加密领域的文化意义远不止于技术层面,更延伸至哲学层面。密码朋克运动起源于埃里克·休斯1993年的宣言,该宣言认为在电子时代,隐私对于开放社会至关重要。零知识证明正是密码朋克运动最强有力的技术体现之一。它实现了密码朋克对可证明隐私的诸多愿景:在不放弃信息自主权的前提下,充分参与数字系统。这种哲学契合使得零知识证明的研究者和开发者在加密社区中拥有举足轻重的地位,其中包括Eli Ben-Sasson(StarkWare)、Vitalik Buterin(他大力倡导零知识证明)、Barry Whitehat(与Semaphore协议和隐私与扩展探索项目相关)以及Zcash团队成员,例如Zooko Wilcox、Sean Bowe和Daira Hopwood。

“零知识证明(ZK)的寒冬到盛夏”的叙事模式,即从2016年到2020年左右的多年理论研究之后,从2021年开始的大规模实际部署,已经成为加密社区理解技术成熟度的某种模板。“零知识证明将有助于解决以太坊的扩容问题”这一观点已成为以太坊社区中较为稳固的共识之一,Vitalik Buterin认为,从长远来看,零知识证明汇总(zk-rollups)很可能胜过乐观汇总(optimistic rollups)。这种信念为零知识证明项目带来了大量的风险投资,吸引了学术界的密码学研究人员加入加密创业公司,并将零知识证明专业知识确立为区块链工程领域最有价值的专业方向之一。

在学术密码学界,区块链行业对实用型零知识证明(ZKP)系统的需求形成了一个显著的反馈循环:行业资金支持学术研究,学术研究催生新的证明系统,这些系统被初创公司迅速产品化,初创公司创造的收入又为进一步的研究提供资金。专门关注零知识证明研究的会议和研讨会已成为学术密码学家和区块链工程师合作的重要平台,而从 Groth16 到 PLONK,再到 Halo 2 和 Nova,短短七年间创新速度之快,也反映了这种合作的密切程度。

2022年8月,美国财政部外国资产控制办公室将Tornado Cash智能合约列入制裁名单,这一事件成为零知识证明(ZKP)社区的一个标志性事件。制裁实际上将与开源隐私工具的互动定为犯罪,引发了关于链上隐私合法性、代码是否应被视为言论以及金融监控与个人隐私权之间矛盾的辩论。随后,荷兰对一名Tornado Cash开发者的起诉加剧了这些辩论,并促使部分ZKP社区成员更加坚定地认为隐私本身并非犯罪。这一事件影响了后续ZKP隐私项目的设计理念,这些项目越来越多地将选择性合规机制(例如证明自身不在制裁名单中)与交易隐私相结合。

实际例子

Zcash 屏蔽交易:开创性的私人加密货币

场景: 比特币和其他早期加密货币运行在完全透明的账本上,所有交易金额、发送方地址和接收方地址都公开可见。金融隐私倡导者和机构用户需要一种加密货币,能够在不向公众透露任何交易细节的情况下,通过加密技术验证交易的有效性。

实施: Zcash 部署了 zk-SNARKs,最初使用 Sprout 电路,后来升级到基于 Groth16 的 Sapling 电路,最近又升级到基于 Halo 2 的 Orchard 电路,以实现“屏蔽”交易。在屏蔽交易中,发送方、接收方和金额都在链上加密。附加到交易的 zk-SNARK 证明可以证明发送方拥有输入票据的私钥,输入票据存在于承诺树中且未被花费,输入票据的总和等于输出票据的总和加上手续费,并且没有发生双重支付,所有这些证明都不会泄露任何相关信息。与 Sprout 相比,Sapling 升级大幅缩短了证明生成时间,而 Halo 2(Orchard)则完全取消了可信设置的要求。

结果: Zcash 证明了零知识证明(ZKP)在加密货币隐私保护方面的生产可行性,自 2016 年推出以来,已处理了大量受保护的交易。Zcash 的认证仪式也成为可信设置最佳实践的广泛参考模型。尽管由于计算开销和交易所对透明地址的偏好,受保护交易在 Zcash 总交易量中占比一直不高,但该协议证明了大规模加密隐私在技术上是可行的,并为区块链中许多后续的 ZKP 隐私实现树立了典范。

zkSync 时代:利用零知识汇总扩展以太坊

场景: 在高峰期,以太坊的 Layer 1 吞吐量和 Gas 费用使得该网络难以满足许多日常应用的需求,例如小额支付、游戏交易和高频 DeFi 交互。区块链三难困境——可扩展性、安全性和去中心化之间的矛盾——亟需一种既能提高吞吐量又不牺牲以太坊安全保障的解决方案。

实施: 由 Matter Labs 开发的 zkSync Era 发布了一个 Type 4 zkEVM rollup,它将 Solidity 和 Vyper 智能合约编译成自定义的 ZKP 友好指令集,并生成 SNARK 证明,以验证交易批次的正确执行。数千笔交易在链下执行,计算状态差异,并将正确执行的 SNARK 证明发布到以太坊智能合约。以太坊智能合约验证该证明并应用状态差异,从而使整个交易批次继承以太坊的安全性。

结果: zkSync Era 在主网运行初期处理了海量交易,其吞吐量和成本水平远优于以太坊 L1 层。该系统证明,基于零知识证明 (ZKP) 的扩容方案能够在保持以太坊级别安全性的同时,支持复杂的 DeFi 和 NFT 应用。此次发布促进了 zk-rollup 项目之间的竞争,并将 ZKP 确立为以太坊长期扩容路线图中的关键技术。

Worldcoin:生物识别身份证明

场景: 在Web3生态系统中,女巫攻击(即创建多个虚假身份)会破坏民主治理机制、公平的代币分配以及全民基本收入方案。传统的身份验证需要披露个人信息,而匿名区块链地址则允许创建几乎不受限制的身份。因此,我们需要一种既能证明身份独特性又不损害身份隐私的解决方案。

实施: Worldcoin 开发了 World ID 系统,该系统使用名为 Orb 的定制硬件设备进行虹膜扫描,为每个人创建唯一的生物特征标识符,然后基于 Groth16 的信号量协议生成零知识证明 (ZKP),证明“此人是已注册的唯一用户”,但不会透露其注册时使用的具体虹膜扫描信息。ZKP 的设计旨在确保同一人无法重复注册,从而防止女巫攻击,同时确保任何验证者都无法将证明与特定的生物特征模板关联起来。

结果: Worldcoin 在推出后的几年内注册了数百万经过验证的独立用户,创建了全球规模最大的基于零知识证明(ZKP)的身份系统之一。该项目证明了 ZKP 可以连接生物识别身份和区块链隐私,但也引发了关于生物识别数据收集、发展中国家的知情同意以及依赖硬件的身份系统中心化风险的激烈讨论。多个治理和空投协议集成了 World ID 验证功能,将身份证明确立为 ZKP 在金融隐私之外的一个重要应用场景。

Polygon zkEVM:具有零知识证明的 2 型 EVM 等价性

场景: 以太坊开发者需要一种与现有以太坊智能合约完全兼容的扩容方案,该方案允许部署相同的 Solidity 字节码而无需重新编译或修改,同时提供有效性证明的安全保障,而不是乐观汇总带来的延迟最终性。实现字节级 EVM 与零知识证明 (ZKP) 验证的等效性被认为是区块链工程中最具挑战性的技术难题之一。

实施: Polygon zkEVM 构建了一个 Type 2 zkEVM,它使用结合了 SNARK 和 STARK 元素的自定义证明系统来证明实际 EVM 字节码的正确执行。该系统采用多项式承诺方法,其中 EVM 执行的不同方面由独立的专用电路进行证明,并通过递归聚合证明将它们组合成单个链上验证。

结果: Polygon zkEVM 于 2023 年 3 月在以太坊主网上线,成为首批投入生产的 Type 2 zkEVM 之一。该系统证明,通过零知识证明 (ZKP) 可以实现近乎完美的 EVM 等价性,绝大多数以太坊智能合约无需修改即可部署。多个 DeFi 协议已部署在 Polygon zkEVM 上,并且通过后续的协议升级,证明生成时间显著缩短,这验证了 Type 2 zkEVM 方法的有效性,并对其他同类实现的设计产生了影响。

对比表

特性zk-SNARKs(Groth16/PLONK)zk-starks乐观汇总可信执行环境(TEE)
校样尺寸体积非常小:Groth16 大约 128 到 192 字节,PLONK 大约 400 到 900 字节;链上占用空间极小。体积较大:通常每个证明文件占用几十到几百千字节;但仍然比它所替代的原始交易数据小得多。无需提供有效性证明;完整的交易数据将作为调用数据发布在链上。没有加密证明;来自硬件的证明报价提供的保证相对较弱。
验证时间速度极快,通常只需几毫秒;计算量大小基本无关紧要。中等,并且由于 FRI 验证,计算复杂度会随计算规模而增加,但总体速度仍然很快。无需立即核实;欺诈证据需要经过数天的质疑期,这将延迟提款。仅对硬件认证进行最低限度的验证;未提供正确执行的数学证明。
可信设置Groth16 需要针对特定​​电路进行仪式;PLONK 使用通用的、可更新的设置;两者都存在有毒废物污染的风险。无需任何额外操作(透明);仅依赖哈希函数和公共随机性。无需任何措施;安全性基于防欺诈游戏提供的经济激励。信任硬件制造商;存在供应链和侧信道攻击风险。
量子电阻不;基于配对的方案可能会被 Shor 算法破坏,因此需要迁移到后量子时代的替代方案。是的;基于哈希的承诺可以抵抗已知的量子攻击不直接适用;取决于底层链自身的量子阻力。不;硬件安全模块可能会被量子侧信道攻击攻破。
证明成本高难度;需要对椭圆曲线进行快速傅里叶变换和多标量乘法运算对于小型计算来说开销非常高,但对于非常大的电路来说扩展性更好。低;无需生成证明,因为排序器仅执行和批处理交易。低;计算在硬件隔离区内以接近原生性能运行,不生成加密证明。
隐私能力完全零知识;证据没有揭示任何关于证人的信息。配置为 ZK-STARK 时可实现完全零知识;隐私功能与 SNARKs 类似。不存在固有的隐私性;所有交易数据均以调用数据的形式公开发布在第一层网络上。部分加密;数据在计算过程中加密,但信任点在于硬件制造商而非数学本身。
终局一旦链上验证通过,证明立即生效。与 SNARKs 类似,链上证明验证能够提供即时的数学最终性,因此具有即时性。提款通常会延迟一周左右才能最终到账,不过过桥转账可以提供更快的退出速度,但同时也增加了流动性风险。即时但强度较弱;认证过程可立即验证,但安全性依赖于硬件假设而非密码学证明。

相关条款

  • zk-SNARK(零知识简洁非交互式知识论证): 一系列证明系统,能够生成极其简洁且验证速度快的证明,被应用于 Zcash、Tornado Cash 和大多数零知识汇总(zk-rollup)中;其特点是简洁,但历史上需要可信的设置。
  • zk-STARK(零知识可扩展透明知识论证): 一种使用基于哈希的承诺(FRI)的证明系统系列,旨在以更大的证明规模为代价,实现透明性和后量子安全;由 Eli Ben-Sasson 开发,并由 StarkWare 部署。
  • zk-Rollup: A 图层2 该扩展方案可在链下执行交易,并将有效性证明(SNARK 或 STARK)发布到 Layer 1,在继承底层安全性的同时,实现更高的吞吐量和更低的成本。
  • 算术电路: 将计算过程表示为有限域上加法门和乘法门构成的有向无环图的数学表示;零知识证明系统证明关于……的陈述的基本结构。
  • 可信设置: 一次性加密仪式,用于生成某些 SNARK 系统所需的公共参数;仪式中秘密随机性的泄露会导致证明伪造。
  • 多项式承诺方案: 一种密码学原语,允许证明者承诺一个多项式,并在之后证明特定点的计算结果;KZG(基于配对)和 FRI(基于哈希)是现代零知识证明(ZKP)的两种主要底层方案。
  • 菲亚特-沙米尔启发式: 一种将交互式证明协议转换为非交互式证明协议的技术,通过将验证者的随机挑战替换为哈希函数输出,使得零知识证明协议无需实时交互即可进行验证。
  • 递归证明组合: 这种技术能够在电路内部创建一个能够验证另一个证明的证明,从而实现证明链,压缩任意数量的计算;Halo 2 无需可信设置即可实现,而 Nova 的折叠方案则以极低的成本实现了这一目标。
  • R1CS(秩1约束系统): 一种算术化格式,将电路约束表示为向量上的秩为 1 的二次方程;被 Groth16、Marlin 和 Nova 使用。
  • PLONKish 算术: PLONK及其变体使用的约束系统格式,具有选择器多项式、自定义门、置换参数和查找表等特点,可实现灵活的电路设计。
  • Cairo(编程语言): 一种专为编写可证明程序而设计的编程语言,StarkNet 使用该语言将智能合约编译成可使用 STARKs 进行证明的表示形式。
  • 圆周: 一种用于定义算术电路的领域特定语言,广泛应用于以太坊零知识证明(ZKP)生态系统中,用于编写可编译为 Groth16 和 PLONK 证明器的 R1CS 约束的电路。

常见问题解答

问:zk-SNARK 和 zk-STARK 有什么区别? 两者的主要区别在于可信设置和底层密码学假设。zk-SNARKs,特别是像 Groth16 和使用 KZG 的 PLONK 这样基于配对的 zk-SNARKs,需要可信设置仪式,并且依赖于易受量子计算机攻击的椭圆曲线假设。它们生成的证明非常小,验证速度也很快。zk-STARKs 不需要可信设置,并且依赖于被认为具有抗量子能力的哈希函数。它们生成的证明更大,验证速度较慢,但​​仍然很快。实际上,SNARKs 和 STARKs 之间的选择需要在证明大小(链上成本)、证明器性能、抗量子能力和信任假设之间进行权衡。许多现代系统采用混合方法,例如生成 STARK 证明,然后将其封装在 SNARK 中以降低链上验证成本。

问:零知识证明如何实现区块链的可扩展性? 零知识证明 (ZKP) 通过零知识汇总 (ZK-rollup) 实现扩展。汇总操作者在链下执行数千笔交易,计算由此产生的状态变更,并生成一个 ZKP 来证明所有交易均已正确执行。该单一证明连同状态差异一起发布到 Layer 1 区块链。Layer 1 智能合约验证该证明(无论批次中有多少笔交易,其计算量大致相同),然后应用状态变更。这意味着 Layer 1 只需验证一个证明,而无需重新执行数千笔交易,从而在继承底层安全保障的同时,显著提升吞吐量。

问:什么是可信设置?为什么它存在争议? 可信设置是一次性的仪式,用于生成某些 SNARK 证明系统所需的加密参数,称为结构化参考字符串。在仪式过程中,会使用随机生成的秘密值(有时被称为“有毒废料”)来计算这些参数。如果任何人能够重构这些秘密值,原则上他们就可以伪造证明,创建虚假交易,凭空铸造代币,或生成虚假身份证明,而所有这些都会被验证者视为有效。这种担忧源于安全性依赖于这些秘密值的不可逆转销毁。多方计算仪式通过让多个参与者贡献随机性来缓解这一问题,因为只需要一个诚实的参与者即可确保安全性。然而,对于力求实现完全无需信任的系统而言,可信设置仍然是一个哲学层面的问题,这也是为什么像 STARK 和 Halo 2 这样的新型系统完全摒弃了它的原因。

问:零知识证明能否在不泄露个人数据的情况下用于身份验证? 是的,这是最强大的应用之一。利用基于零知识证明(ZKP)的身份系统,您可以在不泄露底层数据的情况下证明自身的特定属性。例如,您可以证明自己已年满18岁而无需透露出生日期,证明您已完成KYC认证而无需透露姓名或护照号码,证明您不在制裁名单上而无需透露身份,或者证明您是合格投资者而无需透露净资产。DeFi协议或服务会收到证明声明属实的加密证据,并可在链上进行验证,但永远不会获知底层个人数据。这可以同时实现合规性和隐私保护。

问:什么是递归证明组合?它为什么重要? 递归证明组合是指零知识证明(ZKP)能够在其内部验证另一个ZKP,本质上是一个证明来验证另一个证明。这创建了一条链,其中每个证明都证明了所有先前证明的正确性,从而将任意数量的计算压缩成一个单一的、大小恒定的最终证明。对于区块链而言,这意义重大:递归系统无需为每批交易验证一个新的证明,而是可以生成一个证明,表明先前的证明有效,并且新一批交易也正确,从而将链的历史记录累积到一个证明中。一些协议使用这种方法来维护一个大小大致恒定的区块链,而无需考虑链的长度。Nova的折叠方案通过“折叠”计算实例而不是在每一步生成完整的证明,显著降低了递归的成本。

问:在以太坊上验证零知识证明需要多少费用? 链上验证成本因证明系统而异。在以太坊上,Groth16 证明的验证通常需要几十万 gas。PLONK 验证的成本往往略高一些。STARK 验证通常更昂贵,因为其证明规模更大,因此许多基于 STARK 的系统会将证明封装在最终的 SNARK 中,以降低链上验证成本。在零知识汇总 (zk-rollup) 的上下文中,此验证成本会分摊到批次中的所有交易,因此当批次包含数千笔交易时,每笔交易的实际验证成本可能非常低。以太坊的 EIP-4844 blob 交易以及随后 Fusaka 时代 blob 容量的增加,进一步降低了发布与这些证明相关的状态差异的成本。

问:零知识证明在实践中真的能做到“零知识”吗? 数学上的零知识性质保证了证明不会泄露关于秘密见证人的任何信息,除了被证明的陈述为真之外。然而,在实践中,多种因素可能导致信息泄露。提交证明本身就是公开的元数据;观察者可以知道某人在特定时间进行了交易。匿名集的大小至关重要,因为如果只有少数人使用屏蔽池,交易图分析可以缩小参与者的范围。针对证明生成的侧信道攻击,例如时序或功耗分析,可能会泄露关于见证人的信息。证明的公开输入(设计上可见)如果电路设计不仔细,可能会泄露超出预期的信息。为了最大限度地保护隐私,基于零知识证明的系统应结合大型匿名集、时序混淆和精心设计的电路,以最大限度地减少公开输入。

来源

  • Goldwasser, S.、Micali, S. 和 Rackoff, C.,“交互式证明系统的知识复杂性
  • Groth, J.,“关于基于配对的非交互式论证的规模”(Groth16)
  • Gabizon, A.、Williamson, Z. 和 Ciobotaru, O.,“PLONK”
  • Ben-Sasson, E.、Bentov, I.、Horesh, Y. 和 Riabzev, M.,“可扩展、透明和后量子安全计算完整性”(STARKs)
  • Bowe, S.、Grigg, J. 和 Hopwood, D.,“无需可信设置的递归证明组合”(Halo)
  • Kothapalli, A.、Setty, S. 和 Tzialla, I.,“Nova:来自折叠方案的递归零知识论证”,
  • 以太坊基金会,“零知识证明”,ethereum.org
  • Buterin, V.,“Rollups 不完全指南”,vitalik.eth.limo

最新资源和博客