以太坊进化之路:ETH2.0

这篇文章的原作者是链上金融服务供应商 Summa的创始人 JamesPrestwich。这篇文章是洒脱喜和 Apatheticco共同编译的,尤其感谢 Nic Carter在 PowerPoint上制作的这张有趣的图表,以太坊2.0就是计划中的以太坊的替代品。未来几年,以太坊2.0的设计者们打算将以太坊的共识系统和状态完全融入其中。因为以太坊2.0的应用范围很广,所以我们不能确切地说出它将包含或不包含什么。在以太坊2.0方面,我们的确有一些规范,而且有很多团队正在进行早期实现工作。目前,以太坊2.0设计者还在规划设计阶段,包括分片、 Casper、状态租赁和 eWASM虚拟机。最初的客户端测试正在进行中,预计开发人员将在三个月内(2019年第1季度)推出轻量级以太坊2.0测试网。一开始,以太坊2.0将从以太坊主链中获得以太币,但是设计师最终计划把2.0作为主链,而以太坊1. X作为它的分片链进行管理。假如您是一个 Solidity或 Dapp开发人员,并想要部署以太坊2.0智能合约,您将需要了解许多知识。Ethery2.0完全取代了 Ethery,它将改变我们在编写智能合约时所做的许多假设。以太坊2.0多阶段发布计划,更新是产品发布周期,而非升级周期。为了让以太坊1. X有更好的工具和智能合约,可能需要为以太坊2.0进行重新设计和改写。幸好,我们还有几年时间来建设生态系统。为帮助大家达到这个目的,我想讨论一下目前的路线图,并介绍一些在工程上的效果。分片路线图(以太坊2.0路线图的2倍)目前列出了七个阶段。在这些规范中,只有Phase0 (Page 0)具有详细说明,并将定期更新。而且 Phase 1 (第1阶段)规范的精确性要低得多,而且似乎还没有得到积极发展。从第一阶段开始,路线图不再是技术文档,而是目标列表。举例来说,在 Phase 2 (阶段2)中,路线图与ethreaser.ch链接的次数是与 github链接的三倍。由于任何进一步的讨论,似乎都只是一种推测,而非工程,因此我们的具体讨论将局限于阶段0、阶段1和阶段2,而且我们对后期可能的发展方向做了一些大致的概述,接下来,我们将介绍每个阶段的发展状况。第0阶段引入了信标链。以太坊2.0的设计者们希望将信标链构建成一个以太坊2.0生态系统的核心,并为安全和验证提供基础。完成信标链的部署之后,它将运行 Casper FFG的 PoS机制。早期的信标链迭代被设计得尽可能简单,这就是为什么阶段0不支持智能合约、账户、资产转移,任何片断都不包括在内。以太币在信标链中不能被转移,这意味着用户不能将其存入交易所,TigerETH (BETH)是唯一由被验证者使用的新资产,它有两种创建方式:1)作为对 TigerETH链进行验证的奖励(以及在阶段1之后的切分);2)任何以太坊1. x的用户都可以通过以太坊1.x合约购买 BETH。合同把这叫做“保证金”。工程人员可以注意到合同没有撤销的功能。因为在0级, BETH不能从信标链中撤回。这就是说,一旦存储在以太坊1.x验证者注册合约中,以太坊1.x的以太币将被有效地烧毁。信标链验证人员查看合同,并向信标链提交存款信息,然后向存款人发放新的 BETH。所以我们的目标就是:当存款人向验证者的注册合约中发送了太币之后不久,它就会收到信标链上相应数量的 BETH。暂时的存款审查是可能的,但是根据卡斯珀规则,永久性的审查不大可能发生。在信标链上的以太币传输需要等到 Phase 2 (第二阶段),我相信,直到1. X完全折叠成分片生态系统,我们才能把 BETH移动回1. X。考虑到第0阶段不完整,并且没有可靠的第1阶段规范,我们可以合理地假定, BETH作为一项独立的、不可转让的资产将至少持续2年。当第2阶段结束时, BETH可以被转移到分片上,也可以离开分片;但是, Ethereum不会。它不大可能造成严重的经济困难。以前,许多交易所都是通过票据交易,把与 BETH相似的 token预先成交。举例来说,在 Tezos众筹期间, Hitbit和 BitMEX交易所相应推出了期货市场。假如有 BETH市场上的交易需求,我们可能会看到一些交易所支持 BETH的托管交易和投资。但是,市场对 BETH的需求却出现了一些问题。由于 ETH与 BETH单向1:1挂钩,使得 BETH具有最高限价,所以它不是一个好的投资标的。这就是说, BETH的价值不可能超过以太币,也可能低于以太币。使用者可以在信标链上押入32 BETH,然后成为验证者。而在第0阶段,验证者只能管理信标链。验证人员还将从第一阶段开始管理1024个片断链。信标链(以及每一个片链)将使用卡佩尔 FFG机制来识别区块。卡斯珀·费曼是一种 PoS算法,用于对诸如链中止和审查之类的错误行为进行权益削减惩罚。感兴趣的读者会注意到, FFG的“表兄”卡斯珀·CBC在分片路线图的“以太坊3.0”中被列出。(对 FFG的全面讨论和 CBC不属于本文范围,我建议你阅读 Vitalik的关于混合 PoW和 FFG的注释,以及他写的关于最小化削减条件和 FFG论文的 medium文章。分割的目的,是在不占用网络完整图像的情况下,将状态信息跨节点进行分割。所以没有验证者来验证所有的片段。而信标链则协调所有其它分片的验证,并由所有验证人员进行验证。每一段时间(64块或6.4分钟),信标链就会对验证器进行无序检测,并把它分配到一个片断中。一群验证者,他们被指派给一个委员会。这个委员会有128个成员。如果是阶段0,那就意味着每6分钟,信标链就会选择一位验证者,然后在接下来的6分钟组成一个委员会。第一阶段,信标链将指定一个1024分片的验证者委员会。精确度方法很复杂。该方法包含了一个多阶段随机数生成过程和一个可验证的延迟函数来阻止试图操纵委员会选择过程。在2.0以太坊中,委员会是随机选择的,而且经常在关键工作中轮换。负责维护分片的安全性、活动性和完整性,并对分片状态进行信标链验证。他们是信标链唯一知道片断状态的方法,反之亦然。在所有验证者中随机挑选出他们,可以将整个委员会撒谎和欺骗的可能性降到最低。轮调他们,通常是为了减轻糟糕委员会可能带来的危害。换言之,存在恶意的验证者,或是寻求利润最大化的验证者,很难成为委员会成员,并对网络发动攻击。而且,即使他们有机会控制一个分片委员会,这种控制所花的时间也不过64块(6.4分钟),尽管以太坊1. x的工作量证明(PoW)和以太坊2.0的权益证明之间存在着哲学上的分歧,但值得注意的是,一些 pow/pos特性上的不同,确实直接影响到工程师。举例来说, PoW链支持无状态 SPV验证和 NiPow汇总的远程状态跟踪, PoS则禁止任何低状态通信。主观妨碍了轻量级认证。换句话说,关于 PoS的远程状态证明将包含大约与 POW无状态 SPV证明相同数目的数据,但是需要对 PoS历史进行预验证。反之,无状态 SPV证明无需额外的信息进行验证。在一个主观的 PoS环境中,交叉切分或交叉链应用会降低功能,增加管理开销。第一阶段的目标,是就片断链的内容达成共识,而非其意义达成共识。换句话说,它是一个片式结构的试运行,而非尝试用片式来扩展。信标链会将片状链看做是没有结构和意义的简元集合。片链还没有帐户、资产和智能合约。信标链根据每个时序的每一个分片随机选择分片验证者,他们只同意每一块的内容。当各委员会达成一致意见,并定期对分片上的信标链进行更新时,分片块中的信息就无关紧要了。分割验证器通过一个叫做交联(crosslinking)的过程对分割中的内容和状态进行确认。简而言之,委员会必须在信标链(例如, merkle根)中包含关于片断的可验证信息。第二级以上的阶段,交联将支持交叉分段通信。当信标链从多个委员会收到某一特定交联的精确证据后,信标链可以相信该交联是一个分片的真正代表,而不需要对整个分片进行验证。若委员会不同意交联的有效性,显然该委员会是错误的,应予以处罚。它是所有分片的安全根源:验证者的错误行为最终将被发现,并受到信标链的惩罚。第一阶段没什么特别有意思的东西。基本上,它是用于交联的引导阶段,也是分片参考信标链的一种对称机制。设计人员似乎相信这些机械装置能够工作。围绕规范和实现策略展开的开放的主要问题。鉴于0阶段已经花了大约一年的时间才达到一个合理的标准水平,我想0阶段大概需要花上一段时间。值得注意的是,阶段0的实现与规范同步。直到今天,在以太坊2.0测试网络发布之前,阶段0度规范仍在定期更新,而这一更新距离发布仅有3个月。也就是说,未来以太坊2.0在开发时间上将有很大的不同。尽管乐观派告诉我说这将花费6个月,但是我们实际上可以很容易地预见到,在0阶段进入测试之后,阶段一的开发将花费12-18个月。这个阶段最终将带给我们一个与我们熟悉的以太坊体系相似的系统。在发布第二阶段后,片链将从一个简单的数据容器过渡到一个结构化链状态。到那时, BETH将是可转让的,而智能合约将重新引入。每一块块都是基于 eWASM (我们称其为“EVM2”)来管理一个虚拟机,我们希望EVM2可以支持账户,合约,状态,和其他我们在 Solidity中熟悉的抽象内容。但是,大量的幕后改变可以破坏大部分现有的工具。幸好, eWASM团队在 solc、 truffle和 ganache上做了一些基本的工作。可以预期,在阶段2的测试网发布之前或在阶段2中,会有一些我们熟悉的工具移植到EVM2中。Solidity租赁(State rent),很可能出现在第二阶段,它给目前的 Solidity工程师带来了一些有趣的挑战。状况租赁要求合同开发者和用户支持EVM2的一段时间存储费用,而不是永久地存储代码和数据。通过确保不使用的信息随时间而脱离状态,这可以防止状态膨胀。目的是让用户(而非整个节点)支付状态费用。开发人员提出了许多不同的模型,但是目前还没有确定的胜利者。有意思的是,随着一些以太坊升级计划的发布,以及以太坊的优秀开发者的推荐,状态租赁可能是所有路线图中唯一有重叠的部分。所以,我强烈建议在当前部署的合同中加入对状态租赁的支持,并为将来向用户提供状态租赁设计模型。对于状态租赁,我们不知道如何设计,但是我们应该制定成本计划。此外,我们不知道第二阶段将会发生什么。这方面的研究还处在初期阶段,主要存在一些有待解决的问题。鉴于非正式的规范和开发流程,以及阶段二在阶段一的扩展范围,2020年前阶段二不大可能实现。这就是说,虽然今年以太坊2.0可能会发布,但我们不能期望它能支持资产转移或智能合约,至少要到2020年,关于智能合约的相关问题,我们将在第三阶段的内容中简单谈一谈。第三阶段通过尽可能多的将状态转换为链,尽可能的减少链上的状态。不需要在链上存储整个状态,而只需要保存一些状态信息和聚合器(聚合器是表示数据列表长的短数据; Merkle树是聚合器的一种)。使用者应负责储存链下的完全状态。如果用户希望与状态交互,他们将在交易中包含对当前状态的证明。通过这种方式,运行验证节点的资源需求大大降低。目前已有一些聚合器的设计,它们具有不同的特性和性能特点,但是没有作出具体的选择。这一阶段,我们不再使用链路通信来协调用户,所以我们必须计划通过其他系统来同步状态。由于链接不再能保证数据可用,因此链上的事件对工程师的有用性降低了。第三阶段,维护和获取链接状态将成为制约 dapp设计的关键因素。但是,还有一个无法克服的问题: ETH2.0合约,尽管它们和以太坊合约一样强大,但是它们必然会被绑定到一个分片(shard)上,而不能与另一个分片上的合约直接交互。它直接导致了分片。分割的目的是分割状态并将其放置在不同的分割碎片中,而无需直接了解其他分割碎片。扩展是通过分割状态并尽可能减少验证人员的工作量来实现的。直接性交流需要直接的知识。但是根据设计,一个碎片并不能直接识别其它碎片。只需与信标链进行跨链通信,就能理解其它分片碎片。所以,无论何时我们想要跨分片交互,我们都必须等待。

提示:如果您觉得本文不错,请点击分享给您的好友!谢谢
相关推荐
新闻聚焦
猜你喜欢
热门推荐
 
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。