来源:链得得
在2019以太坊技术及应用大会上,以太坊创始人Vitalik Buterin(V神)发展主题为”以太坊2.0之跨分片交易”的演讲,指出以太坊2.0设计中的四大重点:拥有1024个分片;信标链管理共识算法和跨分片的沟通;分片沟通时间定为6分钟;通过cross-link进行分片间交流。
5月初,Prysmatic Labs团队为以太坊2.0网络的阶段0 (即信标链阶段) 发布了最完整的公共测试网络Sapphire,该测试网络使用Prysm客户端。
以太坊2.0为了实现扩展 , 有两个主要目标:1、引入 PoS 共识机制 , 消除对昂贵的 PoW 挖矿的需求;2、引入分片 , 提高 ETH 交易的速度和吞吐量。
以太坊的 wiki 为 ETH2.0 绘制了七个不同的阶段 , 但可能需要几年的时间才能实现。大多数仍处于研究阶段 , 没有明确的技术规格。在开发人员可以在以太坊 2.0 上实际构建之前 , 需要完成前三个阶段:
第 0 阶段 —— 信标链 : 信标链是一个资产证明链 , 将与以太坊 的 PoW 链平行运行。开始时,信标链为了简洁起见 , 既不支持智能合约 , 也不支持账户。
第 1 阶段 —— 基本分片 : 分片旨在通过将网络划分为多个分片来来帮助交易扩展 , 从而允许网络同时处理多个交易。
第 2 阶段 —— eWASM:eWASM 本质上是一个重建的以太坊虚拟机 (EVM), 支持 PoS 和分片。它将向 ETH2.0 中引入智能合约、帐户等。
在2019以太坊技术及应用大会上,以太坊创始人Vitalik Buterin(V神)发展主题为”以太坊2.0之跨分片交易”的演讲,指出以太坊2.0设计中的四大重点:1、拥有1024个分片,每个分片都是短链,都有自己的共识算法;2、信标链管理共识算法和跨分片的沟通;3、每6分钟,每个分片发现其他分片的哈希值;4、用户和应用在不同分片上操作,通过cross-link进行分片间交流。
以下为Vilatik演讲全文,由链得得编辑整理如下:
现在我们要把以太坊进化到2.0版本,我们要引入更多的分片。目前我们在研究信标链相关话题,这方面有很多努力要做。这可能对区块链交易非常有用,因为这能增加它的可扩展性,可以将它从1秒钟10个交易,提升到以后每秒1万个交易。它会增加信息吞吐量的速度,也能够让以太坊有更多的区块链应用。
但开发者会面临一些挑战。区块链现在的运作方式是每个计算机要验证所有交易,每个节点都要进行验证,这样安全性是好了,但是它难以进行扩展。因为我们交易的数量非常多,因为交易速度是由一个计算机决定的。我们想要去改善这个过程,我们要提高它的可扩展性。要实现这个目标,每个计算机只需要验证一小部分的交易,并不是所有节点都要进行验证——每个计算机只需要去处理所有交易中千分之一的交易。
细节一:拥有1024个分片,沟通时间定为6分钟
如果我们看到现在的应用运作的方式就会发现,在这个理论上建立其他的东西是很容易的,比如智能合约和其他进行交流时,可能需要5个应用的参与,所有的帐户、智能合约都储存在一台计算机上,所以它们相互交流非常方便。但是如果我们在更短的一个区块链中就做不到了,因为这个区块链中智能合约、帐户、交流速率非常高,我们很难让一个应用都能够进行对话,难以进行立即的对话和交流。
所以以太坊2.0的设计并不是让每个节点都去处理所有的交易和信息,我们有1024个分片,每个分片都相当于是一个短的链,每个分片都有自己共识的算法,不同分片中交流进行管理,每个分片会跟其他分片进行交流,有合约进行交流,每6分钟会发生一次,所以每6分钟每个分片都有机会了解哈希值以及最近发生的事情等等。
另外,之前这个链可扩展性受到了限制的,所以我们可以选择,要么这个链的交流速度变慢,要么拓展性受到限制,我们还是要二选一。另外,这些基础层主要关注数据和计算力等等,不同的分片交流和沟通的能力、它们是否受限,我们可以创建一个机制让它们的性能更好、使用效率非常高,这样用户不同的智能合约能够相互交流,而且速度非常快。
首先,我们是异步交流的流程,这是我之前设计的,已经有了几年的设计过程,如果读相关文章,比如2016年就有文章谈到异步交易。它的理念是,如果我们有几个分片的话,如何去促进这个分片之间的交易。比如说我有5个硬币,然后我想要把这5个硬币转移给Bob,Bob有一个帐户,它的帐户在底端,我的硬币在顶端,首先我要在顶端做一个交易的请求,这个交易会进行第一个分片处理,然后它会有一个哈希值产生,当然,它并不会立即完成,但是之后我们就能够把它放到底部的分片当中,它能够在底部的分片进行验证。验证之后交易就能够进行处理了。
所以有一个信息,是5个硬币去进到Bob,底部的Bob就能够得到5个硬币,它不会立即发生,原因是我们要验证,不仅仅接收方需要进行验证,还有其他的哈希值、数据、信标链等等都需要进行验证。我们发现接收方也是分片的一部分,不同的分片交流需要5分钟的时间,所以第一步我们就需要发送这个交易,第二步是等几分钟,第三步是要进一步去处理这个交易,然后才能够让底部的Bob接收到这个硬币,这样Bob帐户就增加了。
现在有各种加密货币,包括比特币等等,对于这些数字资产有不同的平台,我们发现这样一个交易,它其实非常强大的,有很多有趣的理论、复杂的理论都可以来验证这个交易,不管是开发者还是爪洼(音译)脚板的处理等等。我们发现,我们理解这些机制,跟客户交流是非常难的,我们还是有很多可以做的,但是会有相关沟通方面的限制。
细节二:新机制”猛拉”
另外一个是”火车票和酒店”的问题,比如你在数据库工作,就会了解相应的问题,它跟我们的交易非常相似,我们有不同的方式可以解决相关的问题。你想要去一个地方旅游,我们要买火车票,同时也要订酒店,如果订一个不行,要两个一起订,所以我们要确保:有没有都不订,要么酒店和火车票一起订。如果仅仅有火车票而没有酒店,或仅仅酒店而没有火车票,这对我来说没有任何意义,是浪费钱。
所以我们想象两个智能合约,一个合约是用来订火车票的,另外一个是用来订酒店的。当前体系解决这个非常简单,首先,这个交易给火车票的地方打电话,比如我们在火车票上订了一个座位,这个合约会回复你成功或失败,然后我们再给订酒店的地方打电话,这个地方也回复你成功或失败,如果其中一个失败了,那在我们交易过程中就无法让这个交易进行下去,整个交易会被撤回。今天我们也是这样做的,不管是订火车票还是订酒店,其中一项失败了,我们就可以把交易撤回。但是在更短的链中,订酒店和订火车票是不同的分链中,确保一致性更难,原因是因为发现在一致的环境中已经订了火车票了,我们就不能再撤消了。
其中的一个解决方案是我们有一个新的机制叫”猛拉”,它看起来是全新的想法,但是有很多类似之处,跟我们之前的数据库很像。所以我们会有非常多样化的做法,并不是用一个合约订酒店,一个合约火车票,现在我们把它分开,每个火车座位都有一个合约,每个房间都有一个合约,这样每个合约都能够代表我们订座位或者订房间的能力。
现在我们能做什么?在”猛拉”中发一个合约,它的功能是一次用一个合约,我们拿掉这个合约之后就获得一个座位,然后我们再把合约放到另外一个位置上。
解决”酒店和火车票”的问题怎么办?第一步,猛拉,从酒店分片拉一个合约,从火车票再拉一个合约两个分片同时预定,现在酒店合约和票合约在一个地方,跟之前的交易一样,就可以一起订了,但其中任何一个操作失败,那我们就什么都不订。或者其他人想要订火车或订酒店,去之前你去的那个分片,可以用这个合约进行”猛拉”的操作,不会有任何阻碍,两个一起订,它是自动的过程,就是要么两个都订,要么两个都不订。所以在区块链的运用当中有很多都是类似的,包括去中心化资产的交流等例子,对我们来说非常有用,能够提高用户操作性以及区块链应用程度。
细节三:更快的异步交易
这是另外一个例子,也是我们可以做的一个应用。现在我们想象一下,我们用一个更短的区块链,比如它需要5分钟时间让一个分片知道另外一个分片的数据或者哈希值,但是我们希望这个应用变得更加快捷,所以我们的做法是在上面分片有一个硬币,然后我们想把这个硬币移到下面,我希望它的方式是硬币可以在底部立马进行应用,那我们就不用等了。
具体怎么操作呢?看起来是挺难的,我们是这样做的。比如说,就像我们之前的程序一样,首先,我想给Bob发5个币,就必须在上面的分片进行交易,然后上面就会给我个这样的证明,它还包含一个区域性的分片,然后我再把它放到下面的分片中,下面的分片就会记录这个交易。而且它已经了解上面分片当中的根值了,所以下面的分片根本不知道上面的末克(音译)跟它是否合法,但是不管怎样,它把相关数据融到自己的数据包中了。如果这个莫克(音译)记录另外一个信息,也可能没办法让下面的分片知道。
我们这里想陈述的是,最开始Alice有10个,Bob有20,charlie有52个,我们把这些进行压缩之后进行存储。有两种情况,一种情况是bob有20个币,还有一种情况是Bob之后有25个币。如果我们的钱包上面看到上面的根是R,下面的分片就可以做个推测,就是Bob有25他币,就可以取25个币给其他人,所以Bob的钱包就向Bo饱学之士Bob有25个币了。
即使在这样的状态下,我们的计算也并没有最终化,看起来这个交易已经完成了,那么你可能会问:看起来好像Bob有了这些币,但是他还没有花这些币。我们假设Bob要把25个币发给Charlie,他会做什么?把22个币发给Charlie会是什么?现在这种情况下,你只能把两个情况进行评估和对比,这种情况下Alice还是有10个币,如果合法的话,Bob之前有25个币,现在25-22,它只剩3个币了,如果不算根是不够的,所以Bob还是有200个。C如果根是对的,就会从30多上升到52。
这个交易结束后,上面的分片和下面的分片信息可以连接,下面的分片可以记录上面分片的信息了,我们就不用去思考到底R是真实的还是假的,我们知道R一定是真实的Charlie现在有52个币了。这个逻辑是在后台进行的,逻辑效应是通过Bob、Charlie的钱包分析,我们至少先知道发生了这样的交易。非常有意思的一点是,对于这个技术,你可以用通信的方式在跨区块链中进行交易,还可以让它创造应用程序,让不同的区块链进行跨链的交易。
比如我们假想有这样一种应用,上面的分片是以太坊区块链,下面的分片是另外一种区块链,它们两个如果是相碰撞、相冲突的话,我们会用同样的机制保证它们交易,让它们进行及时的通讯、及时的去中心化的交易。这在以太坊和跨以太坊的区块链交易中是非常重要的,可以让跨链的通讯变得更加方便。
细节四:通过类似Plasma方法做同步交易
我们还可以实现其他的目标,比如我们目前已经做了一些工作,比如通过Plasma方法做同步的交易,我们的目的是首先Plasma已经建立了,希望data把这些数据公布到分片上,所有这些数据并不一定都能够公布到区块链上,但是最终发生的一件事情是,我们还是会用类似Plasma的方法去实现同样的目的,我们不会马上去数状态的总数是多少。我们至少要知道现在以太币的所有者的目的是什么,是在任何分片发交易,还是要等一段时间才能出资产。所以如果发生冲突的话,他有可能想上传证据,还有所有者可以对token进行再构造。
这个方法可以保证如果我们收到了币,从来没有进行非法支付的话,我们的交易就会同步到整个区块链上进行广播。这些交易出现了,我们有两个资产,X和Y,另外一个交易是X,是a-c,我们的分片有自己的轻重缓急,可能先进行某一次交易再进行下一次交易,还有b-g、f-M等等交易。之后还有很多交易,有些是合法的,有些是不合法的,m-m是不合法的,因为时间上它是不能实现的。
如果我们参加交易过程当中,自己有了资产的话,而且你也希望发送交易信息,就可以把它公布到任何分片上。如果你是某个资产所有者,你可以仅仅分析这些分片,就可以评估这些交易的历史记录是怎样的,某些资产并不属于这样交易过程的,我们也可以做类似的结论总结。
在区块链中,我们做的工作量还会少一些,比如用户钱包可以做更多事情,而且它还可以帮助我们考虑什么样的交易方式是合理的,就是谁更关注每一个分片,然后每一个分片对应的资产又是怎样的,这是特别棒的一个想法。
为了减少复杂性,让更多用户用钱包,我们就把区块链便捷性、性能、应用效率大大提升,希望通过用这个方式把中心化更复杂的交易变得便捷和简单,这个基本的战略可以让我们进行更快的交易。不需要之前去中心化的共识层,我们希望通过这些用户钱包了解目前我们的钱包里是有多少币的。
这样一种设计最近被我们叫”积极虚拟机(OVM)”它的结论是你所有权的资产并没有立即转移,我们开始一个流程,不需要把这个钱取出来,可能一整周时间才可以真正到帐,但是如果你是用户,你可以知道为什么不能马上取出某个资产,而且你有一种感觉,就是这个交易是可以真正到帐的。
我们需要做什么?10秒钟才可以进行跨分片交易,比如有20个分片参与交易,提高交易速度会不会提高区块速度?我们需要去研究区块时间,比如最上面分片可能需要10秒,那么下面的分片再往右移,就是0.5,然后10.25,然后11.1,然后21.5等等,逐渐的向右移。
这个基本原则是在某个时间点上一定有某个分片去到某个固定的位置,首先我们首先要知道需要在哪个区块中公开这个分片。这样做的好处是,如果我们这么做,就会获得一种公开交易的能力,而且还可以得到及时确认,可能0.5秒的时间就可以立即确认,得到区块,然后可以进行证明。如果做得很成功的话,用户体验会非常好,类似之前中心化服务器提供的这种体验一样,
如果我们用第二层方法,从不同的分片进行数据的公布,逻辑会非常复杂,智能合约也会变得很复杂,用户钱包会进行很高速、很大量的计算,有多少币到哪个用户手上就需要更长时间进行计算,这是我们更需要研究的一点了。
这里我得出的结论是什么?如果我们想要做出一个通用型的区块链,就首先要有一个比较通用的基础设施,能够让我们把数据放在这个链上,还可以在这个链上做更快的计算。我们利用工具进行应用的过程比较复杂,不同的用户有不同的实施方式。所以区块链要求我们有一个全球的共识,就是怎样进行储存、怎样对于某个用户具体所有的币的数量进行准确了解,这些都需要我们通过更进一步的应用来实现的;而且我们需要保证整个流程的简便性,防止这个流程变得复杂;需要对于共识机制进行不断的提升,创造出有不同应用的底层协议。
这已经成为一个非常活跃的研究,我们正在研究怎样设计刚才所说的这些机制,让我们创造出扩展区块链以上的不同应用,它拥有很强的性能,可以进行非常快速的交易,甚至是异步的、同步的交易都可以实现,而且还可以实现跨分片的交易,当然,还有其他很多很好的性能,比如其他的加密方式进行进一步扩展。
因此,layer2的这个机制是和以太坊2.0密切相关的,它可以把区块链更上一层楼。