Zero—Knowledge Proof 零知识证明,一种密码学工具,证明者可以向验证者证明某个声明是真实的,并且除了证明该声明是真实的之外不会透露任何额外信息。
例如,“我是 X 国的公民”。你需要提供“证据”来支持你的声明,例如护照或身份证。但这种方法缺乏隐私,我的个人身份信息储存在中心化数据库中与其他第三方服务商共享,这些数据库很容易受到黑客攻击,导致身份泄露或被盗用。那么零知识证明就可以在不透露我的护照、身份证的情况下证明我确实是 X 国公民!
要具备:

交互式证明
证明者和验证者相互提问验证对方是否是真的。
-
证明者先行动,选择一个随机数(或路径),并计算出一个公开的“承诺”发送给验证者。
-
验证者收到承诺后,随机生成一个“挑战”问题发给证明者。
-
证明者根据自己知道的秘密和收到的挑战,计算出一个“响应”答案发回给验证者。验证者通过证明者的回复可以检验证明者是否是真的。
为了确保证明者并不是偶然盲目猜对答案的,验证者会多次来提问,证明者造假的可能性会极大的降低,直到最终验证者满意。
非交互式证明
互动式证明的作用有限,因为它要求双方同时在线,反复互动。 即使验证者相信证明者是诚实的,该证明也不能用于独立验证(计算一个新的证明需要证明者和验证者之间一个新的信息集)。
非互动式证明只需要证明者和验证者之间进行一轮沟通。证明者把秘密信息输入到一个特殊的算法中,然后计算出一个零知识证明。这个证明会被发送给验证者,验证者使用另一个算法来检验证明者是否知道秘密信息,就好像他们的公钥和私钥。
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 依赖的密码学假设(主要是哈希函数的抗碰撞性)在数学上更"朴素”,被认为在量子计算时代来临时,具有更强的抗量子攻击能力。
