以太坊主网2021年终回顾:四次硬分叉和Eth2.0路线图的演变

ECN以太坊中国

    原标题:《以太坊主网2021年终回顾》
    以太坊基金会的 Tim Beiko 在 11 月做了一次主题为《理解转换到权益证明的过程》的演讲。在这次的分享里,他回顾并整理了以太坊主网在 2021 年里进行的四次硬分叉,分别概述进行了哪些方面的改进;梳理了以太坊2.0路线图的演变过程,解释了为什么目前以 rollup 为中心以及采用可执行信标链的架构;详细剖析了合并后的以太坊架构以及过渡的发生过程;最后回顾了2021年客户端团队探索合并的实现和进行测试的历程,并交代了当前的进度以及未来的实现计划。
    这个演讲非常适合作为以太坊主网在过去一年的总结,ECN 特此译制了这个视频的演讲部分,并附上相关的文章资源作为补充和索引,方便读者重温与整理。
    
    2021 年以太坊的四次硬分叉
    柏林升级 (四月)
    纳入的 EIP:
    ? EIP-2565:模幂运算 Gas 开销 (ModExp Gas Cost)
    对之前引入模幂运算预编译模块的 EIP-198 (大数模幂运算) 进行重新重定价,该模块使我们能引入许多需要模幂运算的密码学算法,比如 RSA 签名验证。EIP - 2565 提议降低了该模块 ModExp (0x00..05) 的 gas 开销,使其与执行其他操作的开销水平相仿。
    ? EIP-2718:类型化的交易信封 (Typed Transaction Envelop)
    这份提案引入一种新的交易类型,它是一种交易信封,可以更易于支持多种交易类型。以太坊一开始上主网时只有一种交易类型,带有字段“To"(指定交易发送的目的地) 和“Data"(在交易中包含任意数据),这使得以太坊客户端必须步调一致,确保在完全相同的时间做完全相同的变更。后来,随着交易类型发生变化,在伪龙 (Spurious Dragon) 硬分叉时纳入了 EIP-155 (重放攻击的简单防护),允许客户端对字段有不同的解读。EIP-2718 无法解决由 ?EIP-155 引入的复杂性,但可以防止未来再引入更多的复杂性,使得加入新的交易类型变得更简单,例如 EIP-1559 类型的交易。
    ? EIP-2929:提高状态访问操作码的 Gas 开销 (Gas cost increases for state access opcodes)
    这份 EIP 提高了一笔交易在首次调用 SLOAD, CALL, BALANCE, EXT 和 SELFEDESTRUCT 时的 gas 开销。但值得注意的是,对每个地址或存储槽,这样的高开销仅发生在第一次触发,随后的多次调用每次仅消耗 100 gas。提高这些 gas 开销一方面可以化解以太坊协议上仍保有的最大 DoS 攻击向量的影响,另一方面是为以后实现无状态以太坊限制见证数据的大小。
    ? EIP-2930:可选的访问列表 (Optional access lists)
    这份提案的目的是修正 EIP-2929 对现有合约带来的破坏,并缓解 gas 开销增大带来的问题。此提案新增一个交易类型,它包含一个交易计划会访问的访问列表 (内容是地址和存储项键)。通过指定一个访问列表,客户端可以更容易处理交易,而 gas 消耗量也因此可以安全地降低。
    相关阅读:
    《柏林硬分叉后的 gas 成本》
    《以太坊柏林升级公告》
    伦敦升级 (八月)
    纳入的 EIP:
    ? EIP-1559: Eth1.0 费用市场变更 (Fee market change for ETH1.0 chain)
    EIP-1559 是以太坊史上最令期待的变更之一,也是伦敦升级里带来最大变更的EIP。这份 EIP 将在网络区块里引入“基本费用 (basefee)",它会追踪 gas 价格,这些价格来自网络将接受的、基于对区块空间需求的交易。这意味着钱包和用户将可以更容易预测他们交易的价格。另外,EIP-1559 新增了一种交易类型,用户可以指定他们愿意支付的最高限额,当他们把这个最高限额费用发送给矿工时,会获得最高限额费用减去基本费用与矿工小费之和的差值退款。最后,这份 EIP 还将导致部分交易费被烧毁,这一点被社区的大部分人认为是以太坊网络经济上的一个重要改善举措。
    ? EIP-3198: BASEFEE 操作码 (BASEFEE opcode)
    这份 EIP 是与 EIP-1559 搭配的。它只是简单添加了一个 BASEFEE 操作码,它返回的是执行交易所在的区块的基本费用。这将使得智能合约可以在链上访问这个值,这有助于提交欺诈证明和创建去信任的 gas 价格衍生品。
    ? EIP-3529: 减少 gas 返还 (Reduction in refunds)
    在伦敦引入的另一个重大变更是取消了操作码SELFDESTRUCT 的 gas 返还和减少了操作码 SSTORE 的 gas 返还。虽然设立返还的初衷是希望激励开发者在可能的情况下清除状态,然而现实是,这导致了Gas Token的出现,反而增加了状态大小。利用这些返还的 gas,Gas Token 可以在 gas 价格很低的时候填满状态,然后在 gas 价格上升的时候获得执行这些交易的返还。此外,gas 返还还会导致区块执行时间的变化。EIP-3529 把"执行 gas 返还"从 50% 下调到最多 20%。这一变更将有助于抵消由 EIP-1559 引入的额外区块大小变化,因为 EIP-1559 允许区块使用的 gas 是现在 gas limit 的两倍。
    ? EIP-3541: 拒绝以 0xEF 字节开头的新地址 (Reject new contracts starting with the 0xEF byte)
    这份 EIP 将使得伦敦升级后,以 0xEF 字节开头的新合约就无法部署,它们会被保留下来以后作为识别符合 EIP-3540 语义的方式。EIP-3540 提出的 EVM 对象格式 (EVM Object Format, EOF) 是一种可扩展和版本化的 EVM 字节码容器格式,会在部署时进行一次性验证。因此,EIP-3541 是为以后更广泛的 EVM 改良奠定基础。
    ? EIP-3554: 难度炸弹延迟至2021年12月 1 日 (Difficulty Bomb Delay to December 1st 2021)
    EIP-3554 延迟难度炸弹,也以冰河时代为人所知。难度炸弹或冰河时代是以太坊引入的一种机制,在网络过渡到权益证明时”冻结“挖矿。由于权益证明的过渡还未准备好,我们需要推迟炸弹的”爆炸“时间。这在过去已经进行过三次:在大都会(EIP-649)、君士坦丁堡 (EIP-1234) 和穆尔冰川 (EIP-2384)。
    相关阅读:
    《伦敦升级概览》
    《伦敦主网升级公告及相关代码变更》
    《为什么需要 1559》
    《为什么我认为 EIP-1559 的区块容量变化无须担心》
    《MEV 与 EIP-1559》
    《从 MEV 视角分析 EIP-1559 下的交易打包市场》
    《以太坊伦敦升级完成时 (第 37 期以太七日谈)》
    《EIP-3529:减少 GAS 返还》
    信标链 Altair 升级 (十月)
    Altair 是信标链的一次升级,它新增的功能包括:
    
  • 支持轻客户端的同步委员会
  • 为了减少规范复杂性的激励计算改革
  • 修改证明奖励,以提高激励兼容性
  • 单独核算每个验证者的怠工惩罚
  • 惩罚参数更新为原定的惩罚水平

    相关阅读:
    《Altair 主网升级公告》
    《建模分析 Altair 升级的影响》
    《Finalized no.24》
    《Altair 升级讲解 (第 30 期以太七日谈)》
    各期的《共识层进展更新》
    Arrow Glacier 升级 (十二月)
    Arrow Glacier 是另一个类似于 Muir Glacier 的网络升级。它将只包括一份 EIP——把难度炸弹推迟到明年夏天,以防区块链冻结,即“冰河时代 (ice age)"。
    相关阅读:
    《以太坊难度炸弹历史梳理》
    《Arrow Glacier 升级公告》
    以太坊 2.0 路线图演变过程
    在 2018 年台北的一次研讨会上,以太坊的核心开发者做出了一个分三个阶段的以太坊 2.0 路线图,每个阶段交付的内容是:
    
  • 阶段 0 将带来信标链
  • 在阶段 1,会加入数据分片
  • 在阶段 2,在每个分片加入虚拟机,以在系统里实现计算。

    到了 2020 年末,在信标链快可以启动之前,尽管阶段 1 的工作进展顺利,但将在阶段 1 引入的分片上实现计算功能的阶段 2 仍然有很多未解决的问题。同时,rollup (即二层的扩容方案) 方面正发生非常快速的进展。多个团队公布要上测试网,且取得令人鼓舞的早期成果。大约在这个时候,Vitalik 在 Ethereum Magicians 论坛上发表了长文,论述我们应该把短期和中期的扩容工作集中在 rollup 上。它们不仅会在阶段 2 完成前上主网,还会是阶段 1 的最大受益者。
    同年 11 月,Mikhail Kalinin 发表的《可执行信标链 (Executable Beacon Chain)》,提出了目前的合并架构,带出了几点洞见:
    
  • 信标链已经启动了,现在可以作为共识引擎来使用;
  • Rollup 是扩展计算的最佳短期解决方案;
  • 当前的 Eth1 客户端是作为合并后执行层的最佳基础;
  • 搬到权益证明可以通过对当前运行的应用影响最小的方式实现

    在文章里,Mikhail 提议直接把权益证明作为客户端使用的新共识算法。
    相关阅读:
    《详解以太坊2.0信标链》
    《Vitalik:以 rollup 为中心的以太坊路线图》
    《可执行信标链》
    《以太坊核心开发者会议更新 006》
    《Vitalik:以 rollup 为中心的以太坊最终图景》
    合并后的架构与合并过程
    概括来说,合并后,客户端将从根据 PoW 链转为根据 PoS 链来决定以太坊的最新有效区块。此外,客户端大多数的功能,以及更重要的 EVM、它的状态,和它是如何执行交易的,都保持不变。现在的 Eth1 和 Eth2 客户端分别变成以太坊的执行层和共识层 (或叫做引擎)。这意味着 Eth1 或信标链客户端的节点运行者将需要运行堆栈的“另一半”,以拥有一个完整的验证节点。
    
    
    在合并的过程中,信标节点将监测当前的 PoW 链,当有区块的 Total Difficulty 触达设定的 TERMINAL_TOTAL_DIFFICULTY (终结总难度) 时,该区块就成为最后的 PoW 区块,随后的区块都开始由信标链上的验证者构建和证明。当这个区块在信标链上被最终敲定时,合并就完成了。
    
    相关阅读:
    《以太坊核心开发者会议更新 007》
    《以太坊 The Merge 重点摘要》
    实现合并的历程与计划
    实现合并的三次标志性事件为:四月进行的 Rayonism 黑客松、十月进行的 Amphora 工作坊,以及十一月开启的 Kintsugi 计划。
    为了验证可执行信标链架构的可行性,在长达一个月的 Rayonism 黑客松里,客户端团队进行了原型设计,搭建了测试网 Nocturne,证明了可执行信标链是一个可行的架构。
    到了十月,在 Amphora 工作坊活动中,客户端团队再次聚集在一起解决规范上悬而未决的问题。活动最后,客户端团队搭建了一个开发测试网,它跑完了所有客户端组合的转换过程,并对合并后的区块做了最后敲定。
    Amphora 活动后,经历了四个短暂的开发测试网,开发者推出了 Kintsugi 测试网计划。在十一月到十二月中旬这段期间,每周开发者会上线一个新的开发测试网,并基于上一个进行改进。在圣诞假期期间,已经上线了一个长期的公共测试网,并鼓励大家参与测试。
    目前实现工作已经完成了80%~90%,Arrow Glacier 把难度炸弹推迟到明年六月,也就是说明年六月前更多的是测试工作。
    相关阅读:
    《Amphora: 一个合并的重要里程碑》
    《Kintsugi 合并测试网公告》