Zero Knowledge Proof (ZKP) 是什么?
Zero Knowledge Proof (ZKP) 是一种在不泄露背后信息的情况下证明某件事为真的方法。比如证明你知道密码但不输入它,或者在不公开生日的情况下证明你已满21岁。看起来像魔术,但基于数学。
有人认为 Zero Knowledge Proof (ZKP) 会把一切都隐藏,所以会被用于偷偷摸摸的行为。并非如此。Zero Knowledge Proof (ZKP) 证明你所定义的具体断言,验证者在不看到你的秘密的情况下仍能严格核验。
Zero Knowledge Proof (ZKP) 的工作原理
通过一个简单例子快速了解。你想证明自己有足够资金进行交易,但不想公开余额。
- 步骤 1:你选择一个断言,例如“我的余额至少为 X”,并用随机性对你的隐私数据进行承诺。
- 步骤 2:你用那些隐私数据加上公开信息生成一个证明,构造方式使数学上能够通过检验。
- 步骤 3:你将证明发送给验证者,而不是发送秘密本身。
- 步骤 4:验证者运行一个检验,结果要么接受要么拒绝。不会查看你的余额。
- 步骤 5:若被接受,任何人后来都可以在不再与你交互的情况下重复验证同一证明。
其底层依赖严谨的 密码学。没错,数学保存着证据。
为什么 Zero Knowledge Proof (ZKP) 很重要
那为什么你应该关心?三个简要角度。
- 好处:证明所需信息,同时将其余信息保留给自己。泄露更少,风险更低。
- 视角:以最少数据分享的应用更符合现代思路,只公开必要内容。
- 相关性:你会在 rollups、私密转账以及任何成熟的 区块链 上看到 Zero Knowledge Proof (ZKP) 的应用。
当你听到某个应用使用 Zero Knowledge Proof (ZKP) 时,问两个问题。究竟在证明什么?是否需要可信设置?此外,如果你在意数据控制,Zero Knowledge Proof (ZKP) 也应当与严格的 隐私 做法结合使用。
Zero Knowledge Proof (ZKP) 的关键特性
通俗说,它有哪些特别之处。
- 私密:验证者在不知道你的秘密的情况下,知道断言为真。
- 简洁:证明可以很小且快速校验,即使在链上也可以。
- 快速:验证比重新计算全部过程要轻量得多。
- 可组合:你可以将证明叠加或将多个检查合并为一个。
- 可扩展:通过把繁重计算移出验证者并保持正确性,它有助于 可扩展性。
变体
不同形式适合不同需求。
- SNARKs:证明短小,验证快速,通常需要可信设置。
- STARKs:无需可信设置,但证明更大,对后量子研究友好。
- Bulletproofs:适合范围证明,常用于隐私金额。
- Sigma:经典的交互式形式,许多课程有讲解。
Zero Knowledge Proof (ZKP) 本身不能替你的应用提供完整安全保护。如果你的断言太弱或设置草率,证明即便正确也可能无助于安全。请谨慎设计断言。
示例
某城市举行投票,选民证明其有资格且尚未投票,同时他们的身份对公开计票保持隐藏。
有趣事实
解释 Zero Knowledge Proof (ZKP) 的经典派对把戏用到两只颜色看似相同的球和蒙眼测试,展示你能区分它们而不透露哪只是哪个。学术范儿,但效果很好。
总结
一句话概括,Zero Knowledge Proof (ZKP) 是在不多余泄露的情况下进行证明,所以你可以说我能证明但不展示细节。
