也许你曾经听说过ZK Proof或零知识证明。但是,你好像从来没搞清楚它是什么?什么是ZK-rollups?什么是ZK-SNARKs?在这篇文章中,你所有关于零知识证明的问题都将得到解答,所以请抓紧时间,让我们一起开始学习零知识证明的旅程吧!
什么是零知识证明?
零知识证明是一种证明方法,通过这种方法,一方(证明者)在不透露任何实际信息的情况下,可以向另一方(验证者)证明它知道一个秘密或一个声明是真实的。
上面提到的术语 “零知识 ”本身就是对以下事实的证明:没有透露任何信息,但第二方(验证者)理所当然地相信第一方(证明者)知道这个秘密或他们的声明是真实的。
那么,为什么我们需要零知识证明呢?当我们不相信别人会透露信息,但想说服他们我们知道这个秘密或我们的声明是真实的。
有两种类型的零知识证明:
- 交互式
- 非交互式
1️.我们先看一个交互式零知识证明的例子
假设你需要零知识证明你已经成年,但又不能实际透露你的具体年龄。我们需要一个第三方权威机构来证明你的年龄,该机构的骚操作是这样的:
“谢谢你提供的出生证明副本,我们已经知道你21岁的事儿了。这里有一个秘密号码,请秘密存储并保证它的安全。你可能在以后会需要它。”
“你的秘密号码将被哈希处理22次,为你制作一个最终的年龄哈希码(是的,系统的默认操作是将你的年龄+1进行哈希才能使发挥作用)。因此,在我们给你的秘密号码和这个最终的年龄哈希码之间有22次哈希处理。”
“我们会使用你的名字、一个时间戳和这个最终的年龄哈希码来进行包装。这就是你要给别人的证明材料。”
现在,只要你想向别人证明你已经超过18岁,那么你就必须有效地证明,从你的秘密号码到你的最终年龄哈希代码有超过18个哈希步骤。
要做到这一点,你只需向他们展示最后18个哈希步骤,你需要首先通过自己做前4个哈希步骤(将你的秘密号码进行4次哈希处理),然后给他们结果;即第四次哈希处理的结果。
然后他们对你提供的结果再进行18次哈希(因为机构现在已经对你的秘密号码做了总共22次哈希处理),他们最终会得到最后的年龄哈希码,并可以验证你是否成年,因为这写信息都在你的证明套件中。
实际上,验证者会说:“给我们一个值,我们可以对其进行18次哈希,以获得与你的最终年龄哈希码相匹配的值。如果你不是18岁,那么你的最终年龄哈希码就不会有18次哈希步骤,我们就不能很好地认证你的真正年龄。”
这也是一个不错的例子?
但这种交互式方法也有一些局限性:
- 每次他们进行验证都需要进行整个冗长的过程。而这个过程其实是相当简单的哈希处理,想象一下进行实际的加密算法的计算是什么样的?
- 此外,无论是线上还是线下,双方都需要在同一时间、同一地点(网络平台)碰头。
2️.来看看非交互式证明
1986年,Fiat和Shamir发明了Fiat-Shamir启发式(Fiat–Shamir heuristic,非交互式零知识证明),从而成为第一个基于交互式零知识点证明的数字签名算法。
Fiat-Shamir启发式可以通过承诺方案(Commitment Scheme)变成非交互式零知识证明,因此产生了ZK-SNARKs或零知识的简洁非交互式知识论证。
为了使Fiat-Shamir启发式更加强大,我们使用了承诺方案。承诺方案是许多加密协议的基本组成部分。它允许承诺人公布一个值(称为承诺),并将这个值与一个消息绑定(binding),而不透露它(hiding)。
目前用于零知识证明的两个最突出的承诺方案是佩德森承诺(Pederson commitment)和多项式承诺(Polynomial commitment)。
但是,直到2013年左右,ZK-SNARKs才变得实际有效,开发者可以在现实世界的应用中实现和使用它。
我推荐你阅读Vitalik Buterin的这篇,它总体上介绍了ZK-SNARKs为什么可用,并解释了它们是如何实现的。也许你不可能一下子就能搞清楚,多读几遍,一旦你理解了其中的内容,你就能明白其中的原理。
在后量子世界中,我们需要确保我们为ZK-SNARKs选择的加密函数不能被量子计算机强行破解。这就是为什么正在进行改进以实现后量子安全。如果你想了解更多这方面的信息,你可以看ACM?的这个讲座:
好了,现在我们知道什么是零知识证明了,但是它们是用来做什么的呢?
在概念上它有两个主要的用例:
- 扩大区块链的交易规模
- 隐私——比如在医疗等领域保护个人数据安全
对区块链进行扩展——ZK Rollups
rollup是一种区块链的展解决方案,它通过在第一层网络之外执行交易,但在第一层发布交易数据来工作。这使得rollup可以扩展网络,并仍然从以太坊共识中获得安全性。
将计算移到链外就可以处理更多的交易,因为只有rollup的部分交易数据必须使用以太坊区块。
为了实现这一点,rollup交易在一个单独的链上执行,甚至可以运行一个rollup的特定版本的以太坊虚拟机(EVM)。
在rollup上执行交易后的下一步是将它们批处理并发布到以太坊主链上。
整个过程本质上是执行交易,获取数据,压缩数据,并将其以单一批处理的方式rollup(滚)到主链上,因此这个过程被称作“rollup”。
以太坊如何知道发布的数据是有效的,而不是由试图为自己谋利的不良行为者提交的呢??
每个rollup在第一层都部署了一组智能合约,它负责处理充值和提现,并验证证明。
证明也是不同类型的rollup之间的主要区别所在。
Optimistic的rollup使用欺诈证明,相比之下,ZKrollup使用有效性证明。
在ZKrollup中,每一批发布到第一层的文件都包括一个称为ZK-SNARK的加密证明。当交易批次被提交时,该证明可以被第一层合约快速验证,无效的批次可以被直接拒绝。
关于零知识证明和Optimistic rollups还有很多内容需要你了解,比如它们的实现方法,它们的局限性。这篇文章只涉及了一些简单的概念,你还需要学习更多相关内容。
许多项目正在为以太坊开发基于ZKrollup的扩展解决方案。一些突出的项目有dYdX、Loopring、Polygon Miden、Polygon Hermez。
隐私——日常生活中的应用
假设两个公司A和B想用区块链作为媒介来运作和交流。
A将资产转移给B,他们希望这些资产保留在自己内部。是的,区块链会带来透明度、互操作性、数据安全性和完整性以及其他好处,但为什么一个公司会公开分享他们的内部物流信息?这个时候,零知识证明就有了用武之地。
再比方说,你想私下给你的海外朋友转一些钱,但又不想让政府监控这笔交易。你会怎么做呢?零知识证明就可以帮上忙。
在其他几个领域,零知识证明也会产生深远的影响,如医疗、保险、电子投票、身份管理。
比如在医疗保健方面,确保DNA数据、个人信息、医疗记录、基本病史信息、药物可追溯性、临床试验、医疗保健供应链、器官移植的安全。
在保险方面,确保数字形式的保险凭证和保险证书、个人信息、车辆信息、结算索赔。
使用区块链和ZKP的身份管理具有深远的意义。每个与kyc(了解你的客户)相关的应用程序、学校、大学、支付应用程序都要求提供我们的身份证图像,如驾驶执照、护照、选民身份、国民身份。我们敏感的个人数据实际上就在那里,而我们甚至没有意识到信息可能会有随时泄露的风险。有了零知识证明,我们可以保护所有这些身份信息,只向供应商、应用程序和政府透露必要的信息。事实上,我们可以用零知识证明来完全改造这些身份信息的公布方式。
我们可以对所有这些使用零知识证明,这样,每当需要某些信息时,用户就会有选择性的批准并提供所需的信息,而其余的细节则被隐藏。
只是ZK-SNARKs的效率在2013年之后才足以实际实现并得到开发者的使用,这就是为什么使用零知识证明的不同应用程序在未来有很大的空间涌现。
2016年推出的Zcash是目前唯一成功实现ZK-SNARKs并提供用户间隐私交易的突出产品。
ZK-SNARKs与 ZK-STARKs
图片来源:Matter Labs github资源库
ZK-STARK代表零知识可扩展的透明知识论证,ZK-SNARK代表零知识的简洁非交互式知识论证。
这两种零知识技术在本质上都是非交互式的,这也就意味着代码可以被部署并自主行动。
ZK-SNARKs在其基础上依赖于椭圆曲线的安全性。椭圆曲线在密码学中的基本假设是:找到一个随机椭圆曲线元素相对于一个公知基点的离散对数是不可行的。
可信设置(trusted setup)是指用于创建私人交易所需证明的钥匙的初始创建事件以及对这些证明的验证。
如果在可信设置事件中用于创建这些密钥的秘密没有被销毁,那么这些秘密可能被用来通过虚假的验证来伪造交易。
SNARKs的另一个局限性,正如我们已经知道的,他们在后量子世界的可行性。
另一方面,在一个网络中开始使用STARKs时是不需要信任设置的。这些也被称为抗量子化。虽然STARK的证明规模比SNARK大得多。
但是,STARKs仍然处于初级阶段,现阶段它对开发者的支持也不多,所以我们还有几年时间才能看到基于ZK-STARK的产品。
文章写到这就结束了。这是对web3世界中使用零知识证明所做的事情的初步介绍,相信你对零知识证明已经有了一定的了解。
0 条评论
请「登录」后评论