独家 | Vitalik Buterin:以太坊2.0之跨分片交易

640?wx_fmt=png

做者 | Vitalik Buterin程序员

责编 | 佩奇
算法

出品 | 区块链大本营(blockchain_camp)数据库



2019年6月29日,由CSDN、灵钛科技主办,区块链大本营、Unitimes、ETHPLANET、以太坊爱好者社区、火星财经协办的“2019第二届以太坊技术及应用大会”在北京·长城饭店隆重举行。安全


本次大会围绕以太坊生态全景、以太坊将来发展、以太坊开发实战、优质项目案例等多方面展开,邀请以太坊创始人 Vitalik Buterin 及核心技术开发者、海内外知名项目负责人、行业领军人物及以太坊生态精英专家齐聚于此,共同助力中国以太坊技术深度交流和社区发展。服务器


做为本届大会的重要嘉宾之一,以太坊创始人 Vitalik Buterin 在上午的演讲中分享了题为《以太坊2.0之跨分片交易》的主题演讲。 app


640?wx_fmt=png

以太坊创始人 Vitalik Buterin异步


在演讲中,Vitalik Buterin 分别从异步和同步交易,并结合“火车票和酒店”问题这一实例详细介绍了以太坊2.0的分片交易。工具


区块链大本营(blockchain_camp)在不改变演讲内容大意的状况下,作了精心的整理。如下为 Vitalik Buterin 的演讲实录:性能


中国的朋友们,你们好!如今咱们要把以太坊进化到2.0版本,有更多分片。如今在研究信标链相关话题,在这方面仍有不少努力要作。这可能对区块链交易很是有用,能够增长它的可扩展性,从每秒10个交易,发展到之后可能的每秒1万个交易,它会增长信息吞吐量的速度,也可以有更多区块链的应用。区块链


640?wx_fmt=png


可是开发者也会面临一些挑战,区块链如今的运做方式是每一个计算机要验证全部交易,每一个节点都要进行验证,这样安全性是好了,可是它难以进行扩展,由于咱们交易的数量很是多,由于交易速度是由一个计算机决定的,因此咱们想要去改善这个过程,咱们要提升它的拓展性。这样每一个计算机只须要验证一小部分的交易,这样并非全部节点都须要进行验证了,每一个计算机只须要去处理1000个节点当中的千分之一的交易。

 

当前咱们要处理的问题是,若是咱们看到如今的应用运做的方式就会发现,在这个理论上创建其余的东西是很容易的,好比智能合约和其余进行交流时,可能须要5个应用的参与,全部的账户、智能合约都储存在一台计算机上,因此它们相互交流很是方便。可是若是咱们在更短的一个区块链中就作不到了,由于这个区块链中智能合约、账户、交流速率很是高,咱们很难让一个应用都可以进行对话,难以进行当即的对话和交流。


640?wx_fmt=png


因此以太坊2.0的设计并非让每一个节点都去处理全部的交易和信息,咱们有1024个分片,每一个分片都至关因而一个短的链,每一个分片都有本身共识的算法,不一样分片中交流进行管理,每一个分片会跟其余分片进行交流,有合约进行交流,每6分钟会发生一次,因此每6分钟每一个分片都有机会了解哈希值以及最近发生的事情等等。

 

另外,以前这个链的可扩展性受到了限制的,因此咱们能够选择,要么这个链的交流速度变慢,要么拓展性受到限制,咱们仍是要二选一。另外,这些基础层主要关注数据和计算力等等,不一样的分片交流和沟通的能力、它们是否受限,咱们能够建立一个机制让它们的性能更好、使用效率很是高,这样用户不一样的智能合约可以相互交流,并且速度很是快。


640?wx_fmt=png


首先,咱们是异步交流的流程,这是我以前设计的,已经有了几年的设计过程,若是读相关文章,好比2016年就有文章谈到异步交易。它的理念是,若是咱们有几个分片的话,如何去促进这个分片之间的交易。好比说我有5个 coins,而后我想要把这5个coins转移给Bob,Bob有一个账户,它的账户在底端,个人coins在顶端,首先我要在顶端作一个交易的请求,这个交易会进行第一个分片处理,而后它会有一个哈希值产生,固然,它并不会当即完成,可是以后咱们就可以把它放到底部的分片当中,它可以在底部的分片进行验证。验证以后交易就可以进行处理了。

 

因此有一个信息,是5个coins去进到Bob,底部的Bob就可以获得5个coins,它不会当即发生,缘由是咱们要验证,不只仅接收方须要进行验证,还有其余的哈希值、数据、信标链等等都须要进行验证。咱们发现接收方也是分片的一部分,不一样的分片交流须要5分钟的时间,因此第一步咱们就须要发送这个交易,第二步是等几分钟,第三步是要进一步去处理这个交易,而后才可以让底部的Bob接收到这个coin,这样Bob账户就增长了。

 

如今有各类加密货币,包括比特币等等,对于这些数字资产有不一样的平台,咱们发现这样一个交易,它其实很是强大的,有不少有趣的理论、复杂的理论均可以来验证这个交易。咱们发现,咱们理解这些机制,跟客户交流是很是难的,咱们仍是有不少能够作的,可是会有相关沟通方面的限制。


640?wx_fmt=png


另一个是“火车票和酒店”的问题,若是你使用数据库工做就会了解相应的问题,它跟咱们很是类似,咱们有不一样的方式能够解决相关的问题。你想要去一个地方旅游,咱们要买火车票,同时也要订酒店,若是订一个不行,要两个一块儿订,因此咱们要确保:要么都不订,要么酒店和火车票一块儿订。若是仅仅有火车票而没有酒店,或仅仅酒店而没有火车票,这对我来讲没有任何意义,是浪费钱。


因此咱们想象两个智能合约,一个合约是用来订火车票的,另一个是用来订酒店的。当前体系解决这个很是简单,首先,咱们给卖火车票的地方打电话,好比咱们在火车票上订了一个座位,这个合约会回复你成功或失败,而后咱们再给订酒店的地方打电话,这个地方也回复你成功或失败,若是其中一个失败了,那在咱们交易过程当中就没法让这个交易进行下去,整个交易会被撤回。今天咱们也是这样作的,无论是订火车票仍是订酒店,其中一项失败了,咱们就能够把交易撤回。可是在更短的链中,订酒店和订火车票是不一样的分链中,确保一致性更难,缘由是由于发如今一致的环境中已经订了火车票了,咱们就不能再撤消了。


640?wx_fmt=png


其中的一个解决方案是咱们有一个新的机制叫“猛拉”,它看起来是全新的想法,可是有不少相似之处,跟咱们以前的数据库很像。因此咱们会有很是多样化的作法,并非用一个合约订酒店,一个合约订火车票,如今咱们把它分开,每一个火车座位都有一个合约,每一个房间都有一个合约,这样每一个合约都可以表明咱们订座位或者订房间的能力。

 

如今咱们能作什么?在“猛拉”中发一个合约,它的功能是一次用一个合约,咱们拿掉这个合约以后就得到一个座位,而后咱们再把合约放到另一个位置上。

 

如何解决“酒店和火车票”的问题?第一步,猛拉,从酒店分片拉一个合约,从火车票再拉一个合约,两个分片同时预约,如今酒店合约和火车票合约在一个地方,跟以前的交易同样,就能够一块儿订了,但其中若是任何一个操做失败,咱们就什么都不订了。或者其余人想要订火车或订酒店,去以前你去的那个分片,能够用这个合约进行“猛拉”的操做,不会有任何阻碍,两个一块儿订,它是自动的过程,就是要么两个都订,要么两个都不订。因此在区块链的运用当中有不少都是相似的,包括去中心化资产的交流等例子,对咱们来讲很是有用,可以提升用户以及区块链应用的操做性。

 

这是另一个例子,也是咱们能够作的一个应用。如今咱们想象一下,咱们用一个更短的区块链,好比它须要5分钟时间让一个分片知道另一个分片的数据或者哈希值,可是咱们但愿这个应用变得更加快捷,因此咱们的作法是在上面分片有一个coin,而后咱们想把这个coin转移到下面,我但愿coin能够在底部立马进行应用,那咱们就不用等了。


640?wx_fmt=png


具体怎么操做呢?看起来是挺难的,咱们是这样作的。好比说,就像咱们以前的程序同样,首先,我想给Bob发5个coin,就必须在上面的分片进行交易,而后上面就会给我个这样的证实,它还包含一个区域性的分片,而后我再把它放到下面的分片中,下面的分片就会记录这个交易。并且它已经了解上面分片当中的根值了,因此下面的分片根本不知道上面跟它是否合法,可是无论怎样,它把相关数据融到本身的数据包中了。若是记录另一个信息,也可能没办法让下面的分片知道。

 

咱们这里想陈述的是,最开始Alice有10个,Bob有20,charlie有52个,咱们把这些进行压缩以后进行存储。有两种状况,一种状况是bob有20个coin,还有一种状况是Bob以后有25个coin。若是咱们的钱包上面看到上面的根是R,下面的分片就能够作个推测,就是Bob有25个coin,就能够取25个coin给其余人。

 

即便在这样的状态下,咱们的计算也并无最终化,看起来这个交易已经完成了,那么你可能会问:看起来好像Bob有了这些coins,可是他尚未花这些coins。咱们假设Bob要把25个coins发给Charlie,他会作什么?把22个coins发给Charlie会是什么?如今这种状况下,你只能把两个状况进行评估和对比,这种状况下Alice仍是有10个coins,若是合法的话,Bob以前有25个coins,如今25减22,它只剩3个币了,若是不算根是不够的,因此Bob仍是有200个。C若是根是对的,就会从30多上升到52。

 

这个交易结束后,上面的分片和下面的分片信息能够链接,下面的分片能够记录上面分片的信息了,咱们就不用去思考到底R是真实的仍是假的,咱们知道R必定是真实的Charlie如今有52个coins了。这个逻辑是在后台进行的,逻辑效应是经过Bob、Charlie的钱包分析,咱们至少先知道发生了这样的交易。很是有意思的一点是,对于这个技术,你能够用通讯的方式在跨区块链中进行交易,还可让它创造应用程序,让不一样的区块链进行跨链的交易。

 

好比咱们假想有这样一种应用,上面的分片是以太坊区块链,下面的分片是另一种区块链,它们两个若是是相碰撞、相冲突的话,咱们会用一样的机制保证它们交易,让它们进行及时的通信、及时的去中心化的交易。这在以太坊和跨以太坊的区块链交易中是很是重要的,可让跨链的通信变得更加方便。


640?wx_fmt=png


咱们还能够实现其余的目标,好比咱们目前已经作了一些工做,好比经过Plasma方法作同步的交易,咱们的目的是首先Plasma已经创建了,但愿data把这些数据公布到分片上,全部这些数据并不必定都可以公布到区块链上,可是最终发生的一件事情是,咱们仍是会用相似Plasma的方法去实现一样的目的,咱们不会立刻去数状态的总数是多少。咱们至少要知道如今以太币的全部者的目的是什么,是在任何分片发交易,仍是要等一段时间才能出资产。因此若是发生冲突的话,他有可能想上传证据,还有全部者能够对coin进行再构造。

 

经过这个方法能够保证若是咱们收到了coin,历来没有进行非法支付的话,咱们的交易就会同步到整个区块链上进行广播。这些交易出现了,咱们有两个资产,X和Y,另一个交易是X,是A到C,咱们的分片有本身的轻重缓急,可能先进行某一次交易再进行下一次交易,还有B到G、F到M等等交易。以后还有不少交易,有些是合法的,有些是不合法的,M到M是不合法的,由于时间上它是不能实现的。

 

若是咱们参加交易过程中,本身有了资产的话,并且你也但愿发送交易信息,就能够把它公布到任何分片上。若是你是某个资产的全部者,你能够仅仅分析这些分片,就能够评估这些交易的历史记录是怎样的,某些资产并不属于这样交易过程的,咱们也能够作相似的结论总结。

 

在区块链中,咱们作的工做量还会少一些,好比用户钱包能够作更多事情,并且它还能够帮助咱们考虑什么样的交易方式是合理的,就是谁更关注每个分片,而后每个分片对应的资产又是怎样的,这是特别棒的一个想法。

 

为了减小复杂性,让更多用户用钱包,咱们就把区块链便捷性、性能、应用效率大大提高,但愿经过用这个方式把中心化更复杂的交易变得便捷和简单,这个基本的战略可让咱们进行更快的交易。不须要以前去中心化的共识层,咱们但愿经过这些用户钱包了解目前咱们的钱包里是有多少币的。


640?wx_fmt=png


这样一种设计最近被咱们叫“积极虚拟机(OVM)”它的结论是你全部权的资产并无当即转移,咱们开始一个流程,不须要把这个钱取出来,可能一整周时间才能够真正到账,可是若是你是用户,你能够知道为何不能立刻取出某个资产,并且你有一种感受,就是这个交易是能够真正到账的。

 

咱们须要作什么?10秒钟才能够进行跨分片交易,好比有20个分片参与交易,提升交易速度会不会提升区块速度?咱们须要去研究区块时间,好比最上面分片可能须要10秒,那么下面的分片再往右移,就是0.5,而后10.25,而后11.1,而后21.5等等,逐渐的向右移。


640?wx_fmt=png


这个基本原则是在某个时间点上必定有某个分片去到某个固定的位置,首先咱们首先要知道须要在哪一个区块中公开这个分片。这样作的好处是,若是咱们这么作,就会得到一种公开交易的能力,并且还能够获得及时确认,可能0.5秒的时间就能够当即确认,获得区块,而后能够进行证实。若是作得很成功的话,用户体验会很是好,相似以前中心化服务器提供的这种体验同样,若是咱们用第二层方法,从不一样的分片进行数据的公布,逻辑会很是复杂,智能合约也会变得很复杂,用户钱包会进行很高速、很大量的计算,有多少coins到哪一个用户手上就须要更长时间进行计算,这是咱们更须要研究的一点了。


640?wx_fmt=png


这里我得出的结论是什么?若是咱们想要作出一个通用型的区块链,就首先要有一个比较通用的基础设施,可以让咱们把数据放在这个链上,还能够在这个链上作更快的计算。咱们利用工具进行应用的过程比较复杂,不一样的用户有不一样的实施方式。因此区块链要求咱们有一个全球的共识,就是怎样进行储存、怎样对于某个用户具体全部的coins的数量进行准确了解,这些都须要咱们经过更进一步的应用来实现的;并且咱们须要保证整个流程的简便性,防止这个流程变得复杂;须要对于共识机制进行不断的提高,创造出有不一样应用的底层协议。

 

这已经成为一个很是活跃的研究,咱们正在研究怎样设计刚才所说的这些机制,让咱们创造出扩展区块链以上的不一样应用,它拥有很强的性能,能够进行很是快速的交易,甚至是异步的、同步的交易均可以实现,并且还能够实现跨分片的交易,固然,还有其余不少很好的性能,好比其余的加密方式进行进一步扩展。

 

所以,Layer2 的这个机制是和以太坊2.0密切相关的,它能够把区块链更上一层楼。


 640?wx_fmt=gif


推荐阅读:


猛戳"阅读原文"有惊喜哟smiley_12.png


老铁在看了吗?👇