ZK零知识证明

以太坊 零知识证明

Zero—Knowledge Proof 零知识证明,一种密码学工具,证明者可以向验证者证明某个声明是真实的,并且除了证明该声明是真实的之外不会透露任何额外信息。

例如,“我是 X 国的公民”。你需要提供“证据”来支持你的声明,例如护照或身份证。但这种方法缺乏隐私,我的个人身份信息储存在中心化数据库中与其他第三方服务商共享,这些数据库很容易受到黑客攻击,导致身份泄露或被盗用。那么零知识证明就可以在不透露我的护照、身份证的情况下证明我确实是 X 国公民!

要具备:

交互式证明

证明者和验证者相互提问验证对方是否是真的。

  1. 证明者先行动,选择一个随机数(或路径),并计算出一个公开的“承诺”发送给验证者。

  2. 验证者收到承诺后,随机生成一个“挑战”问题发给证明者。

  3. 证明者根据自己知道的秘密和收到的挑战,计算出一个“响应”答案发回给验证者。验证者通过证明者的回复可以检验证明者是否是真的。

为了确保证明者并不是偶然盲目猜对答案的,验证者会多次来提问,证明者造假的可能性会极大的降低,直到最终验证者满意。

非交互式证明

互动式证明的作用有限,因为它要求双方同时在线,反复互动。 即使验证者相信证明者是诚实的,该证明也不能用于独立验证(计算一个新的证明需要证明者和验证者之间一个新的信息集)。

非互动式证明只需要证明者和验证者之间进行一轮沟通。证明者把秘密信息输入到一个特殊的算法中,然后计算出一个零知识证明。这个证明会被发送给验证者,验证者使用另一个算法来检验证明者是否知道秘密信息,就好像他们的公钥和私钥。

zk-SNARKs 零知识简洁非交互式知识论证

全称是 Zero-Knowledge Succinct Non-interactive ARguments of Knowledge。

这种方式生成的证明文件非常小,验证起来也极快。打个比方,无论被证明的计算有多么复杂——哪怕是把一栋大楼的建筑图纸压缩成一张 A4 纸——最终生成的证明文件大小都差不多,验证时间也差不多。这对区块链来说是福音,因为区块链上的每一次验证都要花费 Gas,证明越小越快,成本就越低。

zk-SNARKs 的缺点是一个非常严重的"原罪":它依赖一个叫做**可信初始化(Trusted Setup)**的仪式。在部署一套 zk-SNARK 系统之前,必须先有一些人坐在一起,共同生成一组特殊的"公共参数"(也叫"有毒废料",Toxic Waste)。这个仪式结束后,所有参与者必须销毁自己手中那份参数的碎片。道理很简单:如果任何一个参与者暗中留存了自己的那份碎片,他就可以利用它凭空捏造出虚假但看起来合法的证明,相当于在系统里留了一个"上帝后门"。

zk-STARKs 零知识可扩展透明知识论证

STARK 的全称是 Zero-Knowledge Scalable Transparent Arguments of Knowledge。

关键词:可扩展(Scalable)透明(Transparent)。“透明"是 STARKs 最大的底气所在。它彻底抛弃了可信初始化仪式,“可扩展"则意味着它在处理大规模计算时效率更高。SNARKs 的证明生成速度会随着计算量增加而变慢,但 STARKs 的增长是亚线性的,更能应对复杂的计算场景。

其最大的缺点是证明文件体积更大,往往比 SNARKs 大出几十倍甚至上百倍。这意味着把这个证明发布到链上的 Gas 费会更贵,也更占用网络带宽。此外,STARKs 依赖的密码学假设(主要是哈希函数的抗碰撞性)在数学上更"朴素”,被认为在量子计算时代来临时,具有更强的抗量子攻击能力

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计