区块链:以太坊技术及应用大会 | ETH2.0技术攻略

金色财经6月29日讯2019以太坊技术及应用大会于6月29日在北京长城饭店举办,本次大会由CSDN和灵钛科技联合主办。V神及以太坊基金会多位核心成员、海内外顶级以太坊开发者、技术专家等参与大会,围绕以太坊的生态全景、未来发展和开发实战进行主题分享,精彩观点总结如下。

以太坊创始人VitalikButerin:以太坊2.0之跨分片交易

在热烈的掌声中,Vitalik发表了本次大会的第一个演讲,向开发者介绍以太坊2.0的理念及进展,着重解释跨分片交易的原理。

以太坊2.0的设计理念

现在的链,所有节点下载和验证所有交易,这样虽然很安全,但严重限制扩展性,我们想改善这个情况,提高其扩展性。未来区块链是分片的,这意味着每个节点只下载和验证一部分的交易。

在以太坊2.0的设计中,有1024个分片,每个分片都相当于一个短链,有自己的共识算法。信标链管理共识算法和跨分片的沟通,每6分钟不同分片间进行交流,了解其它分片的哈希值。

提高分片交流效率的策略

异步交易是我之前设计的。比如我有5个币,想把它转给Bob,Bob的账户在底端的分片,我的账户在顶端的分片。首先我要在顶端分片做一个交易请求,此交易会在顶端分片处理并产生哈希值,但它并不会立即完成,之后把它放到底部的分片中,当它在底部分片进行验证后,交易就能够处理了。

另外一个是“火车票和酒店”的问题,在订火车票和酒店时,你当然希望他们订在一起,如果只有一个而没有另外一个就没有意义。问题是:如果订火车和订酒店在不同的分片怎么办?

想象两个智能合约,一个合约用来订火车票,另外一个用来订酒店。其中任何一项失败,我们都可以把交易撤回。但由于这两个合约在不同的分链中,确保一致性更难。

其中的一个解决方案是“猛拉”,每张火车票有一个合约,每个房间有一个合约,这样每个合约都能代表我们订座位或订房间的能力。在“猛拉”中发起一个合约,它的功能就是一次用一个合约。从酒店分片拉一个合约,从火车票再拉一个合约,两个分片同时预定。而如果你放弃订票,而别人还想订,就可以通过“猛拉”拉到他们的合约里。它是一个自动的过程,要么2个都订,要么都不订。

用一个更短的区块链,但需5分钟让一个分片知道另一个分片的数据或者哈希值,我们希望这个过程变得更加快捷。

比如,最开始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,他会做什么?

我们不用去思考到底R是真实的还是假的,因为Charlie现在有52个coins,所以知道R一定是真实的。这个逻辑是在后台进行的,逻辑效应是通过Bob、Charlie的钱包分析,我们至少先知道发生了这样的交易。你可以用通信的方式在跨区块链中进行交易,还可以让它创造应用程序,让不同的区块链进行跨链的交易。

我们还可以实现其他目标,比如通过Plasma方法做同步交易,在任何分片都可以发起交易,资产会存在合约里,但我们不会马上去数状态的总数是多少,取出需要等一周。此时,如果任何人能证明那个状态不是有效的,他们就能取消取款。

通过这个方法可以保证如果我们收到了coin,没有进行非法支付的话,我们的交易就会同步到整个区块链上进行广播。我们有两个资产,X和Y,我们的分片有自己的轻重缓急,可能先进行某一次交易再进行下一次交易。

如果在参加交易过程中,自己有了资产,而且希望发送交易信息,就可以把它公布到任何分片上。如果你是某个资产的所有者,你可以仅仅分析这些分片,评估这些交易的历史记录。

这种设计被称为“积极虚拟机”,你所有权的资产并没有立即转移,我们开始一个流程,不需要把钱取出来,可能一整周时间才可以真正到帐,但如果你是用户,你可以知道为什么不能马上取出某个资产,而且你有一种感觉,就是这个交易是可以真正到账的。

这样做的好处是,我们会获得公开交易的能力,而且还可以得到及时确认,可能0.5秒的时间就可以立即确认,用户体验非常好,类似中心化服务器提供的这种体验。

如果我们从不同的分片进行数据的公布,逻辑会非常复杂,智能合约也会变得很复杂,用户钱包会进行大量的计算,需要更长时间进行计算。

对ETH2.0的总结

如果想做出一个通用型的区块链,首先要有一个通用的基础设施,能够把数据放在此链上,还可以在其上做更快的计算。我们利用工具进行应用的过程比较复杂,不同的用户有不同的实施方式。区块链要求我们有一个全节点共识。也就是,怎样进行储存?怎样对用户coin的数量进行准确,这些都需要通过更进一步的应用来实现。而且,我们还需要保证整个流程的简便性,需要对共识机制进行不断的提升,创造出不同应用的底层协议。

我们正在研究如何设计这些机制,让我们创造出扩展区块链的不同应用,它拥有很强的性能,可以进行非常快速的交易,甚至是异步的、同步的交易都可以实现,而且还可以实现跨分片的交易。

在2.0设计中,提高交易的确认速度不需要提高区块的速度,分片是分配数据和计算的工具,在这个底层上有很多方法实现可扩展的应用环境,通过这些方法可以在分片的区块链上保持速度和有用性。以太坊Layer1作为简单和安全的不用应用的底层协议,然后在Layer2继续研究和改进。

以太坊核心研究员Hsiao-WeiWang:以太坊2.0和信标链验证者

Hsiao-WeiWang首先解释为什么以太坊2.0需要信标链BeaconChain。

信标链的主要功能:第一,取代原本早期的设计,信标链现在是整个系统分片互动的核心。

第二,作为Whistleblower去举报恶意验证者。举报者不一定是proposer本人,但是如果它纳入更多SlashingOperation,就能够获得更高奖励。

其次,她介绍了如何如何成为信标链的验证者。

首先在ETH1主链部署一个特殊合约保管合同,合约接受使用者付出的抵押金,抵押金至少是要30个以太币,这个合约每收到一笔有效的押金,放出eventlog,但并不是马上加入到validator之中就算是有效的activevalidator,还有一部分需要在链上做验证。

之后,Hsiao-WeiWang提到了以太坊的惩罚和退出机制及其对应的处理方法。

最后,Hsiao-WeiWang分享了今年和明年初可以期待的事情。第一,希望有稳定版本的stabletestnet;第二,目前开发端都是各自研究,希望接下来可以形成交互;第三,正在形成新签章机制的标准化和审计。另外如果一切顺利,Hsiao-WeiWang团队会部署抵押合约并开放staking。

Go-Ethereum核心开发者GaryRong:深入以太坊轻节点协议

Gary首先说明了轻节点协议的基本概念。

以太坊轻节点协议就是为以太坊设计的,有两个目标,一是对资源要求足够低,二是有能力验证从网络中收集到的证据。目前有两类协议,一类是Les端实现的,另一类是PIP客户端实现,今天主要为大家介绍第一类协议。目前以太坊中的节点根据类别主要分为三类,第一类是Archivenode,第二类是Fullnode,最后是Lightclient。

之后,Gary解释了MerkleTrie的含义及checkpoint的相关情况。

MerkleTrie是以太坊网络中非常常用的一种数据结构,第一个特点是它通过路径来编码与这个节点对应的数据项的key值。第二个特点是每个副节点都会存储所有hash节点的hash。副节点本身的hash又是通过所有节点的hash内容再进行一轮hash计算得到的,所以最终MerkleTrie节点root节点的hash值包含整棵树中所有节点的hash信息。

轻节点可以从checkpoint同步,它必须满足两个条件,首先,它一定是可信的,或者checkpoint一定是最长链上的点,其次,轻节点必须能够利用checkpoint信息做历史数据的校验,这样它才能够真正不去同步所有历史的blockheaders。

轻节点刚进入网络时没有任何数据,所以它很难验证checkpoint是否正确。有两个解决方法:一是开发者通过编码方式在代码中确认最新的checkpoint,它是较为中心化的解决方案;二是在区块链部署一个智能合约,通过这个智能合约完成checkpoint的更新操作。

对于用户可以在轻节点中做哪些事情,Gary提到了五点:交易转积、查询账本服务、本地调用智能合约、智能合约事件订阅和基于历史智能合约事件的搜索。

Gary还分享了协议中流量控制与容量管理的解决办法。

流控问题采取比较传统的技术,但在去中心化架构下,client需要往一个单点发送请求,server为其进行复杂均衡、流量控制。通过这种方式client能够借助本地令牌信息更好地管理和分发它的请求,避免很低的处理优先级或者很高的响应延时。server端的容量管理通过提供4个参数让server运维限制server资源使用:lightserv、两个网络带宽的参数、以及lightpeers。server处理请求有一个较为精确的计算公式,需要同时考虑两方面内容:时间开销与网络带宽。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

链链资讯

[0:46ms0-3:935ms