以太坊2.0拥有1024个分片,共识算法和跨分片沟通由信标链管理。对于Facebook Libra,Vitalik认为,它“绝对会”和去中心化的区块链公链形成竞争。
本文旨在传递更多市场信息,不构成任何投资建议。
6月29日,由CSDN、灵钛科技联合主办,区块链大本营、ETHPLANET、刺猬财经、Unitimes协办的「2019第二届以太坊技术及应用大会」在北京举行。
以太坊创始人Vitalik Buterin(V神)发展主题为“以太坊2.0之跨分片交易”的演讲, 介绍了以太坊2.0最核心的分片技术和信标链机制。
Vitalik首先介绍了以太坊2.0采用的1024个分片的设计,同时介绍负责管理公式算法与跨分片交易的信标链机制。他表示,信标链相关问题是目前研究重点,它将根本性地改进以太坊的性能和可扩展性。信标链的目标是将以太坊性能从目前的10 TPS左右提升至10000 TPS以上,同时增加信息吞吐量速度,形成更多区块链应用。
针对跨分片异步交易中可能出现的问题,Vitalik以“订火车票和订酒店”为例,介绍了一种名为“Yank”的机制。Yank是一个技术上类似于数据库锁定的方法,但应用上更宽泛,可以实现更快的异步交易。之后,Vitalik还就分片机制如何以类似Plasma机制的方式做同步交易进行了详细讲解。
对于减少复杂性、让更多用户使用钱包、提升区块链的便捷性、性能、应用效率等问题,Vitalik从分片发挥的作用以及开发者工作两个角度进行了阐述,同时引出一种名为“OVM”的积极虚拟机机制。开发者则需要研究区块时间,知道要在哪个区块中公开这个分片。不过从不同分片进行数据公布,逻辑和智能合约都会变得很复杂,用户钱包也要进行大量、高速的计算。这是另一个需要解决的问题。
对以太坊2.0的整体设计和开发,Vitalik总结出4点:
1. 首先需要一个比较通用的基础设施,让大家把数据放在这条公链上,在链上可以更快速地计算;
2. 利用工具进行应用的过程比较复杂,不同的用户有不同的实施方式,所以需要一个全球的共识;
3. 如何储存、如何对某个用户具体所有的币的数量进行准确了解,这些都需要通过更进一步的应用来实现;
4. 在此过程中,还需要保证整个流程的简便性,需要不断提升共识机制,创造出有不同应用的底层协议。
演讲结束后,Vitalik及其团队还接受了刺猬财经APP(ID:hxcj24h)的采访,首次公开评论Facebook Libra的影响。Vitalik认为Facebook Libra对以太坊和行业都是一大利好,它的影响力、连接的20多亿用户、已有的资金和开发者资源,都蕴藏着巨大的机会。Vitalik表示,如果以太坊应用能够建立桥梁连接Libra和以太坊,将会带来数以百万的用户。
不过Vitalik也承认,Libra“绝对会”和去中心化的区块链公链形成竞争,但不会取代它们。因为区块链公司所创造的去中心价值不可能被Libra背后的公司财团替代。仔细研究Libra背后的组织,会发现很多是位于美国的商业公司。而对于这些组织所管理的区块链项目、去中心化应用和加密货币,世界上有很多人感到不舒服。因此目前这两种系统都存在很多机会。
以下为Vitalik Buterin演讲全文,由刺猬财经APP(ID:hxcj24h)整理编辑,未经本人确认:
大家好!
现在我们要把以太坊进化到2.0版本,有更多分片。现在在研究信标链相关话题,这方面有很多努力要做。这可能对区块链交易非常有用,增加它的可扩展性,这样区块链的理念从1秒钟10个交易,以后可能是每秒1万个交易都能够处理,它会增加信息吞吐量的速度,也能够有更多区块链的应用。
但是对于开发者也会面临一些挑战,区块链现在的运作方式是每个计算机要验证所有交易,每个节点都要进行验证,这样安全性是好了,但是它难以进行扩展,因为我们交易的数量非常多,因为交易速度是由一个计算机决定的,所以我们想要去改善这个过程,我们要提高它的拓展性。这样每个计算机只需要验证一小部分的交易,这样并不是所有节点都要进行验证了,每个计算机只需要去处理1000个当中的千分之一的交易。
当前我们要处理的问题是,如果我们看到现在的应用运作的方式就会发现,在这个理论上建立其他的东西是很容易的,比如智能合约和其他进行交流时,可能需要5个应用的参与,所有的帐户、智能合约都储存在一台计算机上,所以它们相互交流非常方便。但是如果我们在更短的一个区块链中就做不到了,因为这个区块链中智能合约、帐户、交流速率非常高,我们很难让一个应用都能够进行对话,难以进行立即的对话和交流。
所以以太坊2.0的设计并不是让每个节点都去处理所有的交易和信息,我们有1024个分片,每个分片都相当于是一个短的链,每个分片都有自己共识的算法,不同分片中交流进行管理,每个分片会跟其他分片进行交流,由合约进行交流,每6分钟会发生一次,所以每6分钟每个分片都有机会了解哈希值以及最近发生的事情等等。
另外,之前这个链可扩展性受到了限制的,所以我们可以选择,要么这个链的交流速度变慢,要么拓展性受到限制,我们还是要二选一。另外,这些基础层主要关注数据和计算力等等,不同的分片交流和沟通的能力、它们是否受限,我们可以创建一个机制让它们的性能更好、使用效率非常高,这样用户在不同的智能合约也能够相互交流,而且速度非常快。
首先,我们是异步交流的流程,这是我之前设计的,已经有了几年的设计过程,如果读相关文章,比如2016年就有文章谈到异步交易。它的理念是,如果我们有几个分片的话,如何去促进这个分片之间的交易。比如说我有5个硬币,然后我想要把这5个硬币转移给Bob,Bob有一个帐户,它的帐户在底端,我的硬币在顶端,首先我要在顶端做一个交易的请求,这个交易会进行第一个分片处理,然后它会有一个哈希值产生,当然,它并不会立即完成,但是之后我们就能够把它放到底部的分片当中,它能够在底部的分片进行验证。验证之后交易就能够进行处理了。
所以有一个信息,是5个硬币进到Bob,底部的Bob就能够得到5个硬币,它不会立即发生,原因是我们要验证,不仅仅接收方需要进行验证,还有其他的哈希值、数据、信标链等等都需要进行验证。我们发现接收方也是分片的一部分,不同的分片交流需要5分钟的时间,所以第一步我们就需要发送这个交易,第二步是等几分钟,第三步是要进一步去处理这个交易,然后才能够让底部的Bob接收到这个硬币,这样Bob帐户就增加了。
现在有各种加密货币,包括比特币等等,对于这些数字资产有不同的平台,我们发现这样一个交易,它其实非常强大的,有很多有趣的理论、复杂的理论都可以来验证这个交易,不管是开发者还是java脚本的处理等等。我们发现,我们理解这些机制,但跟客户交流是非常难的,我们还是有很多可以做的,但是会有相关沟通方面的限制。
另外一个是“火车票和酒店”的问题,比如你在数据库工作,就会了解相应的问题,它跟我们毕的交易非常相似,我们有不同的方式可以解决相关的问题。你想要去一个地方旅游,我们要买火车票,同时也要订酒店,如果订一个不行,要两个一起订,所以我们要确保:有没有都不订,要么酒店和火车票一起订。如果仅仅有火车票而没有酒店,或仅仅酒店而没有火车票,这对我来说没有任何意义,是浪费钱。
所以我们想象两个智能合约,一个合约是用来订火车票的,另外一个是用来订酒店的。当前体系解决这个非常简单,首先,这个交易给火车票的地方打电话,比如我们在火车票上订了一个座位,这个合约会回复你成功或失败,然后我们再给订酒店的地方打电话,这个地方也回复你成功或失败,如果其中一个失败了,那在我们交易过程中就无法让这个交易进行下去,整个交易会被撤回。今天我们也是这样做的,不管是订火车票还是订酒店,其中一项失败了,我们就可以把交易撤回。但是在更短的链中,订酒店和订火车票是不同的分链中,确保一致性更难,原因是因为发现在一致的环境中已经订了火车票了,我们就不能再撤消了。
其中的一个解决方案是我们有一个新的机制叫“猛拉”,它看起来是全新的想法,但是有很多类似之处,跟我们之前的数据库很像。所以我们会有非常多样化的做法,并不是用一个合约订酒店,一个合约火车票,现在我们把它分开,每个火车座位都有一个合约,每个房间都有一个合约,这样每个合约都能够代表我们订座位或者订房间的能力。
现在我们能做什么?在“猛拉”中发一个合约,它的功能是一次用一个合约,我们拿掉这个合约之后就获得一个座位,然后我们再把合约放到另外一个位置上。
解决“酒店和火车票”的问题怎么办?第一步,猛拉,从酒店分片拉一个合约,从火车票再拉一个合约两个分片同时预定,现在酒店合约和火车票合约在一个地方,跟之前的交易一样,就可以一起订了,但其中任何一个操作失败,那我们就什么都不订。或者其他人想要订火车或订酒店,去之前你去的那个分片,可以用这个合约进行“猛拉”的操作,不会有任何阻碍,两个一起订,它是自动的过程,就是要么两个都订,要么两个都不订。所以在区块链的运用当中有很多都是类似的,包括去中心化资产的交流等例子,对我们来说非常有用,能够提高用户操作性以及区块链应用程度。
这是另外一个例子,也是我们可以做的一个应用。现在我们想象一下,我们用一个更短的区块链,比如它需要5分钟时间让一个分片知道另外一个分片的数据或者哈希值,但是我们希望这个应用变得更加快捷,所以我们的做法是在上面分片有一个硬币,然后我们想把这个硬币移到下面,我希望它的方式是硬币可以在底部立马进行应用,那我们就不用等了。
具体怎么操作呢?看起来是挺难的,我们是这样做的。比如说,就像我们之前的程序一样,首先,我想给Bob发5个币,就必须在上面的分片进行交易,然后上面就会给我个这样的证明,它还包含一个区域性的分片,然后我再把它放到下面的分片中,下面的分片就会记录这个交易。而且它已经了解上面分片当中的根值了,所以下面的分片根本不知道上面的merkle根是否合法,但是不管怎样,它把相关数据融到自己的数据包中了。如果这个merkle根记录另外一个信息,也可能没办法让下面的分片知道。
我们这里想陈述的是,最开始Alice有10个币,Bob有20币,Charlie有52个币,我们把这些进行压缩之后进行存储。有两种情况,一种情况是Bob有20个币,还有一种情况是Bob之后有25个币。如果我们的钱包上面看到上面的根是R,下面的分片就可以做个推测,就是Bob有25个币,就可以取25个币给其他人。
即使在这样的状态下,我们的计算也并没有最终化,看起来这个交易已经完成了,那么你可能会问:看起来好像Bob有了这些币,但是他还没有花这些币。我们假设Bob要把25个币发给Charlie,他会做什么?把22个币发给Charlie会是什么?现在这种情况下,你只能把两个情况进行评估和对比,这种情况下Alice还是有10个币,如果合法的话,Bob之前有25个币,现在25-22,它只剩3个币了,如果不算根是不够的,所以Bob还是有200个。如果根是对的,就会从30多上升到52。
这个交易结束后,上面的分片和下面的分片信息可以连接,下面的分片可以记录上面分片的信息了,我们就不用去思考到底R是真实的还是假的,我们知道R一定是真实的Charlie现在有52个币了。这个逻辑是在后台进行的,逻辑效应是通过Bob、Charlie的钱包分析,我们至少先知道发生了这样的交易。非常有意思的一点是,对于这个技术,你可以用通信的方式在跨区块链中进行交易,还可以让它创造应用程序,让不同的区块链进行跨链的交易。
比如我们假想有这样一种应用,上面的分片是以太坊区块链,下面的分片是另外一种区块链,它们两个如果是相碰撞、相冲突的话,我们会用同样的机制保证它们交易,让它们进行及时的通讯、及时的去中心化的交易。这在以太坊和跨以太坊的区块链交易中是非常重要的,可以让跨链的通讯变得更加方便。
我们还可以实现其他的目标,比如我们目前已经做了一些工作,比如通过Plasma方法做同步的交易,我们的目的是首先Plasma已经建立了,希望data把这些数据公布到分片上,所有这些数据并不一定都能够公布到区块链上,但是最终发生的一件事情是,我们还是会用类似Plasma的方法去实现同样的目的,我们不会马上去数状态的总数是多少。我们至少要知道现在以太币的所有者的目的是什么,是在任何分片发交易,还是要等一段时间才能出资产。所以如果发生冲突的话,他有可能想上传证据,还有所有者可以对硬币进行再构造。
通过这个方法可以保证如果我们收到了币,从来没有进行非法支付的话,我们的交易就会同步到整个区块链上进行广播。这些交易出现了,我们有两个资产,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秒的时间就可以立即确认,得到区块,然后可以进行证明。如果做得很成功的话,用户体验会非常好,类似之前中心化服务器提供的这种体验一样,如果我们用第二层方法,从不同的分片进行数据的公布,逻辑会非常复杂,智能合约也会变得很复杂,用户钱包会进行很高速、很大量的计算,有多少币到哪个用户手上就需要更长时间进行计算,这是我们更需要研究的一点了。
这里我得出的结论是什么?如果我们想要做出一个通用型的区块链,就首先要有一个比较通用的基础设施,能够让我们把数据放在这个链上,还可以在这个链上做更快的计算。我们利用工具进行应用的过程比较复杂,不同的用户有不同的实施方式。所以区块链要求我们有一个全球的共识,就是怎样进行储存、怎样对于某个用户具体所有的币的数量进行准确了解,这些都需要我们通过更进一步的应用来实现的;而且我们需要保证整个流程的简便性,防止这个流程变得复杂;需要对于共识机制进行不断的提升,创造出有不同应用的底层协议。
这已经成为一个非常活跃的研究,我们正在研究怎样设计刚才所说的这些机制,让我们创造出扩展区块链以上的不同应用,它拥有很强的性能,可以进行非常快速的交易,甚至是异步的、同步的交易都可以实现,而且还可以实现跨分片的交易,当然,还有其他很多很好的性能,比如其他的加密方式进行进一步扩展。
因此,二层的这个机制是和以太坊2.0密切相关的,它可以把区块链更上一层楼。
本文来自,仅作分享,存在异议请联系平台删除。本文观点不代表刺猬财经 - 刺猬区块链资讯站立场。