读书笔记N247:以太坊2.0

559 字

读书笔记N247:以太坊2.0

按照以太坊的发展路线图规划,在经历了 Frontier (前沿,2015 年 7 月)、Homestead (家园,2016 年 3 月)、Metropolis (大都会,2017 年 10 月)三个阶段后,以太坊预计在 2020 年步共识机制由 PoW 转为 PoS;
整体架构由单链转为分片多链(Shard Chains);
执行环境将由 eWASM 代替原来的 EVM。

以太坊 2.0 是以太坊已充分规划好的替代品,按照日程,在接下来的几年里,以太坊 2.0 的设计人员会将当下以太坊的共识系统以及区块链状态悉数打包,加入到以太坊 2.0 中。
根据当前的计划,以太坊 2.0 的设计人员在其中加入当下的一些先进技术,如分片技术、Casper 协议、状态租金(state rent,即向用户收取存储数据费用的机制)和以太坊新一代虚拟机项目 eWASM。

届时,以太坊 2.0 中的以太币将全部来源于当下以太坊主链,但设计人员计划通过不断地更新迭代来改变两条区块链之间的关系,以太坊 2.0 将逐步成为主链,而当下的以太坊 1.X 区块链将会成为受其管理的分片链。

目前,分片技术路线图(两倍于以太坊 2.0 的路线图)共规划出了七个阶段。只有第零阶段列出了详细具体的规划,即进行定期更新。第一阶段的规划就没有那么详细了,看起来还没有进入到开发阶段。在第一阶段之后,路线图逐渐成为了预期目标的列表,而不再是一份技术文档。例如,在第二阶段中,路线图链接到以太坊研究网站 https://ethresear.ch/ 的次数是 github 的三倍。

第零阶段的核心任务是“Beacon 链”。以太坊 2.0 的设计人员希望 Beacon 链成为以太坊 2.0 生态系统的核心,成为所有其他分片链安全性和最终确认的根源。一旦部署,Beacon 链将使用实用的终极小工具 Casper(Casper the Friendly Finality Gadget,Casper FFG)这种权益证明机制。Beacon 链的早期迭代版本被设计的尽可能简单,这就是第零阶段不支持智能合约、账户、资产转移以及不包括任何分片链的原因。

Beacon 以太币(BETH)是一种仅供 Beacon 链上权益所有人(验证者)持有的新的加密资产。它可以通过以下两种方法生成:1)作为为 Beacon 链提供验证服务的奖励(以及第一阶段完成后在分片链上提供验证服务),以及2)任何以太坊 1.X 版本的用户都可以通过以太坊 1.X 版本的智能合约用 1 个以太币购买 1 个 BETH,这是一种被称为“存款”的智能合约,仔细研究你可能会注意到这个智能合约没有撤回交易功能。

用户可以在 Beacon 链上抵押 32 个 BETH 成为验证者。在第零阶段中,验证者仅仅管理 Beacon 链,但从第一阶段开始,验证者还将管理 1024 个分片链。Beacon 链(以及每个分片链)将使用实用的终极小工具 Casper(Casper FFG)权益证明机制来生成区块,这种机制将在区块链停止或经审查等不良行为出现时削减验证者的权益

由于工作的重要性,以太坊 2.0 随机选择验证者委员会并经常轮换验证者委员会。验证者委员会负责保护其分片链的安全性,存活和完整性,以及向 Beacon 链上报分片的状态,分片链验证者委员会是 Beacon 链了解分片链状态的唯一途径,反之亦然。

第一阶段旨在就分片链的内容达成共识,但不是关于它们的含义。换句话说,它是区块链分片架构的一次试验,而不是尝试使用分片技术来扩容。
到了第二阶段,以太坊 2.0 就有点类似于我们熟悉的以太坊了。随着第二阶段成果的不断发布,分片链将从简单的数据容器逐渐转变为结构化的区块链状态。这时 BETH 将可以自由地转移,并且系统将重新引入智能合约。每个分片链都将通过基于 eWASM 的以太坊虚拟机(我们称之为“EVM2”)进行管理。

第三阶段通过尽可能多地将状态存储到链下来最小化区块链上的状态。以太坊2.0的区块链上将只存储一些状态信息和聚合器(aggregator,聚合器是表示长数据列表的短数据字节,默克尔树就是一种聚合器),而不是像以太坊一样存储所有的状态。用户将负责在链下存储完整的状态信息,当用户想要与状态进行交互时,他们需要在交易中包含当前状态的证明。

第四阶段:分片智能合约;根据设计,分片链不存有其他分片链的状态,它们仅通过与 Beacon 链的交联来了解其他分片链。设计人员对于第四阶段只给出了思维导图和一些模棱两可的链接。这种情况的一个非显而易见的结果是,以太坊 2.0 在第四阶段之前不会为复杂的智能合约系统提供显著的可拓展性支持。

以太坊 2.0 的两大设计目标是可扩展性和安全性。
前者意味着吞吐量呈超线性增长,若节点资源投入量提升 K 倍,则整个系统的吞吐量增长大于 K 倍。
后者则意味着相应于节点所形成的共识安全性,保证所有部分都是同样安全的。
前者用分片(把整个系统的状态切分开来形成不同的片区)来实现,而后者用信标链来实现。

两者的分工是,信标链负责共识、只保存分片状态的默克尔根,而且不执行分片交易;分片则没有任何共识机制,仅有随机抽取的验证者来出块、验证并将默克尔根提交到信标链上。

https://mp.weixin.qq.com/s/8OBqlhRaTP9G2_GnZkFOTw 以太坊 2.0 的设计抉择

就当前架构下的以太坊网络而言,如果要其在很短时间内处理过多数据,笔记本电脑和个人服务器等消费级硬件就无法与网络保持同步,只有大型数据中心才能在这个网络中充当节点之用。这就会极大地降低以太坊的去中心化程度,因为数据中心节点很容易就能形成垄断,进而控制整个网络,或是对网络进行审查。实际上,一些区块链网络(如 EOS)现在就面临着这样的问题。

有没有可能创建一条区块链,让每个节点都只需处理部分,而无需处理全部交易呢?这样一来,每个节点都只需处理网络中很少一部分交易,从而降低通信成本。那就是以太坊 2.0 。

以太坊 2.0 是一个完全不同的项目,在区块链的架构上采用了全新的思路。以太坊 2.0 的目标是提高以太坊的可扩展性、安全性和可编程性。不同于以太坊 1.0 只能达到 15 TPS 的吞吐量,以太坊 2.0 每秒可处理上千至上万笔交易(甚至更多),同时不用降低其去中心化程度。实际上,以太坊 2.0 想引入一种经济安全性更强的共识机制,叫作权益证明(PoS),而不是沿用比特币和以太坊 1.0 所用的工作量证明(PoW)。

在(以太坊 2.0 等)PoS 区块链中,验证者通过锁定以太币来为网络提供安全性,从而铸造新的以太币,并处理交易。那么实际上,验证者提供的安全性取决于网络本身的价值。如果有验证者作恶(例如,投票通过恶意交易),其锁定的以太币就会被 罚没 。罚没机制会激励验证者遵守协议规则。

以太坊 2.0 通过分片实现了这一点:在以太坊 2.0 中,每一条分片链都有各自专属的出块者和验证者,而且这些分片链彼此之间联系紧密,可以互相通信,因此形成了一个大型分片链网络。因此,以太坊 2.0 的验证者无需处理整个网络内的所有交易,只需处理并验证某条分片链上的交易。通过这一创新技术,使用消费级硬件的人也能够参与以太坊 2.0 网络,为其做出贡献。

在 Cosmos 等平台的模型下,每条链都独善其身,导致整个网络分片化,且容易遭受攻击。因此,若想攻击以太坊 2.0 ,攻击者必须购买并质押价值数十亿美元的以太币(如果以太币的价格上涨,质押金的美元价值也会随之上涨)。

以太坊 2.0 由 9 个不同的工程团队构建。这些团队均由以太坊基金会拨款资助,且获得了以太坊社区的支持。这些团队正在开发 客户端 —— 客户端就类似于 Chrome 和 Firefox 浏览器,只不过不是用来访问网站的,而是用来访问并参与以太坊网络的。客户端多样性是以太坊的核心原则 —— 如果有一个或两个客户端遭到破坏或是存在漏洞,整个网络不会因此而奔溃。每个客户端都各有针对性的用例,但是它们都能完全参与到该网络中。

下面是参与开发以太坊 2.0 的团队名单(排名不分先后):
ChainSafe Systems; 用 JavaScript 语言开发着一个名为 Lodestar 的客户端;
PegaSys:以太坊生态系统中最大的公司 ConsenSys 旗下的一个 50 人团队,其成员分布于世界各地
; 搭建了一个名为 Pantheon 的企业友好型以太坊 1.0 客户端; 有一个主攻以太坊 2.0 规范的研究团队; 开发着一个名为 Artemis 的 Java 客户端,针对企业使用进行了优化。
Harmony; 位于俄罗斯的 4 人团队; 开发着一个 Java 以太坊客户端。
Parity Technologies; 位于柏林的公司,有一个超过 60 人的大型远程办公团队(并非所有人都在从事以太坊 2.0 的相关工作); 来开发名为 Substrate Shasper 的以太坊 2.0 客户端; 也在开发支持互操作性的区块链项目 Polkadot 。该项目被认为是以太坊的劲敌。了开发并维护着第二流行的以太坊 1.0 客户端,同样叫作 Parity 。
Prysmatic Labs;搭建了一个名为 Prysm 的客户端,与以太坊 1.0 的 Geth 类似,都是为了满足主流应用的多样场景。
Sigma Prime;搭建了一个名为 Lighthouse 的客户端,适应主要的使用场景。
Trinity;与以太坊基金会签约的一个 4 人团队国搭建了一个轻客户端,充当更高级实现的原型。
Nethermind; 位于伦敦和波兰的 7 人团队。在 .NET 上搭建了一个 Windows 客户端

Phase 0 可能在 2020 年第二季度末或第三季度初交付。该阶段会引入信标链,将其作为整个以太坊 2.0 网络的 “命令和控制” 中心。信标链会将验证者组织到一起,并将他们分配到不同的分片链上处理交易;一段时间之后,所有验证者都会被重新 “洗牌” 并随机分配到另一条分片链上。
以太坊 2.0 的 Phase 1 预计于 2021 年交付,将推出分片链,但是无法处理或结构化分片链上的数据。数据会以原始形式存在于分片链上(即,“数据 Blob”),主要是为了确保分片链彼此之间以及与信标链之间能够进行良好通信。分片链无法对数据进行任何计算。在 Phase 1 期间,以太坊 1.0 依然会正常运行,以太坊 1.0 与以太坊 2.0 这两条链将并行。

Phase 2 预计于 2021 或 2022 年上线,将实现以太坊 2.0 的真正愿景。届时,分片链就能处理交易,而以太坊 2.0 网络上就能搭建真正的商业应用。在 Phase 2,分片链上将引入智能合约,以及运行这些智能合约的执行环境。

Beacon 链主要完成两个功能:一是执行 PoS 共识,包括维护验证者集合、选择验证者组成委员会、分配验证者对分片块进行提议或证明、对验证者实施奖励和处罚等等。它是验证者参与质押系统并根据所押权益获得收益的渠道,也是整个系统安全性的保障。
第二个功能是实现分片的通信。各分片都会将自己最新状态的哈希存到 Beacon 链的区块上,当 Beacon 链区块完成时,相应的分片区块就被认为是最终确定的,其它分片就可确信它们并与之跨分片交易。

以太坊 2.0 中的新资产叫 BETH,它有两种生成途径,一是由以太坊 1.0 中的 ETH 转化而成,1ETH 生成 1 BETH;二是在以太坊 2.0 中质押 BETH 参与 Staking,作为验证奖励生成。

如果总共质押了 100 万个 BETH (2^20),系统每年最多可增发约 18 万个 BETH,质押最大年回报率为 18.1%;如果质押 1000 万个 BETH,每年最多可增发约 57 万个 BETH,最大年回报率为 5.72%;质押上限为 1.34 亿个 BETH (2^27),此时每年最多可增发约 209 万个 BETH,通胀率维持在 2% 以下,回报率为 1.56%。

以太坊 2.0 是通过 RANDAO + VDF (Verifiable Delay Function,可验证延迟函数)来解决随机性问题的。RANDAO是一种生成随机数的方式,它会内建在 Beacon 链的逻辑中,参与者(此处就是验证者)各自独立提供一个随机数,RANDAO 将这些随机数相加得到一个新的数字,并把该数字作为随机数输出。VDF简化来讲是指在输入一个值后,需要运算很长的一段时间才能得出结果,但这个结果是可以轻易被验证的。VDF 把 RANDAO 产生出来的随机数作为种子去生成新的随机数,而系统使用的是 VDF 提供的新随机数。
RANDAO 的周期是 6.4 分钟,VDF 的周期是 102.4 分钟,因此以太坊 2.0 中会有 16 个 VDF 同时运行,为系统每隔 6.4 分钟生成一个随机数,Beacon 链将以此为基础完成自己的工作。

以太坊 2.0 客户端 Nimbus 的测试网已经上线,它被称作 testnet0,运行了一条能够在节点间同步信息的 Beacon 链,并且节点可以分布在远程的设备上。此版本设置了 400 个验证者节点来维护网络的运行,其中有 50 个验证节点是留给「勇敢的探索者」的,任何人都可以加入。这里我们提供一条小贴士:如果遇到问题,可以在 Status 的 #status-nimbus 频道进行询问。

验证者将其32 个ETH的“小金库”锁入在当前ETH1.0网络上的质押合约中,以便通过运行验证者节点来积极参与ETH2.0网络。存储过程的一部分是,他为其信标链的ETH获得了公钥、冷热私钥。通过浏览器,公钥可用来查看验证者状态和活动。热私钥用于投票和提议,而冷私钥应该离线存储,因为它是金钥匙,它允许将来让你访问你的ETH。一旦你发送了质押金,你必须保证验证者客户端处于运行状态,直到你停止成为验证者。在Phase 0阶段,如果你退出,你将无法重新加入成为验证者,同时也无法转移资金。否则,你会失去ETH。

总的来说,这就是信标链验证者的旅程:
同步信标链客户端;
发送32 ETH质押金到存储合约;
启动验证者客户端;
等待,直到质押存款被确认,且被添加进入验证者激活队列;
运行并确保验证者客户端持续运行;
-对区块进行投票/证明,以使其包含到链上;
-被要求时提议新区块;
获得收益$$$。

Beacon链是PoS系统的“主链”,beacon链的主要职责是:
存储并维护活跃、列队等待以及退出验证者的集合;
处理交联(见上文);
处理逐块一致性,以及最终小工具(finality gadget)

因为很多改进对现有的以太坊区块链来说过于激进,所以这些改进可能会做到以太坊 2.0 链上,然后现有的以太坊链会 “接入” 新系统(变成其中一个分片)。这样的话以太坊 2.0 就不会因为要升级现有的网络而变得过于复杂,而以太坊网络能照常运行,然后收获新系统带来的所有好处。

以太坊 2.0 的最大目标之一就是转换成权益证明(PoS)共识机制,也就是要移除昂贵的挖矿硬件(不管是 ASIC 还是 GPU)的作用,密集的计算和电力消耗,将被取而代之为便宜的普通电脑,仅处理 Eth2 节点的进程如区块传输和同步便足矣。这样保护网络安全的成本就低了很多!不过用户要锁定 32ETH 才能加入。

除了增发率上的缩减,以太坊 2.0 还旨在替换掉现在支付 Gas 费时用到的拍卖市场模式,换成稍有区别的模式,即 “EIP1559”。你不需要知道它的工作原理,只需要知道,在此模式下,用户所支付的手续费的大部分都会被销毁掉。虽然说在该模式下,用户会支付更少的手续费,但因为以太坊 2.0 有很多个分片,所以总的手续费规模会比现在的以太坊更大,因此销毁掉的数量也会更多。

以太坊 2.0(以及日后的 ETH1) 解决这个问题的办法就是无状态性,就是让节点不保存任何状态也能验证所有交易和状态的所有部分。实现了无状态性之后,节点的模式就可以形成一条从有状态到无状态的光谱,每一种模式都有不同的规范。

对于以太坊 2.0 来说,目标是把这两种账户抽象化成一种账户,让网络中的用户账户和合约账户毫无区别。合约当然会继续存在,但那时以太坊网络自己就能充当元交易的中继者了,自己签名发起一笔交易并广播出去将不再是你与网络交互的唯一办法。

执行环境机制使得所有的状态转换规则都可以直接做进协议层(使用 WASM),让交易的处理方式能与系统的其它部分完全独立开来。比如,可以有一个执行环境(EE)是专门用来处理 ZK rollup 和隐蔽交易的,而另有一个 EE 是用来处理 UTXO 模式交易的(就像比特币区块链)。

以太坊 2.0 的共识机制由 PoW 转为 PoS,可以更好地平衡「不可能三角」问题,尽可能在去中心化、可扩展性和安全性这三个要素之间做到兼顾。

以太坊 2.0 通过随机数发生器进行随机选择验证者,被选中的 128 个验证者将组成一个委员会,负责创建新区块并获得相应出块奖励。每 64 个区块后,信标链会重新随机选择验证者。这种定期且随机的选择验证者的方法可以最大限度地防止恶意节点之间进行串谋。
需要指出的是,以太坊 2.0 也分为几个阶段来实施,在以太坊 2.0 的阶段 0 并没有设计分片,从阶段 1 开始会加入分片的设计,信标链需要为每个分片都选择出验证者委员会。

以太坊在地址数量、DApp 数量、日活和市值方面都远超过 EOS 和 TRON,同时,Electric Capital 在 2019 年发布的一份报告显示,以太坊社区的开发者数量是任何其他公链开发者数量的 4 倍以上。正是以太坊在区块链领域的巨大优势和接受程度,让以太坊有底气相信,即使对 Staking 做出严格的限制条件,还是会有大量的用户愿意参与其中。

ETH 的通胀率在逐年降低,2019 年的通胀率为 4.76%。从上文「ETH 年增发量」一表中可知,采用 PoS 共识机制后,ETH 的通胀率会进一步下降。

以太坊 2.0 共识机制的改变对矿工的影响是最大的。虽然以太坊 2.0 不会立即停止 PoW 挖矿,会让两条链并行一段时间,但是后续挖矿难度会逐渐升高,促使矿工放弃挖矿,最终以太坊还是会完全转成 PoS 共识机制。届时,矿工所持有的矿机、建设的矿场和其他设备都不能在以太坊生态中发挥作用。

相比于 PoS 节点服务商的热门项目 EOS、TRON、Tezos 和 Cosmos 等,以太坊的市值要比这些项目市值的总和还要大,以太坊 2.0 会直接成为市值最高的 PoS 项目,并且,后续参与以太坊 Staking 的用户也会非常多。因此,以太坊 2.0 对于所有的 PoS 节点服务商都是一个不能错过的机会。

在我们的eth2公共测试网上,我们已经有超过450,000个插槽,这是有史以来不间断运行的最长链。在恐慌中,我们有超过51,000位验证者,他们活跃地创建区块、投票、被分配、被消减、加入、退出......。
有一个正在实施分片的新兴团队,称为Prysmatic Labs

从以太坊分布式账本的角度来看就是:分片前只有主链这一个账本,每秒大约能处理12~45笔交易,当交易量大于这个数据时就需要排队,也就是网络会拥堵;分片就是把一个账本变成64个账本,让它们同时来处理交易,相当于7-11开了64个收银台来收银。

信标链的主要工作之一就是为分片链分配验证者,该工作最需要关注的是随机性的实现。首先在于随机性的重要程度,如果不能随机分配验证者,就无法保证账本的安全;其次在于随机性的难度,在区块链上实现随机是一件异常困难的事,可以认为到目前为此还没有真正称得上是工程实现了的经受了验证的随机算法。

以太坊的方案是使用RANDAO+VDF提供随机数,以实现随机性。把RANDAO拆解成RAN(random)和DAO就很易理解,它是指一群人中的每个人都独自提出一个随机数,再把所有人的随机数合在一起生成最后被使用的那个随机数。因为任何人都难以知道其他人提供的数字,也就难以预知合起来的最终数字。

以太坊引入了VDF(可验证延迟函数),它的作用很简单,就是让最后一个提供随机数的人无法在自己提供数字之前算出之前所有人的随机数之和,因而也就无法操纵随机数。

以太坊引入了中继者(状态提供者)这个角色,由他们负责存储不同分片的账户状态,且可以只为某一分片服务。中继者的工作易于理解,但怎么为他们的服务付费、如何保证他们的诚实……这些相关机制的设计是需要解决的全新问题,也是社区成员应该参与讨论的治理问题。

「中继者」,它存储了该分片的全部账户状态,只要用户提起需求,它就能够帮助用户向验证者提供交易的见证数据。

异步方式不会被连续状态改变这种情况困扰,因为它的做法就是「等」,等你的状态确定了,我再进行下一步;异步方式自己的问题是原子性故障。交易本该具有原子性,要么执行,要么不执行,但在异步方式下,有可能出现交易的一部分确定了,但另一部分被抛弃了。异步方式的另一个问题是时间开销和通讯、存储开销,也就是完成一笔跨分片交易所需要等待的时间以及占用的资源。

从目前的一些分片设计方案看,同步模型更倾向于分片与分片自己沟通,异步模型更倾向于分片与分片互不往来,通过某个第三者沟通;前者面临通讯量的问题,后者面临多种开销的平衡问题。跨分片交易的设计与实现尚在进行之中,暂不能确定以太坊2.0最终采用哪种架构。

以太坊在分片之后,从物理角度来看有64个账本,但从抽象角度来看只有一个账本:可以把账本想象成一棵大树,树的每一片叶子存储着一个账户状态数据,64个账本就是64棵树,再把这些树的树根给到信标链,就会形成一棵新的大树,64个账本也就合成了一个账本(这只是一种近似的比喻)。

以太坊2.0会在Phase 2引入智能合约,这代表着要到Phase 2才实现智能合约的跨分片,而只有迈过这一步,才可以真正宣告以太坊进入到2.0时代。

https://mp.weixin.qq.com/s/1lv7q7qrtQDHvt--Sdh2Yw 人人都能读懂的「以太坊2.0分片设计」

在ETH2.0网络之前的ETH代币,可以称为ETH1,而ETH2.0之后的代币,可以称为ETH2。当然从长期来看,最后只有一种资产,不管是ETH1还是ETH2最终都会在ETH2.0网络上运行。

ETH1代币来自于当前以太坊PoW链,而ETH2代币在ETH2.0网络上线后通过PoS机制生成。当ETH2代币产生后,对于普通用户来说,可以选择保留ETH1代币,也可以选择将ETH1转换为 ETH2代币。一般来说,交易所或钱包会帮助用户完成这个转换。