技术

Zero-Knowledge

零知识证明

一种密码学技术,可以在不泄露背后数据的前提下,证明某个陈述为真。

最近审阅: 2026-05-24 审阅人Kevin Riedl wiki ↗

零知识证明允许一方(证明者)让另一方(验证者)相信自己知道某条信息,而不揭示这条信息本身。经典例子:在不暴露出生日期的情况下,证明自己年满 18 岁。

在生产中,ZK 有两类常见形态。ZK-SNARK 体积更小、验证更快,但需要一次 Trusted Setup。ZK-STARK 更大也更慢,但不需要 Trusted Setup 且抗量子。多数链如今已经为常见证明(身份、余额、投票资格)提供了预制电路,所以你不必为了发布一个验证它们的智能合约而在编制里养一个密码学家。

ZK 真正赚回成本的地方,举个实际例子:一家受监管的交易所必须向审计师证明每个用户都通过了 KYC,却不把一份包含姓名和护照号的数据库交给审计师。一个零知识证明让交易所证明「这组账户全部通过了 KYC 验证」,而底层身份保持私密。在欧盟,GDPR 让那份护照数据库成为一项你宁愿不持有的负债,所以这份隐私不是锦上添花,它就是要点本身。反例同样有教益:如果一次受信数据库查询就能让验证者满意,那 ZK 就是昂贵的表演。

诚实的工程取舍,以及创始人最常犯的错误:以为难的部分是密码学。数学是可靠的。风险住在电路里。一个细微出错的电路会产出一个完美通过验证、却证明了错误陈述的证明,而这个 Bug 在有人利用它之前都是隐形的。这就是为什么 ZK 工作属于 账户抽象 及其他审计不可协商的链上原语附近,而不是当作一个营销功能拴上去。商业理由比炒作窄:当你需要在链上(或对一个交易对手)证明某个属性而不泄露数据时,ZK 是真正有价值的。对多数消费级应用、以及多数顺嘴提它的 web3 项目来说,它是杀鸡用牛刀。

// FAQ

常见问题

SNARK 体积小、验证快,但需要 Trusted Setup(一次仪式出错,整条电路就废)。STARK 不需要 Trusted Setup 且抗量子,代价是证明体积更大、验证更慢。链上费用敏感选 SNARK,长期安全敏感选 STARK。
自己手写电路。除非你团队里有密码学博士,否则用 Circom、Noir、Halo2 这类成熟框架,加上已经审计过的预制电路(身份、余额、投票资格)。自己手写电路在生产里出 Bug,几乎一定是私钥泄露级别的灾难。
当你只是想「隐藏数据」时。简单的对称加密加上权限控制能解决 90% 的需求,成本是 ZK 的千分之一。ZK 真正的杀手锏是「在不揭示数据的前提下向第三方证明属性」,没有这个需求就别上。