LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 币圈百科 > 解析ETH 2.0--zk-SNARKS和zk-Rollups

解析ETH 2.0--zk-SNARKS和zk-Rollups

2020-07-30 区块链研究员 来源:区块链网络


Ethereum 2.0将引发加密领域的巨震。这次升级将引发的一些变化是:

向Casper协议过渡

分片

雷电网络(Raiden)状态通道

等离子体(Plasma)

Raiden和Plasma是2层(Layer 2)协议,允许Ethereum以状态通道和侧链的形式进行数千笔链外交易。特别是Plasma,理论上可以让一个侧链处理数千笔交易,并只向Ethereum主区块链提交一个单一的哈希。虽然这在纸面上听起来很神奇,但这里有一个重大的问题。如果这些等离子侧链中有一些争议,用户没有一个适当的机制来有效地退出协议。

用zk-Rollups实现第2层的可扩展性和可用性。

这就是一种叫做 "zk-Rollups "的技术。通过智能整合zk-SNARKS这个隐私协议,ETH 2.0将有可能创建一个可扩展性极强的第二层,它仍然具有Ethereum所期望的安全性和数据可用性。

然而,在我们进入这个问题之前,我们先来了解一下什么是zk-SNARKS和零知识证明......

:我们强烈建议您在继续阅读下面之前,先阅读关于Raiden和Plasma的文章。


Zk-SNARKS:什么是零知识证明?

zk-SNARKS是由Zcash--一种隐私币而闻名的隐私加密协议。它的核心在于零知识证明或ZKPs的概念。为了理解它的工作原理,让我们来看看参与证明的两方--证明者Prover和验证者Verifier。

证明者:想要证明一个假设

验证者:想要判断证明者的假设

ZKP背后的核心思想是--证明你拥有某项特定的知识,而不实际透露它是什么。例如:证明你的年龄超过了某一年龄限制,只需显示你出生年份的最后两位数字。在本质上,ZKP提出了以下两个问题。

质疑验证者的道德而不是证明者的道德。

证明者如何在不暴露给验证者的情况下保持自己知识的机密性?

解读Zk-SNARKS--零知识证明的例子

ZKP具有以下特性。

完整性。如果一个诚实的证明者能说服一个诚实的验证者,那么这个声明就是真的。

健全性:如果证明者不诚实,他们就不能欺骗验证者。

零知识性。验证者不会知道声明的真实内容。

我们来看看一些例子。

1# 色盲与苹果

请看下图,了解正常视力和色盲视力的工作原理。


我们假设一个场景,证明者的视力正常,而验证者有色盲症。前者有两个苹果--红色和绿色。验证者认为这两个苹果的颜色是一样的,而证明者想推翻这一点,却不用明确告诉他们颜色是什么。

下面是它的工作原理:

验证者把苹果给证明者看。

然后他将手藏在证明者身后,将苹果换掉或保持原样。

现在,他再次向验证者展示他双手中的苹果。

如果验证者进行了调换,证明者就能立即指出。这就证明了苹果的颜色不同。

验证者可以多次重复测试,以确保结果不是偶然的。让我们看看这如何验证ZKP属性。

完整性。因为证明者是诚实的,他们能够多次给出正确的答案。

健全性。验证者进行了多次测试,以确保结果没有任何侥幸。

零知识性。证明者从未透露过苹果的颜色。

2# 阿里巴巴的山洞

接下来,我们有一个密码学理论中最著名的ZKP例子。


在这个例子中,我们有一个证明者(P),一个验证者(V),以及一个后面有魔法门的山洞。P说他知道打开这扇神奇之门的密码。那么,在不透露密码是什么的情况下,P如何向V证明他们知道密码呢?

山洞的神奇之门里有两条路,A和B。

这时,P向V喊话,V进入山洞。

V告诉P走B路,如果P真的知道密码,他可以走任何一条路。

V重复了多次实验,以确保他们不会上当受骗。

如果P是诚实的,他走任何一条路都不会有任何问题。

所以如何满足零知识的三个特性?

完整性: 由于证明者是诚实的,他们能够多次给出正确的答案。

健全性:验证者进行了多次测试,以确保结果无侥幸性。

零知识性:P不需要透露密码到底是什么。

什么是Zk-SNARKS--使ZKP非交互

传统ZKP的主要问题之一是它是一个高度交互的系统。在我们上面向你展示的两个例子中(阿里巴巴大门和苹果),你要求证明者和验证者同时在场。你可以想象,这不是一个可扩展的技术。1986年,Fiat-Shamir启发式展示了零知识证明如何在离散对数中工作。我们将看到交互式和非交互式两种版本。


交互式

Prover P想向Verifier V证明她知道x,使得y= g^x到基数g。

P从集合Z中取一个值v,并计算t,使得,t=g^v。然后她将t发过来给V。

然后,V从同一集合Z中取出一个随机值c,并将其发送给P。

P计算出一个值r=v-c^x并发送给V。

现在,由于r= v-cx,y= g^x,通过简单的代入,g^(v-cx)* g ^ c*x = g^v = t。

所以,V会检查g^r * y^c,看是否是 "t"。

因此,在不明确知道 "x "的值的情况下,V仍然可以检查t = g^r * y^c,是否是 "t"。

因此,V就能判断P是否真实地拥有秘密信息。

上述交换满足ZKP属性,但仍需要Alice和Bob同时在场。

非交互式

那么,我们如何使ZKPs非交互式?用加密哈希函数!

Prover P想向Verifier V表明她知道x,这样y= g^x到基数g。

P从集合Z中取一个值v,并计算出t,这样,t=g^v。然后她将t发过来给V。

P计算一个值c=H(g,y,t),其中H()是一个哈希函数。

最后,P计算出r = v - c*x,并将此发送给V。

每当V上线时,他们就可以检查t = g^r * y^c,或者不等于。

这种交互也是完全零知识的,但它不需要证明者Prover和验证者Verifier同时在场。这个创新是zk-SNARKS诞生的根本。

说到这里....

究竟什么是zk-SNARKs?

zk-SNARKS是 "Zero-Knowledge Succinct Non-Interactive Argument of Knowledge "的缩写。现在我们知道了zkps的理论是如何工作的,让我们把它全部弄成一个算法阵。


在我们典型的zk-SNARK中,我们有三个独特的算法。

证明者 (P): 这个算法需要三个条件作为输入 -- 证明密钥(pk), 随机输入(x), 以及他们想要证明的声明(w). 这个算法接收这些输入,并给出语句prf的证明。

验证者(V)。如果有效则返回 "true",如果无效则返回 "false"。除了prf,这个算法还接收了两个值--随机输入 "x "和验证密钥 "vk"。

密钥生成器(G)。输入一个秘密的 "Lambda "值和一个程序 "C "来生成pk和vk. lambda值必须私密保密。如果有人拿到了这个值,他们就可以用它来生成证明和验证密钥。他们可以用这个来随意建立伪造的证明。

解读Zk-SNARKs--将算法结合在一起。

程序C接收了证明者的秘密声明"w "和值x,并做了下面的函数:


那么,让我们来看看我们如何将这些东西 和我们在上一节中声明的算法和值结合起来。

验证者使用生成器G来创建证明和验证密钥。

验证者放入一个秘密的lambda值来生成这些密钥,这样G(C,lambda)=(pk,vk)。

证明者现在必须拿着pk,通过创建一个证明声明prf来证明他们声明的有效性,这样prf=P(pk,x,w)。在这里,x是w的SHA-256哈希值。

证明者将 prf 发送给验证者,验证者通过运行他们的验证算法来验证声明,例如 V(vk, x, prf)。

如果证明者是诚实的,则V返回TRUE,否则返回FALSE。否则,它将返回FALSE。

好了,现在解释了zk-SNARKS,让我们开始学习zk-Rollups。

ZK-Rollups - 介绍

在我们继续之前,我们先来了解一下Rollup的实际含义。与Plasma颇为相似,Rollup是一种第2层的扩展解决方案,其中每一个单一合约都持有一个更大的侧链状态的简洁加密承诺。用户在维护这些状态时,不会给第1层,也就是基础区块链层带来额外的压力。以太坊联合创始人认为,rollups将是将第2层功能引入Ethereum 2.0的最佳方式,因为它缓解了Plasma最重要的问题--数据可用性。

Plasma和数据可用性

给大家简单介绍一下,等离子体plasma是这样重组Ethereum区块链的:


它的想法是用Ethereum作为主要的根链, 同时从它身上衍生出几条等离子链。根链仍然没有活动,同时它将复杂的计算和功能委托给这些等离子链。

虽然这在纸面上是个好主意,但它有一个巨大的缺陷--数据可用性。

想象一下这种情况。


Alice在等离子体区块3中有1个ETH,但她在区块4中已经看不到它了。这显然意味着等离子体区块4的验证器在作恶。她立即提出争议,并向根链发送欺诈验证,根链检查她的要求是否有效。如果有,它就会回滚等离子体区块4中的数据,使其无效。

你看到这里的问题了吗?

这里有一个相当大的可用性问题。系统被等离子体块4的恶意所有者短暂地挟持了。在zk-Rollup系统中,等离子体块只会包含数据的zk证明,而不是实际数据本身。

除此以外,zk-Rollups通过将数百次转账捆绑成一次交易来提高可扩展性。它的智能合约可以分解这些转账,并在一次交易中验证所有转账。

Zk-Rollups概述

zk-Rollup方案有两个用户--交易者Transactors和中继者Relayers。

交易者

它们创建并向整个网络广播传输数据。传输的数据包括--一个索引的 "to "和 "from "地址,一个交易值,网络费用和随机数:

这些地址被存储在一个缩短的3字节的索引版本中。这减少了处理这些地址所需的处理能力。

交易值大于或小于零,表示是存款还是取款。

zk-Rollup智能合约有两个Merkle树--一个用于地址,另一个用于转账金额。

中继者

交易者负责交易和广播,而中继者主要有两个作用:

收集大量的转账和创建一个滚动rollup。

生成代表区块链状态的SNARK证明。这个证明比较了转账前后区块链的快照。只有在底层状态有任何变化时,它才会汇报一些情况。

只要在Rollup合约中锁定了股权,任何人都可以成为中继者。这确保了他们有足够的动力为网络的利益而工作。

Zk-Rollups--所涉及的数字。

Matter Labs一直在研究和记录各种zk-Rollups的实现。根据他们的测试,他们发现:


目前,在Matter testnet中,每次传输交易的公共数据成本是16个字节。

在伊斯坦布尔后的Ethereum中,费用约272个gas。

在最坏的情况下,整体证明成本可以达到1M时,zk-rollups仍然可以做到每秒2000多笔交易。相比之下,Ethereum目前每秒只能做25笔交易,而Visa每秒可以做1667笔左右的交易。

在处理大型数据集时,Zk-Rollups可以提供更高效的计算。原因是,用户只需要处理 SNARKs而不是数据本身。

ZK-Rollups的优点和缺点

优点

明显快于Plasma。

每次数据传输的gas成本显著降低。

它允许区块的并行计算,这有助于扩展性和去中心化。

每个交易只包含SNARK证明,而不是整个数据本身,这再次提升了可扩展性。

缺点

零知识证明计算是一个非常耗费资源的过程。

Zk-Rollups的初始设置可能有点中心化。

系统的整体安全性取决于一定的信任度。

:Matter Labs指出,在ZKP上构建智能合约所需的资源已经大大减少。Rollups合约遵循与EVM(Ethereum虚拟机)相同的原则和模型。

ZK-Rollups替代方案:Optimistic Rollups

Optimistic Rollup(OR)是标准zk-Rollup的替代方案,它完全消除了对零知识证明的需求。网络不需要验证和检查每一笔交易,而是假设它们都是正确的,只有当有人通过提交欺诈证明来报告错误的交易时,才允许用户进行干预。虽然OR的初始开销可能比zk-Rollups小,但它要求用户每次都要发布完整的交易输入集。另一方面,zk-Rollups要灵活得多。

Ethereum联合创始人Vitalik Buterin对这两种解决方案都非常感兴趣,称其为 "神奇"。他指出,这两种Rollups可以让Ethereum 2.0扩大支付规模,同时提供Ethereum所期望的安全性和可用性。

解读Zk-Rollups和zk-SNARKS:结论

zk-Rollups最好的地方在于它不仅仅是一个理论概念。路印Loopring最近推出的zk-Rollup交易所已经做到了每秒2500笔交易。Ethereum开发者相当自信,如果他们将rollup与sharding结合起来,可以达到2500-10000的吞吐量。

不过,在完全实现之前,这还需要大量的工作。截至目前,团队正在稳步推进。现在,我希望你们现在对什么是zk-SNARKS和zk-Rollups有了更好的了解。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

作者:Ivan on Tech

翻译:区块链Robin BTC:1Robin84SWtzSxnU1v8CE9rzQtcfUsGeN
微信:chanhai13;公众号:链学园
译文有编辑及删减,如有侵权,请联系译者删除
中文版权所有,转载需完整注明以上内容

—-

编译者/作者:区块链研究员

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...