以太坊2.0指南 (上)
点击上方“Unitimes” 可以订阅哦!
unitimes.io
全球视角,独到见解
1
什么是以太坊2.0?
以太坊2.0是计划替代当前以太坊的网络。在接下来几年内,以太坊2.0设计者计划将以太坊的共识系统和以太坊状态结合在一起。这工作范围非常广,我们无法准确说出以太坊2.0将会包含什么或者不包含什么。我们确实定了一些规范,并且已有不少团队致力于这些规范的早期实现。
目前,在以太坊 2.0 设计者们暂定的计划中,研究的技术包括分片(sharding)、Casper、状态租金(state rent)以及 eWASM 虚拟机。首次客户端测试正在进行,预计轻功能版以太坊2.0测试网将在3个月内(2019年第一季度)上线。
首先,以太坊 2.0 会从以太坊主链上获取ETH (而不是获取其安全性),但这种关系会发生改变,因为设计者们最终会将以太坊 2.0 设为主链,同时将以太坊 1.X 设为受到以太坊 2.0 网络管理的分片链(备注:以太坊1.x 是近期以太坊主网的一系列全面升级的代号)。
2
这对工程师们来说意味着什么?
如果你是 Solidity 或者 Dapp 开发者,希望在以太坊 2.0 部署智能合约,你需要进行许多调整。以太坊2.0将完全替代当前的以太坊网络,它将改变许多我们在编写智能合约时所做的假设。针对以太坊2.0的发展计划更像是一个产品发布周期,而不是一个升级周期。我们为以太坊1.X编写的工具和合约,很可能为了以太坊2.0,需要全部进行重新设计和编写。
分阶段展示
目前,分片的路线图已分为7个阶段(几乎是以太坊2.0发展路线图阶段的两倍)。当前只有阶段0有明确的规范,而且还在定期进行更新。相比之下,阶段1规范的精确度要低很多,目前也暂未处于积极开发的状态。阶段1过后,分片的路线图看起来更像是一个目标清单,而不像技术文档。例如,阶段2中,路线图链接到 ethresear.ch 的次数比链接到 GitHub 还多三倍。
由于再进一步的阶段内容更像是推测,而不是具体的设计,因此我们具体讨论的内容仅限于阶段0、阶段1和阶段2,但我们也为往后的阶段制定了多个可能性方向的草纲。
1
阶段0:信标链
阶段0引入了“信标链(beacon chain)”这一概念。以太坊2.0设计者们希望信标链成为以太坊2.0网络的中心,成为保障其他所有分片的安全性和对分片进行验证的根源。在信标链成功部署后,它将使用 Casper the Friendly Finality Gadget(Casper FFG)来作为PoS来运行。
信标链的早期迭代版本的设计需要尽可能简单,这也是为什么阶段0无法支持智能合约、账户、资产转移等的原因,也是它不包含任何分片的原因。ETH 在信标链上无法进行转移,也就是说,用户无法通过早期的信标链将ETH存入交易所中。
BETH:全新的 ETH
信标 ETH(BETH)是一种新型资产,只有信标链上的质押者(验证者)会使用 BETH。创造 BETH 的方式有两种:1)作为验证信标链(以及阶段1以后的分片)的奖励而获得;2)所有 以太坊1.X 用户均可通过 以太坊1.X 合约 以1个 ETH 的单价来购买 BETH。合约将此称为“存款(押金)”。
设计者们将发现,该合约没有取款功能。这是因为在阶段0中,BETH 是无法从信标链中提取出来的。也即是说,一旦在以太坊1.X的验证者注册合约中存入一笔款项,以太坊1.X的 ETH 就不复存在了(被销毁了)。信标链验证者会监控此合约,并向信标链提交存款信息,从而发行新的 BETH 并将其发送给存款人。
因此,当 ETH 被发送到验证者注册合约后,我们很快就能看到信标链发行出新的 BETH。存款是可以会受到临时审查,但在 Casper 的规则下,不太可能会受到永久性审查。
只有到阶段2的时候,才能对信标链上的 ETH 进行转移。而且我认为,在以太坊1.X完全被折叠进分片系统中之前,不太可能有什么方法能把 BETH 提取回至 ETH1.X 中。由于阶段0尚未完善,同时阶段1尚未有可靠的规范,因此, BETH 在至少在两年内会保持作为一种独立且不可转让的资产,这种假设似乎是很合理的。一旦阶段2完成,BETH 可以在分片中来回转移,而 ETH 则不可以。这不太可能导致重大经济困难。
过去,像 BETH 这样的预售且功能性差的代币是通过 IOU 在交易所上交易。例如 HitBit 和 BitMEX 这两家交易所就在 Tezo 众筹期间 推出 XTZ 期货市场 (注:XTZ 为 Tezo 发行的代币)。一旦市场上有对 BETH 的需求,我们就能看到一个充满活力的交易所生态系统,这些交易所将支持受监管的 BETH 的交易和质押。
然而,市场似乎不太可能对 BETH 有需求,因为 BETH 并不是好的投资产品,因为 BETH 与 ETH 是单向挂钩,使得 BETH 的价格上限为1 ETH。也就是说,BETH 的价值永远不可能超过 ETH,却可能比 ETH 低。
注:IOU(I OWE YOU 的简称,类似银行券的存在)是一种记账方式,交易所内部的挂单和成交,都是用平台的 IOU 来记录存入的数字资产。
2
阶段0+:抵押
用户可以在信标链上质押 32 个 BETH,从而成为验证者。阶段 0 中,验证者仅管理信标链。自阶段1起,验证者也将管理 1024 条分片链。信标链(以及每条分片链)将使用 Casper FFG 来敲定区块。FFG 是一种权益证明算法,可以针对验证者的不良行为罚没一部分验证者抵押的 BETH。
敏锐的读者应该已经注意到,在分片路线图的“以太坊3.0”部分提到 FFG 有一个表兄弟,即 Casper CBC。由于对 FFG(以及CBC)进行全面讨论超出了本文的讨论范围,我建议你读一读 Vitalik 关于混合 PoW/FFG 的文章,以及他在 Medium 上关于最小罚没条件的帖子和 FFG白皮书。
验证者需要做什么?
分片旨在将区块链的状态信息分割到所有节点上,使得所有节点都不需要存储网络的全面信息。因此,验证者不需要验证所有分片。取而代之的是,将由信标链来协调其它所有分片的验证,而所有验证者将需要验证信标链。
每个周期(生成64个区块或大概6.4分钟),信标链会重新打乱验证者,并重新将他们分配到分片上。分配到一个分片的一组验证组成一个委员会(committee)。委员会的成员128名封顶。在阶段0时,这意味着信标链将每6分钟选择一次有效的验证者,为接下来6分钟的验证工作组成委员会。而在阶段1时,信标链将为1024个分片分别指派一个验证者委员会。具体的指派方法十分复杂。要经过多阶段生成随机数,还要一个可验证延迟函数(VDF),来进一步防止委员会选择过程被操控。
由于委员会的工作至关重要,ETH2.0 会随机选择委员会并对其进行轮换。委员会负责保护分片的安全性、活跃性和完整性,以及负责在信标链上证明分片的状态。这些委员会是信标链获悉分片状态的唯一途径,反之亦然。从所有验证者中随机选择验证者组成委员会,可以将委员会这个整体撒谎或作弊的几率最小化。对他们进行轮换往往旨在降低糟糕的委员会可能会带来的伤害。换句话说,恶意或追求利益最大化的验证者很难利用对委员会的筛选来攻击网络的任何部分。此外,即使他们运气好获得了一个分片的掌控权,他们能掌控这个分片的时间也不超过64个区块的生成时间。
针对工程师的 PoS 机制
有关 ETH 1.X 的 PoW 机制和 ETH 2.0 的 PoS 机制之间的理论差异的文档编制是一个持续的过程,但值得一提的是,PoW 和 PoS 之间的一些功能差异的确对设计者们造成了直接的影响。举个例子,PoW 链支持无状态的简易支付验证(SPV)证明以及 NiPoPow 所概述的对远程状态进行跟踪,而 PoS 禁止任何低状态通信 (low-state communication)。从主观上禁止了轻状态证明。换句话说,PoS 远程状态验证包含的数据量将大致与 PoW 无状态的 PSV 证明相同,但是需要事前验证整个 PoS 历史记录。而无状态的 PSV 证明,不需要任何额外的验证信息。这意味着,在主观性的 PoS 环境下,跨分片或跨链应用的功能性下降,开销却上升了。
3
阶段1:分片
阶段1旨在就分片链的内容达成共识,而不是就分片链的意义达成共识。换句话说,阶段1是分片结构的试运行阶段,而并不试图用分片来实现扩展。信标链将把分片链的区块视为没有结构或意义的简易字节集合。
此阶段中的分片链将依旧不会有账户、资产或智能合约。由信标链为每个分片的每个时段随机选取的分片验证者,仅会对每个区块的内容达成一致。只要所有委员会成员达成共识,并定期地在分片上更新信标链的状态,那么分片区块中具体是什么信息并不重要。
分片验证者通过一个称为跨联(crosslinking)的过程来验证分片的内容和状态。简而言之,委员会必须在信标链上添加该分片的可验证信息(比如默克尔根)。在阶段2或之后的阶段中,跨联过程将支持跨分片通信。
一旦信标链从多个委员会那里接收到准确的给定跨联证据,信标链就可以相信这个跨联可以证明该分片信息的真实性,而不用对整个分片进行验证。如果委员会成员不认同某个跨联为有效跨联,则显然,有一位委员会成员犯了错,应该对该委员会进行罚没。这就是保障所有分片安全的根源:验证者的不当行为最终会被发现,信标链也会对其进行制裁。
阶段1并没有什么特别有趣的内容。从根本上说,它是跨联的自我发展阶段,它也是分片借鉴信标链的对称机制。设计者们似乎对这些机制的作用很有信心。目前的开放性问题主要围绕在其规范和实施策略上。鉴于阶段0耗费了几乎超过一年的时间才使规范达到合理的水平,我认为,阶段1也会耗费差不多的时间。
有趣的是,阶段0的实现与规范的设立时间几乎同步。即便是在距离测试网上线不到3个月的今天,阶段0的规范也还在定期调整中。这意味着,未来的 ETH2.0 阶段的开发时间的变动会很大。在阶段0进入测试阶段之后,阶段1的开发时间很有可能会是12-18个月,虽然有些乐观的人告诉我可能只需要6个月。
4
阶段2:智能合约
阶段2最终带来的是一个类似于我们所熟悉的以太坊系统。随着阶段 2 的发布,分片链的身份从简易数据的存储器转变为结构化的链状态。这时,BETH 开始支持转移,智能合约也会被重新引入。每个分片都将管理一个 eWASM 虚拟机 (我们将之称为 EVM2)。
我们希望 EVM2 将支持那些我们通过 Solidity 所熟知的账户、合约、状态和其它抽象元素。然而,大量的幕后变化可能会破坏到现有的工具。幸运的是,eWASM团队为 solc、truffle 和 ganache 做了一些准备工作。我们将在阶段2测试网上线之前或期间看到大部分我们所熟知的工具支持 EVM2。
阶段2很可能包含状态租金 (State rent) 的研究,这为今天的 Solidity 设计者们带来了一些有趣的挑战。状态租金并不无期限地提供存储代码和数据储存服务,它要求合约开发者和用户为超时的 EVM2 储存服务付费。这样做可以通过确保不用的信息随着时间的推移从状态上清除出去,从而起到防止状态膨胀的作用。这样做的目的是让用户(而不是全节点)来支付状态存储的成本费用。目前很多不同的模型被提出来,但没有哪个特别优秀。
有趣的是,随着一些以太坊升级计划的订立和杰出的以太坊核心开发者的推荐,状态租金可能会是唯一会在不同路线图上重复出现的内容。因此,我强烈建议在目前已部署的合约上制定支付状态租金的计划。目前我们并不清楚状态租金的准确设计,但我们应该为其成本做准备。
除此之外,我们不知道还能期望阶段2带来些什么。此阶段目前仍处于非常早期的研究阶段,还有几个主要问题尚未解决。鉴于非正式规范和研发过程,以及相比起阶段1而言阶段2延伸的范围,我认为在2020年之前发布阶段2不太现实。也就是说,即便以太坊2.0 可能在今年推出,但别指望以太坊2.0在2020年之间能支持资产转移和智能合约。
... ...
由于文章篇幅过长,我们将明天为大家带来后半部分,敬请期待!
原文作者:James Prestwich
翻译:Iris, Echo
校对:Jhonny
【文章版权归原作者所有,其内容与观点不代表Unitimes立 场。转载文章仅为传播更有价值的信息,合作或授权联系请发邮件至 contact@unitimes.media或添加微信unitimes2017】