Zk-SNARKs:它们是什么以及它们如何工作?
Zk-SNARKs被称为零知识简洁的非交互式知识论证,是指一种证据构造,其中一个人可以证明拥有特定信息,如秘密密钥,但不泄露信息。此外,在证明的人和正在验证的人之间没有任何互动。
这些证明允许个人向另一个人证明陈述是真实的;但不披露任何超出声明有效性的信息。到目前为止,有一些项目正在使用Zk-SNARK样张,包括Zcash,JP Morgan基于区块链的支付系统,以及一种安全地验证各种客户端到服务器的方法。
然而,值得注意的是,Zcash是该技术的第一次广泛应用。虽然还有其他隐私硬币项目,如Monero采用环形签名和其他一些技术来有效地围绕交易信息创建烟幕,但Zk-SNARKs从根本上改变了数据的共享方式。
Zcash的隐私来自于网络中的事务可以保持加密货币并且仍然使用零知识证明验证为有效的事实。这意味着那些执行共识规则的人不必知道每个事务中底层的所有数据。值得注意的是,Zcash中的隐私功能默认情况下未激活,但它们在某种程度上是可选的,必须进行手动设置。
Zk-SNARK的历史
零知识证明是麻省理工学院三位研究人员Silvio Micali,Goldwasser和Charles Rackoff的心血结晶。当他们解决一些问题时,他们提出了这个想法
与交互式证明系统有关。有趣的是,在他们发现zk-SNARKS技术之前,有一种假设认为“证明者”在任何情况下都是恶意个体,所以假设他/她将是试图愚弄验证者的人。
然而,这三位研究人员填补了这个想法并开始质疑验证者的道德。他们通过说明验证者在验证过程中对证明者了解多少知识来做到这一点。他们思考如何确定验证者是否会泄漏所获得的知识。
零知识证明工作所必需的属性
要使ZKP工作,需要满足以下参数;
- 健全 – 如果证明者是不诚实的;他们无法通过撒谎说服验证者声明完整。
- 完整性 – 如果陈述是真的,那么一个诚实的验证者可以很容易地被一个诚实的证明者说服。
- 零知识 – 如果语句为真,则验证者将不知道该语句将是什么。
零知识简洁非交互式知识论证的细分
- 零知识 – 这是指构造证明,人们可以证明拥有信息而不必泄露信息。例如,Kelvin可以向Alvin证明随机数的哈希值确实存在而不必告诉该随机数是什么。
- 简洁 – 这说明可以快速验证零知识证明,包括具有大型陈述的证据。这与之前的零知识协议不同,其中证明者和验证者必须进行多轮通信,以便他们可以验证证据。
- 非交互式 – 这意味着验证者不必与证明者交互以验证零知识证明。相反,证明方可以提前公布其证明,并且验证方可以确保其正确性。
- 参数 – 此处验证者仅受到计算能力有限的证明者的保护。如果证明者具有足够的计算能力,他们可以创建关于错误陈述的证据/论据。值得注意的是,具有足够计算能力的证明器可以破坏任何公钥加密货币。
- 知识 – 证明者在不知道某个“证人”的情况下构建证据/论证是不可能的,在这种情况下,他打算花费的地址,特定Merkle树节点的路径或散列函数的原像。
Zk-SNARKS如何运作
在基本层面上,Zk-Snark由3种算法组成; G,P和V. G是密钥生成器。它需要输入“lambda”(必须保密,不应在任何情况下显示)和程序C.
G继续生成两个公共可用密钥,即证明密钥pk和验证密钥vk。这两个密钥都是公开的,并且可供任何相关方使用。
P表示将使用证明密钥pk,随机输入x(公开可用)和私有语句的证明者 – 三个项目作为输入来证明语句的知识而不揭示它是什么。
使用“w”的示例作为私有语句,算法生成证明(prf),使得:prf = P(pk,x,w)。因此,在这种情况下,验证者算法返回了一个布尔变量。通常,布尔变量只有两个选择;要么是TRUE,要么是FALSE。
验证者然后将验证密钥,公共输入x和证明prf作为V(vk,x,prf),如果证明者是正确则返回TRUE,否则返回False。
技术的未来应用
能够在Zcash上创建屏蔽事务只是该技术的众多可能应用之一。从理论上讲,zk-SNARKS可用于验证任何关系,但不会泄露输入或泄漏信息。
此外,随着以太坊进入大都会阶段,该平台计划引入Zk-SNARKs作为各种变化之一,使其更加抽象和隐私友好。
毫无疑问,零知识证明的引入将成为智能合约平台的巨大改变者。
然而,整合将如何发生仍有待观察,但理论概念引发了许多兴奋。