零知识证明允许一方在不透露除陈述本身真实性之外的任何信息的情况下,向另一方证明某个陈述为真。它是区块链隐私、可扩展性汇总以及越来越多的身份验证系统背后的密码学技术。
摘要
- 零知识证明允许证明者使验证者确信计算已正确执行,而无需透露底层数据,从而在区块链上实现隐私和可扩展性。
- 区块链中使用的两大类零知识证明是 zk-SNARK(需要初始可信设置仪式)和 zk-STARK(不需要可信设置,但生成的证明更大)。
- 以太坊二层汇总(如 zkSync、Scroll 和 Polygon zkEVM)使用零知识证明将数千笔交易压缩为单个证明,并在主链上进行验证,从而将 gas 成本降低 90% 或更多。
- Vitalik Buterin 于 2025 年底引入了 GKR 协议,以加速以太坊零知识证明的验证,旨在使该技术在大规模日常使用中变得实用。
- 零知识证明在数学上是可靠的,但并非魔法。它们依赖于特定的密码学假设,需要大量的计算资源来生成,并且大规模投入生产使用的时间还不到三年。
零知识证明的标准解释使用洞穴类比。阿里巴巴知道打开圆形洞穴内一扇门的暗语。他可以通过按需从一侧进入并从另一侧出来来证明他知道这个暗语,而无需大声说出暗语。经过足够多次成功的演示后,验证者在统计上确信阿里巴巴知道这个秘密。
这个类比是正确的,但不完整。它抓住了直觉,但忽略了机制。在实践中,零知识证明与洞穴或门无关。它们涉及多项式承诺、椭圆曲线配对以及数学性质,这些性质允许一方将计算编码为一组约束,而另一方验证这些约束是否满足,而无需了解满足它们的值。
本文解释了零知识证明的作用、两种主流证明系统的工作原理、它们在生产中的部署位置以及它们不能做什么。如果你听说零知识证明解决了区块链的所有隐私和可扩展性问题,那么现实更为具体且更有趣。
三个性质
零知识证明必须满足三个数学性质。完备性意味着如果陈述为真,并且证明者和验证者都遵循协议,验证者将始终接受该证明。可靠性意味着如果陈述为假,任何作弊的证明者都无法说服验证者接受该证明,除非概率可以忽略不计。零知识性意味着验证者除了陈述是否为真之外,什么也学不到。
第三个性质是反直觉的。你如何在不了解计算的情况下验证计算?答案在于证明系统的结构。证明者将计算编码为多项式方程,使用密码学承诺方案对该多项式进行承诺,然后响应验证者的随机挑战。验证者根据承诺检查响应,而无需看到多项式本身。
在非交互式零知识证明(区块链中使用的类型)中,随机挑战被应用于承诺的哈希函数所取代。这被称为 Fiat-Shamir 启发式,它允许证明者生成整个证明,而无需任何来回通信。生成的证明是一个紧凑的数据字符串,任何人都可以独立验证。
数学基础依赖于某些计算问题的难度。对于 zk-SNARK,安全性依赖于椭圆曲线上计算离散对数的难度。对于 zk-STARK,安全性依赖于哈希函数的抗碰撞性,这被认为是一个较弱且更保守的假设。如果这两个假设中的任何一个被证明是错误的,相应的证明系统就会崩溃。这就是为什么在 zk-SNARK 和 zk-STARK 之间进行选择涉及的不只是证明大小和验证速度的权衡。
zk-SNARKs:可信设置,小证明
zk-SNARK 代表零知识简洁非交互式知识论证。关键词“简洁”是关键区别:zk-SNARK 证明非常小,通常只有几百字节,并且无论底层计算多么复杂,都可以在毫秒内完成验证。
这种简洁性的代价是可信设置。大多数 zk-SNARK 构造需要一个初始仪式,生成一组结构化参考字符串。这些字符串供证明者和验证者使用。如果用于生成它们的随机值未被妥善销毁,任何保留这些值的人都可以创建看似有效的假证明。这有时被称为“有毒废料”。
现代可信设置仪式使用多方计算协议,数百或数千名参与者各自贡献随机性。安全保证是,只要至少有一名参与者诚实地销毁其随机贡献,设置就是安全的。Zcash 通过其 Powers of Tau 仪式开创了这种方法,后续项目对其进行了改进。
较新的 zk-SNARK 构造(如 PLONK 及其变体)使用通用且可更新的可信设置,这意味着相同的设置可以用于不同的电路,并且额外的参与者可以随着时间的推移加强设置,而无需从头开始。这缓解了可信设置的担忧,但并未完全消除。根本的权衡仍然存在:以一次性信任假设换取更小、更快的证明。
zk-STARKs:无需可信设置,证明更大
zk-STARK 代表零知识可扩展透明知识论证。“透明”意味着不需要可信设置。参考字符串由公开可验证的随机性生成,这完全消除了有毒废料问题。“可扩展”指的是证明时间随计算规模准线性增长,使 STARK 适用于非常大的计算。
权衡在于证明大小。zk-STARK 证明通常为几十到几百千字节,而 zk-SNARK 仅为几百字节。在数据存储昂贵的区块链上,这种差异很重要。STARK 的验证时间也稍长,但仍足够快,适合实际使用。
StarkWare 是 Starknet 背后的公司,一直是 zk-STARK 的主要商业倡导者。他们的论点是,透明性加上仅依赖哈希函数而非椭圆曲线所带来的抗量子性,使得 STARK 即使以更大的证明为代价,也是更好的长期选择。量子计算机是否会在相关时间范围内真正威胁到椭圆曲线密码学尚有争议,但保守的安全姿态吸引了那些长期稳健性比即时效率更重要的应用。
ZK rollups:扩展应用
当今区块链中零知识证明最重要的实际应用是 ZK rollups。Rollup 在链下执行交易,将它们批量处理,生成一个零知识证明,证明所有交易都是有效的,然后仅将证明和压缩的交易数据发布到主链。主链验证该证明,其成本比逐个执行每笔交易低几个数量级。
这种架构允许以太坊第 2 层网络以第 1 层上单次证明验证的成本处理数千笔交易。实际上,像那些基于以太坊基础设施构建的 ZK rollups,与直接在主网上执行相同交易相比,可将 gas 成本降低 90% 或更多。
截至2026年年中,在生产环境或后期开发阶段的主要ZK Rollup项目包括zkSync Era、Scroll、Polygon zkEVM、Linea和Taiko。每个项目使用不同的证明系统,并在EVM兼容性、证明速度和去中心化之间做出不同的权衡。zkSync使用自定义虚拟机和基于PLONK的证明。Scroll旨在使用zk-SNARK证明器实现字节级EVM等效。Polygon zkEVM在递归架构中结合了STARK和SNARK证明。
这些项目之间的竞争正在推动证明生成的快速创新。在过去两年中,证明时间从几小时降至几分钟,再降至几秒。Vitalik Buterin引入的GKR协议用于以太坊代表了朝着使ZK证明验证成为常规操作而非计算瓶颈迈出的又一步。
Rollup之外的隐私应用
零知识证明最初是为隐私而非可扩展性而开发的。Zcash于2016年推出,是第一个使用zk-SNARK进行私人交易的主要区块链。在屏蔽的Zcash交易中,发送者、接收者和金额都对公众隐藏,而证明则保证没有凭空创造硬币,也没有发生双重支付。
隐私应用不仅限于金融交易。零知识证明可以验证身份属性,而无需透露底层数据。用户可以证明自己年满18岁而不透露出生日期,证明自己是特定国家的公民而不透露护照号码,或者证明自己持有特定凭证而不透露签发机构。
像Worldcoin和Polygon ID这样的项目已经实施了基于ZK的身份验证系统。Worldcoin使用零知识证明来验证一个人已被其虹膜扫描设备扫描,而不会将扫描与任何特定身份关联起来。以太坊生态系统项目越来越多地将基于ZK的身份作为与金融交易并行的原语集成。
隐私用例面临监管阻力。多个司法管辖区的金融监管机构表示担心,完全私密的交易可能助长洗钱、逃避制裁和恐怖主义融资。隐私作为一项基本权利与透明度作为监管要求之间的紧张关系是加密货币领域定义性的政策辩论之一,而零知识证明正位于其中心。
零知识证明不涵盖的内容
零知识证明保证计算完整性:即特定计算被正确执行。它们不保证计算的输入是正确的,不保证计算值得执行,也不保证围绕证明构建的系统没有错误。
ZK Rollup可以证明批次中的所有交易都符合Rollup的规则。它不能证明规则本身是正确的。Rollup智能合约或证明电路中的错误可能会为无效的状态转换生成有效证明。几个ZK Rollup项目在审计和测试网部署期间披露并修补了其电路中的关键错误。
零知识证明也不能消除对数据可用性的需求。在ZK Rollup中,证明告诉主链状态转换是有效的,但用户仍然需要访问底层交易数据来重建状态并验证他们的资金完好无损。如果没有数据可用性,用户必须信任Rollup运营商,这在一定程度上违背了证明的目的。
生成证明的计算成本很高。虽然验证成本低廉,但证明生成需要大量硬件。在生产规模上运行ZK证明器通常需要具有数百GB内存和专用硬件加速器的服务器。这种成本造成了一种自然的中心化力量,即谁有能力运行证明器,即使证明本身可以被任何人验证。
评估ZK项目的实用检查
在评估一个声称使用零知识证明的项目时,有几个问题可以区分严肃的实现与营销宣传。
首先,询问证明系统是否经过独立审计。电路漏洞可能导致可靠性漏洞,使无效证明被接受为有效。未经多个独立密码学公司审计的项目应谨慎对待。
其次,询问证明系统是否使用可信设置,如果是,仪式是如何进行的。只有少数参与者参与的可信设置,或由单一公司在没有外部验证的情况下进行的设置,代表着重大的信任假设。
第三,检查项目是否公开其证明验证合约,以及这些合约是否已在链上验证。如果验证在链下进行,或通过由多重签名控制的可升级代理合约进行,那么零知识证明可能无法提供用户期望的安全保证。
第四,查看数据可用性解决方案。如果项目不将交易数据发布到链上或可信的数据可用性层,用户就无法独立验证状态,必须信任操作者。这与零知识证明本应实现的无信任性有重大偏离。
常见问题解答
简单来说,什么是零知识证明?
零知识证明是一种证明你知道某件事而不泄露你所知道的内容的方式。在区块链中,它允许一台计算机向另一台计算机证明一组交易是有效的,而无需显示这些交易的细节。这同时实现了隐私和可扩展性。
zk-SNARKs和zk-STARKs有什么区别?
zk-SNARKs产生非常小的证明,通常只有几百字节,并且验证速度快,但需要一次性的可信设置仪式。zk-STARKs产生较大的证明,通常为几十千字节,但不需要任何可信设置,并且被认为能抵抗量子计算攻击。两者都实现了零知识可验证计算的相同目标。
ZK rollups如何降低以太坊的Gas费用?
ZK rollups在以太坊主链之外执行交易,将它们批量处理,并生成一个零知识证明,证明所有交易都是有效的。只有证明和压缩数据被发布到以太坊。验证单个证明比执行数千笔单独交易要便宜得多,导致Gas费用降低90%或更多。
零知识证明能抵抗量子攻击吗?
这取决于证明系统。zk-STARKs依赖于哈希函数,这被认为能抵抗量子计算机。zk-SNARKs依赖于椭圆曲线密码学,理论上可能被足够强大的量子计算机破解。然而,能够破解椭圆曲线的实用量子计算机目前还不存在,可能几十年内也不会出现。
零知识证明能让所有区块链交易都变得私密吗?
技术上可以,但实际中存在权衡。为每笔交易生成证明会增加计算成本和复杂性。完全私密的交易在要求金融透明的司法管辖区也面临监管挑战。像Zcash这样的项目提供可选的隐私,而大多数ZK rollups主要将这项技术用于可扩展性而非隐私。
什么是可信设置,为什么它很重要?
可信设置是一次性的仪式,用于生成某些证明系统所需的密码学参数。如果仪式期间使用的随机值未被妥善销毁,有人可能创建伪造的证明。现代仪式使用多方计算,数百名参与者贡献随机性,只要至少有一名参与者是诚实的,设置就是安全的。
哪些区块链使用零知识证明?
Zcash是第一个使用零知识证明进行私密交易的主要区块链。以太坊通过第2层rollups使用ZK证明,包括zkSync、Scroll、Polygon zkEVM、Linea和Starknet。Mina Protocol使用递归ZK证明来维护固定大小的区块链。其他几个链也将ZK技术用于特定功能,如身份验证或跨链消息传递。
生成零知识证明需要多长时间?
证明生成时间取决于计算的复杂性和所使用的硬件。对于包含数千笔交易的ZK rollup批次,目前使用专用硬件生成证明需要几秒到几分钟。两年前,同样的证明需要几个小时。趋势是通过硬件加速和算法改进实现更快的证明,目标是实时生成证明。







