zk-SNARK是“Zero-Knowledge Succinct Non-Interactive Argument ofKnowledge”的简称,中文名称为“零知识下简明的非交互知识论证”。指一种可以证明某人拥有某些信息的证明结构,例如:一把秘密钥匙,没有显示该信息,也没有验证者和验证者之间的任何交互。
(什么是zk-SNARKs缩放解决方案? | 金色百科)
它在现代区块链技术中起了巨大的作用。要解释它的应用之前,我们必须先了解智能合约如何运作。简单来说,智能合约实现了一种资金托管功能,使得某些操作在特定条件被满足时自动触发。
举例来说,Anna 与 Carl 签署了一份智能合约,Anna 在里面放了 100ETH。并约定 Carl 必须完成一项特定任务,就可以得到智能合约里的 100ETH。
如果 Carl 要完成的任务属于多重的机密任务,整个情况就会变得复杂。假设你已经和 Anna 签署了智能合约,获得报酬的条件是完成任务 A、任务 B,以及任务 C。现在你虽然已经完成任务,但是你不想透露关于这些任务的细节给竞争对手知道,这时候利用Zk-Snarks就可以解决。Zk-Snarks 被部署在智能合约中,并提供你已经完成这些任务的证明,当然证明过程不会透露任何消息。这对于保护你个人和公司的隐私都有莫大的帮助。验证过程中Zk-Snarks也只会公开部分而不是全部信息,公开的部分足够证明你的陈述。
zk-SNARKs 的工作方式是首先把你想要证明的东西转化成一个等价的形式,即知道一些代数方程的解。
使用zk-SNARKs,可以使用复杂的数学技术,如同态加密和椭圆曲线的配对来“盲目”地评估多项式——即不知道要计算哪个点。上面描述的公共参数用于确定要检查哪个点,但是是以加密的形式,这样验证者和验证者都不知道它是什么。