零知识证明如何运作及其对隐私的重要性

BTC
ETH
ADA
LINK
MATIC
SOL
UNI
ZEC
零知识证明区块链扩展zk-SNARKs隐私
2026-08-11来源: crypto.news
零知识证明如何运作及其对隐私的重要性

你可以证明自己年满18岁,而无需透露生日。你可以证明自己有足够的资金完成交易,而无需透露余额。你可以证明计算被正确执行,而无需透露输入。零知识证明使这一切成为可能,并且它们正悄然成为自哈希函数以来区块链中最重要的密码学原语。

摘要

大多数零知识证明的介绍都从阿里巴巴山洞的类比开始,其中某人通过始终从验证者要求的一侧出来,证明自己知道打开门的暗语,而从不透露暗语。这个类比很迷人,但对于理解ZK证明在实践中的重要性完全无用。它告诉你这样的证明是可能的,却没有告诉你为什么在区块链上需要它。

实际的起点更简单。每个区块链都面临同样的矛盾:透明性带来信任,但透明性也破坏隐私。比特币的账本是公开的。每一笔交易、每一个余额、每一个地址对任何人都是可见的。以太坊也是如此。这种透明性使系统可审计且值得信赖,但也意味着任何知道哪个地址属于你的人,都能看到你进行过的每一笔交易、持有的每一个代币,以及交互过的每一个协议。

零知识证明解决了这一矛盾。它们让你能够证明关于数据的事实,而无需透露数据本身。你可以证明你的账户余额超过某个阈值,而无需透露确切余额。你可以证明交易有效,而无需透露发送者、接收者或金额。你可以证明自己不在制裁名单上,而无需透露身份。

背后的数学很深奥,应用却是立竿见影的。

每个ZK证明必须具备的三个属性

每个零知识证明系统都必须满足三个属性,理解它们对于评估任何基于ZK的协议至关重要。

完备性。如果陈述为真,并且证明者和验证者都遵循协议,验证者将始终被说服。有效的证明永远不会验证失败。如果你确实知道秘密,证明总是有效的。

可靠性。如果陈述为假,任何作弊的证明者都无法说服验证者其为真,除非概率可忽略不计。不诚实的证明者无法伪造有效的证明。虚假证明通过验证的概率如此之小(通常小于2^128分之一),以至于实际上不可能。

零知识性。验证者除了陈述为真这一事实外,什么也学不到。证明不会泄露关于秘密本身、任何中间计算或用于生成证明的任何数据的任何信息。验证者在看到证明后的知识,与有人直接告诉他们陈述为真时完全相同。

第三个属性使ZK证明不仅正确,而且有用。标准数字签名证明消息由特定密钥签名,但会泄露消息内容。标准哈希承诺证明值已被承诺,但在打开时会泄露该值。ZK证明证明秘密值之间存在某种关系,而不会在任何时候泄露这些值。

zk-SNARK和zk-STARK的区别

区块链中两种主流的ZK证明系统是zk-SNARK和zk-STARK。它们以不同的权衡解决相同的问题。

zk-SNARK(零知识简洁非交互式知识论证)产生小证明,验证速度快。典型的zk-SNARK证明约为200到300字节,在以太坊上链上验证大约需要20万到30万gas。验证时间恒定,无论被证明的计算有多复杂。验证单个交易的证明与验证一万笔交易的证明所需时间相同。

这种简洁性的代价是可信设置。大多数zk-SNARK系统需要一次性仪式,生成随机参数,之后销毁随机性。如果仪式中的随机性未被妥善销毁,攻击者可能伪造证明。Zcash进行了密码学历史上最复杂的可信设置仪式之一(“Powers of Tau”仪式),涉及全球数百名参与者,其安全假设是至少有一名参与者诚实地销毁了他们的随机性。

较新的SNARK系统如PLONK和Halo 2已经减少或消除了可信设置的要求,但这种看法仍然存在。一些项目特意避免使用SNARK,正是因为担心可信设置,即使他们可能使用的实现并不需要可信设置。

zk-STARKs(零知识可扩展透明知识论证)完全消除了可信设置。它们的安全性来源于哈希函数而非椭圆曲线假设,这使得它们是透明的(没有秘密参数),并且在理论上具有抗量子性(基于哈希的密码学被认为对量子计算机是安全的,而椭圆曲线密码学则不然)。

代价是大小。STARK证明比SNARK证明大得多,通常为几十到几百千字节,而SNARK证明只有几百字节。在数据存储需要消耗gas的区块链上,更大的证明意味着更高的验证成本。STARK技术的主要开发者StarkWare通过使用递归证明组合来解决这个问题:证明一个证明是有效的,然后证明这个证明的证明是有效的,从而压缩最终的链上足迹。

在实践中,这种区别比五年前不那么重要了。现代证明系统越来越多地融合了这两类技术的优点,工程重点已经从使用哪种证明系统转移到证明者生成证明的速度以及验证者检查证明的成本。

用于区块链扩展的ZK证明

ZK证明的扩展应用在概念上很简单。Rollup在链下执行一批交易,生成证明该批次交易正确执行的证明,并将证明发布到以太坊。以太坊验证者合约在单个操作中检查证明并接受新状态。

使其强大的是证明和验证之间的不对称性。为一万笔交易生成证明可能需要一台强大的机器花费几分钟。验证证明只需不到一秒,并且无论批次中有多少交易,gas成本都是固定的。这种不对称性使得ZK rollup能够将数千笔交易压缩为一次以太坊验证。

主要的ZK rollup各自采用不同的方法来实现这种架构。

zkSync Era使用自定义虚拟机(zkEVM),在语言层面与Solidity兼容,但编译为针对ZK证明生成优化的不同指令集。现有的以太坊合约可以以最小的更改重新编译为zkSync。

StarkNet使用Cairo编程语言和STARK证明。Cairo是一种专门为可证明计算设计的专用语言,这使其具有性能优势,但要求开发者学习新的语言和范式。

Polygon zkEVM旨在实现EVM等价性,这意味着它可以执行与以太坊相同的字节码,无需重新编译。这最大化了兼容性,但在使每个EVM操作码可证明方面引入了工程复杂性。

Scroll也以完全EVM等价为目标,并采用社区驱动的方法来实现其zkEVM,目标是成为最兼容以太坊的ZK rollup。

这些方法之间的竞争最终是兼容性和性能之间的竞争。ZK rollup与现有以太坊工具越兼容,开发者迁移就越容易。Rollup越优化其指令集以实现可证明性,其证明就越快、越便宜。

用于隐私的ZK证明

隐私应用是ZK证明变得最重要也最具争议的地方。

标准的以太坊交易会揭示发送方地址、接收方地址、转账金额以及调用的智能合约。这些信息是永久公开的。Chainalysis和Elliptic等链分析公司已经建立了整个业务,用于追踪透明账本上的交易流,通过交易所KYC数据、已知实体标签和行为模式将地址与现实世界身份联系起来。

ZK隐私协议打破了这种可见性链。在基于ZK的私人交易中,用户生成一个证明,证明其交易有效(发送方有足够的资金,没有双重支付,金额平衡),而不透露谁发送、谁接收或转账金额。证明发布在链上并由网络验证,但底层交易细节保持加密。

Zcash 是这一概念的第一个主要实现,于 2016 年推出,使用 zk-SNARK 进行屏蔽交易。Zcash 用户可以在透明交易(与比特币的公共账本相同)和屏蔽交易(发送方、接收方和金额隐藏在 ZK 证明之后)之间进行选择。实际上,Zcash 上屏蔽交易的采用率低于支持者的预期,大多数 Zcash 交易仍使用透明池。

更新的协议正在构建可编程隐私,不仅代币转移,任意智能合约逻辑也可以私下执行。Aztec Network 正在以太坊上构建一个隐私优先的第 2 层,所有交易默认都是私密的。Aleo 正在构建一个具有原生 ZK 支持的第 1 层区块链,用于私有智能合约。两者都使用 ZK 证明来验证状态转换,而不泄露所涉及的计算或数据。

隐私的潜力不仅限于个人交易。ZK 证明可以实现私人投票(证明你投了票而不泄露你的选择)、私人身份验证(证明你是特定国家的公民而不泄露你的护照号码)以及私人 DeFi(向流动性池提供流动性而不泄露你的地址或头寸规模)。

监管冲突

加密货币中的隐私占据了一个仍有争议的法律空间,该空间仍在定义中。

2022 年 8 月,美国财政部外国资产控制办公室(OFAC)制裁了 Tornado Cash,这是一个基于以太坊的混合器,使用 ZK 证明来打破存款和取款地址之间的联系。制裁开源智能合约代码(而非个人或公司)是前所未有的,在加密货币隐私社区引起了震动。

2024 年 5 月,Tornado Cash 的开发者之一 Alexey Pertsev 被荷兰法院判定犯有洗钱协助罪。该判决确立了一个法律先例,即如果该工具被用于非法目的,编写隐私保护代码可能承担刑事责任,无论开发者是否亲自协助了非法活动。

这些行动塑造了 ZK 隐私发展的方向。当前一代隐私协议正在围绕监管约束进行构建,而不是忽视它们。

选择性披露允许用户证明有关其身份或交易历史的特定事实,而无需透露所有信息。用户可以使用 ZK 证明证明他们通过了持牌交易所的 KYC,证明他们不在 OFAC 制裁名单上,或证明他们的资金并非来自受制裁的地址,所有这些都不会透露除所验证的具体声明之外的任何信息。

隐私池,由 Vitalik Buterin 等人正式提出的概念,允许用户证明他们从隐私集中的提款属于存款的干净子集。该协议不是不加区分地混合所有存款,而是维护排除已知非法地址的关联集。用户证明他们在干净集中的成员资格,而不会透露他们提取的具体存款。

这些妥协是否能满足监管机构的要求还有待观察。隐私和监控在架构上不兼容这一根本矛盾不会仅靠技术解决。ZK 证明为政策制定者提供了一个他们从未有过的工具:无需披露即可验证合规性的能力。他们是否选择使用它是一个政治问题,而不是密码学问题。

证明成本对哪些应用首先采用 ZK 技术具有具体影响。高价值金融交易(其中生成证明的成本相对于交易规模可以忽略不计)是最早的采用者。机构跨链转账、大型 DeFi 头寸和企业结算系统可以吸收每笔交易几美元的证明成本,而不会影响其经济性。消费者应用(其中单笔交易可能仅值几美元)需要证明成本再下降一个数量级,ZK 隐私才能在日常使用中变得实用。公司构建 ZK 专用 ASIC 的硬件加速努力正是针对这一成本障碍。

扩展和隐私应用的融合可能是 ZK 技术最被低估的方面。一个私下处理交易的 ZK rollup 将结合链下执行的吞吐量优势和加密状态转换的机密性优势。用户将获得快速、廉价的交易,这些交易对链分析也是不可见的。包括 Aztec 和 Polygon Miden 在内的几个项目正在构建这种组合,尽管将这两种能力合并到生产系统中的工程复杂性仍然很大。

本文不涵盖的内容

本文不涵盖支撑ZK证明系统的多项式承诺、椭圆曲线配对或Fiat-Shamir变换的数学原理。理解这些需要研究生水平的抽象代数知识,并且对于作为用户或投资者评估基于ZK的协议并非必要。

本文不涵盖ZK机器学习(zkML),这是一个新兴领域,利用ZK证明来验证机器学习模型产生了特定输出,而不泄露模型的权重或训练数据。该应用仍处于实验阶段,其实际影响仍在研究中。

本文不涉及ZK证明生成的硬件加速竞赛。像Cysic、Ingonyama和Fabric Cryptography等公司正在构建专门用于ZK证明的定制ASIC和FPGA,这可能将证明成本降低几个数量级。硬件领域变化太快,静态分析难以跟上。

使用基于ZK的协议前的实用检查

验证证明系统的审计状态。 ZK证明系统在数学上非常复杂,实现错误可能是灾难性的。电路(被证明计算的数学表示)中的漏洞可能允许攻击者伪造证明并铸造代币或窃取资金。检查证明系统及其电路是否由专门从事ZK密码学的公司审计,而不仅仅是普通的智能合约审计公司。

了解实际隐私保护的范围。并非所有基于ZK的协议都提供相同级别的隐私。有些隐藏交易金额但公开地址,有些隐藏地址但公开金额,有些则隐藏所有信息。阅读协议文档,准确了解哪些信息被隐藏,哪些仍然可见。交易时间、Gas模式和交互频率等元数据通常可以在核心交易数据被隐藏的情况下使用户去匿名化。

检查可信设置状态。如果协议使用zk-SNARK,确定它是否需要可信设置以及该设置是如何进行的。有数百名参与者的多方计算仪式比只有少数已知实体的小型仪式更可信。使用STARK、具有通用设置的PLONK或Halo 2的协议根本不需要可信设置。

评估监管风险。隐私协议在法律不确定的环境中运作。考虑协议是否具有合规机制(选择性披露、隐私池、选择性合规证明),以及该机制是否经过实际监管审查的检验。使用后来被制裁的隐私协议可能会使您转移或出售资产的能力复杂化。

测试证明时间。生成零知识证明是计算密集型的。在移动设备上,证明一个简单交易可能需要30秒到两分钟。在桌面上,可能需要几秒钟。如果证明时间对于你的用例来说太长,该协议可能不适合频繁交易。一些协议将证明过程卸载到专用服务器上,这更快,但引入了服务器不会学习你的私人数据的信任假设。

  1. 简单来说,什么是零知识证明?

    零知识证明是一种证明某事为真而不揭示其为何为真的方式。在区块链中,这意味着你可以证明交易有效、你拥有足够的资金,或者计算被正确执行,而无需揭示实际的交易细节、你的余额或计算中使用的数据。验证者确信该陈述为真,但不会学到其他任何信息。

  2. zk-SNARKs和zk-STARKs有什么区别?

    zk-SNARKs产生非常小的证明(几百字节),验证成本低,但历史上需要可信设置仪式来生成初始系统参数。zk-STARKs产生更大的证明(几十到几百千字节),但不需要可信设置,并且理论上抵抗量子计算攻击。在实践中,现代证明系统正在融合,大小、速度和信任假设之间的权衡变得不那么明显。

  3. ZK证明如何帮助区块链扩容?

    ZK rollups在链下执行数千笔交易,并生成一个证明所有交易都被正确执行的单一证明。该证明在以太坊上通过一次操作进行验证,无论批次中有多少交易,其gas成本都是固定的。生成证明的成本(高,但由rollup运营商承担)与验证证明的成本(低,且整个批次只需支付一次)之间的不对称性,正是产生扩容效果的原因。

  4. 基于ZK的隐私币是否非法?

    像Zcash这样的基于ZK的隐私币在大多数司法管辖区并非固有非法。然而,监管方法差异很大。一些交易所已下架隐私币以遵守反洗钱法规。2022年的Tornado Cash制裁表明,保护隐私的协议可能面临监管行动。合法性取决于你的司法管辖区以及你如何使用该技术,而不是技术本身。

  5. 什么是可信设置,为什么它很重要?

    可信设置是一些zk-SNARK系统生成密码学参数所需的一次性仪式。在仪式期间,会创建随机值,之后必须销毁。如果任何参与者保留了随机值,他们理论上可以伪造证明。多方仪式通过要求可能数百名参与者中只有一名需要诚实地销毁其随机性来降低这种风险。像PLONK和Halo 2这样的新证明系统已经消除或最小化了可信设置的要求。

  6. ZK证明能否使所有区块链交易都私有化?

    从技术上讲,可以。像Aztec Network和Aleo这样的协议正在构建所有智能合约交互默认私有的系统,而不仅仅是代币转移。然而,所有交易的完全隐私带来了监管挑战,增加了计算成本(ZK证明生成昂贵),并改变了用户体验(证明需要时间)。链上完全隐私是否会成为标准,既取决于监管决策,也取决于技术能力。

  7. 隐私池是如何工作的?

    隐私池允许用户将资金存入共享池,并从不同地址提取,从而打破两个地址之间的链上联系。与简单的混币器不同,隐私池使用ZK证明结合关联集,让用户证明他们的提款属于排除已知非法地址的存款子集。这为用户提供了隐私,同时提供了合规机制。用户证明他们在干净集合中,而无需透露他们提取的是哪个具体存款。

  8. 使用基于ZK的协议的主要风险是什么?

    主要风险包括ZK电路中的实现错误(可能允许伪造证明)、旧SNARK系统中的可信设置漏洞、针对隐私功能的监管行动、消费硬件上证明生成的高计算要求,以及ZK工具相对于标准智能合约开发相对不成熟。此外,元数据泄露(交易时间、gas模式、交互频率)有时即使核心交易数据是私有的,也可能使用户去匿名化。