观点 | 以太坊 2.0 得自以太坊 1.0 升级的灵感

关键词:区块链 13795 2020-03-26

对比以太坊 1.0,以太坊 2.0 最显著的变化就是权益证明共识和分片架构,但实际上,还有很多方面的创新,启发自改进以太坊的过程。

  自比特币和以太坊创生以来,我们看到的事情  

比特币区块链已经运行了 11 年了,其创生启发了无数有志之士学习乃至研究区块链的设计和密码经济学,以发现还有哪些可以改进的地方。

从 PoW 上,我们已经知道,对于密码学货币来说协议的安全性永远是最重要的。用昂贵的硬件来激励人们更深入地与链绑定(have more skin in the game),效果出奇地好。虽然仍不免有钻空子的空间(即所谓的 “自私挖矿”),在保护比特币的网络安全上,PoW 的表现已是超凡绝伦。

以太坊区块链则是在 2015 年启动的,它的诞生标志着 “通用型” 区块链的出现:每个人都能在网络上建立可以与 ETH 和其它 token 互动的应用了。这些应用为去中心化金融打开了大门,如今,人们为去中心化金融操作而存入的质押品价值已超过 10 亿美元。我有另一篇文章讲述了 DeFi(去中心化金融)如何一步步成长为以太坊上真实可用服务的过程。

  限制 Eth1.X 拓展吞吐量的因素  

现在以太坊已经野蛮生长 5 年了,其所经历的现象级成长也为整个行业指明了瓶颈在哪、能够改进的地方又在哪。

在 2017 年,以太坊的发展陷入困境的时候,多个 “以太坊终结者” 起来号称要 “打败” 以太坊。但这些 “终结者” 主要是牺牲安全性来换取更高的吞吐量(TPS,每秒交易处理量),还在完全误导性地(或有意混淆地)宣传说交易不需要支付手续费。实际上,没有一种是以太坊所面临问题的“解决方案”。

要想真正升级以太坊,所有人都必须跳脱出现有的系统、重新开始。我们可以取以太坊之精华、弃其许多糟粕。

注意:在下文中,我用 “状态” 来指称以太坊区块链上保存上的全局永久数据,例如账户信息、交易数据和智能合约状态(比如 token 余额)。

  以太坊 2.0  

以太坊 2.0 是密码货币领域迄今为止最大的开源项目,旨在开发出一个能实现以太坊初始目标乃至更高远追求的新系统。你可能听过 Casper(一种权益证明下的共识算法 )和分片,但以太坊 2.0 的目标还不止于此。

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

本文想谈谈人们不甚了解的以太坊 2.0 变更,以及这些变更是如何从帮助以太坊朝向去中心化美丽世界的过程中取得灵感的。

  货币政策(安全成本)  

密码学货币的货币政策不容小视。因为密码学货币要用增发的货币(以区块奖励的形式)吸引矿工和算力,在保证安全性的前提下,增发量越少越好。在市值排名前 20 的币种,我们看到比特币的区块链是最安全的,同时其货币增发率也是最低的。现在的比特币年增发率为 3.8%,比起 ETH 的约 4.5% 低了不少(虽然如果以太坊照抄比特币的减半政策,这个比率反而会更高)。

虽然很多以太坊的囤币党都觉得,以太坊区块链为安全付出的费用太高了;但是,如果这就降低增发率,可能会导致挖矿算力和安全性的大跌,因为矿工赚不到那么多钱了。因此,PoW 下的增发率是难以降低的,因为降低了会对链的安全性有意料之外的副作用。比特币没有这个问题(很大程度上)是因为其挖矿奖励的变化在长期中基本上是可以预测的。

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

降低了整体的安全成本,增发率就能降低到 1% 一下,具体来说还取决于有多少用户参与网络成为验证者。如此一来,增发率就能随其到底要为安全性支付多少费用而伸缩。

- 增发数量(奖励规模)随实际需要为安全支付的费用而伸缩 -

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

一方面是很低的增发率,另一方面是销毁部分手续费,以太坊 2.0 的净增发率可能为负,也就是烧掉的数量会比增发的数量还多!然后 ETH 就会变得更为稀缺,让攻击 PoS 系统的成本更为高昂。

共识算法(比如 PoW 和 PoS)(译者注:原文如此,consensus algorithm)的目标是保证区块链的安全性和去中心化,保护网络的激励机制才是真正让密码学货币活起来而不仅是账本数字的因素。激励机制保证了 矿工/质押者 会给网络提供安全性。而以太坊 2.0 在安全费用上所追求的是 最低必要增发率。最低必要增发率意味着链持续增发为保证安全性而必须发放的最低数量。低增发率及销毁策略会逐渐让攻击者的攻击成本变高(因为 ETH 日益稀缺),从而降低大规模攻击的概率。

  无状态性  

你可能听说过 “状态爆炸” 这个词,人们在论及以太坊及其状态数据规模的时候常常提到。这个问题的实质是,一次性支付 Gas 费就可以让你的数据永远留在以太坊区块链上,这就导致了状态数据不受限制地日渐增长,而很多数据可能再也没有被使用过。状态数据在存储规模上的 “爆炸”,意味着以太坊的节点的存储空间和硬件条件必须随着网络的持续存活而线性增加。长期来看,这限制了能够运行以太坊节点的人群规模,而状态数据增长问题在每次区块 Gas 上限提高时都会变得更为严重。

那么,以太坊 2.0(以及日后的 ETH1) 解决这个问题的办法就是无状态性,就是让节点不保存任何状态也能验证所有交易和状态的所有部分。实现了无状态性之后,节点的模式就可以形成一条从有状态到无状态的光谱,每一种模式都有不同的规范。如果你硬件比较好,运行无状态节点绰绰有余,但还是不能运行完全保存状态的节点,那么你可以取其折中,运行一个 “准-带状态” 节点。想了解更多,请看 ETHDenver 活动上的这个演讲

 

- 无状态范式下的网络拓扑 -

这对于分片来说至关重要!因为每个分片都有自己独有的状态,而 Eth2 验证者需要在他们所验证的分片上依据状态来执行状态变更(处理交易)。无状态式的协议使得验证者无需下载一个分片的完整状态,只需下载表示数据的二进制默克尔树即可(这比状态数据小得多了)。

分片越多,状态数据的增长越是没有止境,虽然到时候肯定会有比如交易所或者区块浏览器这样的服务,有动力保存所有的分片 状态数据/历史数据,并不计成本地准确交付。然后就有可能出现 “状态提供者” 软件,为验证者提供一笔交易所要改变的状态部分,让后者能够执行状态变更。状态提供者可以彻底地消除验证过程中的硬盘读写需要和密集存储需要。这不仅为新的、针对状态的激励机制开启了可能性,还能极大地帮助验证者,因为后者不再需要保存完整的分片状态了。当然,他们仍可以验证从状态中继者处收到的状态的正确性,因为可以拿这些数据与已完成同步的状态树相比较。

  账户抽象  

在当前的以太坊协议中,有两种类型的账户,外部控制型账户(即人使用私钥来控制的账户)和智能合约型账户。只有外部控制型账户能发起交易,而且只有控制私钥的用户自己发起的交易才能改变自己账户的状态。现在虽然有了元交易,但它需要依赖一个中继者网络(比如 GSN)来支付 Gas 费。

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

到时候,你可以让你的账户像一个智能合约,比如别人发给你 ETH,你的主账户会自动将其转发到你的冷钱包里,又或者,把所有发给你的 ETH 都自动卖成 DAI 来持有。

能把功能模块直接做到账户里面,会产生很多很多有意思的 dApp 设计和功能!用户管理账户的操作会变得五花八门,而不是像现在的以太坊协议一样,允许的操作都是被定死的

账户抽象化的一个有趣可能性就是合约能够自己支付 Gas 费,能自己发起交易。但这是个很复杂的问题,迄今仍在开发中,不过一旦开发成功,带来的可能性就极为丰茂了。

  执行环境(Execution Environments)  

做以太坊应用开发的开发者,首选的编程语言都是 Solidity 或者 Vyper,它们都各有奇怪的特性,但在实用性上,其开发生态还是很好的。在当前的用法中,用这些语言写成的代码都要编译成更通用、更底层的操作,来方便以太坊虚拟机(EVM)解读。如果你想更深入地理解 EVM,可以阅读这篇文章。虽然也不是太必要啦。

EVM 所用的操作码(OPCODE)让以太坊节点能产生出同样的计算结果,而不论运行节点的计算机是什么样的(这也是 “虚拟机” 的部分所在)。它也让定制化的复杂操作比如验证签名和获取账户余额变得更简单,只需一行代码就搞定。如果没有 EVM 准确地读取出状态并执行状态变更,各种功能都是不可能实现的。

虽然 EVM 作为整个智能合约生态的基础表现得很好(哪怕在其它链上也实如此),如果以太坊上的应用可以使用任意的运行时语言(run-time),那会更好。链不应该把自己的状态转换规则(比如 EVM)强加在他人身上,执行本身应该要更加开放才对。这就是为什么大家想出了 “执行环境”。

执行环境机制使得所有的状态转换规则都可以直接做进协议层(使用 WASM),让交易的处理方式能与系统的其它部分完全独立开来。比如,可以有一个执行环境(EE)是专门用来处理 ZK rollup 和隐蔽交易的,而另有一个 EE 是用来处理 UTXO 模式交易的(就像比特币区块链)。甚至可以有一个 token 专用型 EE,专门用来承载所有 token,而不用为每一种 token 都上传相同的代码。当然,现有的 EVM 也会被替换成一个叫做 eWASM 的 EE,以保证对现有生态系统的支持。

Eth1 上的每个 dApp 都必须在设计式充分考虑 EVM 的行为,因此以太坊状态转换函数(即 EVM)的局限性就成了整个生态系统的瓶颈。有了 EE 机制,这个瓶颈就不复存在,利用对协议的开放式依赖的全新 dApp 也能出现。如果你想了解更多,EthHub 这里有一个跟 Will Villanueva 一起做的绝佳播客。这里还有一篇叙述最新进展的文章

 

原文链接: https://medium.com/coinmonks/what-eth2-has-learned-from-eth1-d1f7e0830a98 作者: Ivan Martinez 翻译: 阿剑

>快讯
3月28日 星期四
相关资讯