词汇表
零知识证明 (ZKP)
2026/4/17
零知识证明 (ZKP) 是一种密码学协议,其中一方(证明者)在不透露任何额外信息的情况下说服另一方(验证者)某个声明是真实的。零知识证明由 Shafi Goldwasser、Silvio Micali 和 Charles Rackoff 在他们1985年的论文《交互式证明系统的知识复杂性》中首次提出——这一成果获得了哥德尔奖(1993年),并为 Goldwasser 和 Micali 的图灵奖(2012年)做出了贡献。
三个属性
每个零知识证明系统都满足:
- 完备性 — 如果声明是真实的,诚实的证明者可以说服诚实的验证者
- 可靠性 — 如果声明是假的,没有作弊的证明者可以说服验证者(除非概率极小)
- 零知识 — 验证者除了声明的真实性外,什么也学不到;关于声明为何真实的信息不会泄露
经典直观例子:证明你知道密码而不透露密码。
现代证明系统
- zk-SNARK(简洁非交互式知识论证)— 非常小的证明(几百字节),常数时间验证。经典构造(Groth16、PGHR13)需要特定电路的可信设置;PLONK 和 Marlin 使用通用可更新设置;Halo 2(由 Electric Coin Company 为 Zcash 开发)使用多项式承诺,无需可信设置。
- zk-STARK(可扩展透明知识论证)— 由 Ben-Sasson 等人(2018年)引入。透明(无需可信设置),仅依赖于哈希函数,并且可能是后量子安全的。证明较大(几十到几百KB)。由 StarkWare 在 Starknet 和 StarkEx 中使用。
- Bulletproofs — 无需可信设置的短范围证明。自2018年以来被 Monero 用于保密金额。
- Nova / HyperNova,Plonky2 / Plonky3 — 现代折叠方案和递归 SNARK 系统,优化用于增量计算。
在加密中的应用
隐私
- Zcash — 使用 zk-SNARKs(Groth16 → Halo 2)的屏蔽交易
- Aztec Network、Aleo、Namada — 注重隐私的智能合约
- Monero — 用于范围证明的 Bulletproofs
- Tornado Cash — zk-SNARK 混合(美国财政部的制裁在2024年被第五巡回法院部分推翻)
可扩展性 — ZK-rollups
- zkSync Era、Starknet、Polygon zkEVM、Scroll、Linea — 将数千个 L2 交易压缩成一个发布到以太坊的有效性证明。这些汇总使用 ZK 来实现简洁性,而不是隐藏数据。
身份和凭证
- Worldcoin — 从虹膜扫描中证明身份而不透露扫描本身
- zk-email — 证明电子邮件收据而不透露电子邮件内容
- Polygon ID、Semaphore — 无可链接钱包历史的链上身份
可验证计算
- zkML(EZKL、Modulus Labs)— 证明 AI 模型在特定输入上正确运行
- 链上协处理器(Axiom、Herodotus)— 证明链下计算结果
常见误解 — "ZK" ≠ "隐私"
zk-rollup 在其名称中宣传 "ZK",但通常不提供用户隐私。此处的零知识属性用于简洁性——一个小证明证明了许多交易——而不是用于隐藏数据。所有交易在汇总上仍然是公开的。对于用户隐私,需要额外的设计(Aztec、Aleo)。
