以太坊基金会的TimBeiko在11月做了一次主题为《理解转换到权益证明的过程》的演讲。在这次的分享里,他回顾并整理了以太坊主网在2021年里进行的四次硬分叉,分别概述进行了哪些方面的改进;梳理了以太坊2.0路线图的演变过程,解释了为什么目前以rollup为中心以及采用可执行信标链的架构;详细剖析了合并后的以太坊架构以及过渡的发生过程;最后回顾了2021年客户端团队探索合并的实现和进行测试的历程,并交代了当前的进度以及未来的实现计划。
这个演讲非常适合作为以太坊主网在过去一年的总结,ECN特此译制了这个视频的演讲部分,并附上相关的文章资源作为补充和索引,方便读者重温与整理。
2021年以太坊的四次硬分叉
柏林升级(四月)
纳入的EIP:
EIP-2565:模幂运算Gas开销(ModExpGasCost)
对之前引入模幂运算预编译模块的EIP-198(大数模幂运算)进行重新重定价,该模块使我们能引入许多需要模幂运算的密码学算法,比如RSA签名验证。EIP-2565提议降低了该模块ModExp(0x00..05)的gas开销,使其与执行其他操作的开销水平相仿。
EIP-2718:类型化的交易信封(TypedTransactionEnvelop)
这份提案引入一种新的交易类型,它是一种交易信封,可以更易于支持多种交易类型。以太坊一开始上主网时只有一种交易类型,带有字段“To"(指定交易发送的目的地)和“Data"(在交易中包含任意数据),这使得以太坊客户端必须步调一致,确保在完全相同的时间做完全相同的变更。后来,随着交易类型发生变化,在伪龙(SpuriousDragon)硬分叉时纳入了EIP-155(重放攻击的简单防护),允许客户端对字段有不同的解读。EIP-2718无法解决由?EIP-155引入的复杂性,但可以防止未来再引入更多的复杂性,使得加入新的交易类型变得更简单,例如EIP-1559类型的交易。
EIP-2929:提高状态访问操作码的Gas开销(Gascostincreasesforstateaccessopcodes)
这份EIP提高了一笔交易在首次调用SLOAD,CALL,BALANCE,EXT和SELFEDESTRUCT时的gas开销。但值得注意的是,对每个地址或存储槽,这样的高开销仅发生在第一次触发,随后的多次调用每次仅消耗100gas。提高这些gas开销一方面可以化解以太坊协议上仍保有的最大DoS攻击向量的影响,另一方面是为以后实现无状态以太坊限制见证数据的大小。
EIP-2930:可选的访问列表(Optionalaccesslists)
这份提案的目的是修正EIP-2929对现有合约带来的破坏,并缓解gas开销增大带来的问题。此提案新增一个交易类型,它包含一个交易计划会访问的访问列表(内容是地址和存储项键)。通过指定一个访问列表,客户端可以更容易处理交易,而gas消耗量也因此可以安全地降低。
相关阅读:
《柏林硬分叉后的gas成本》
《以太坊柏林升级公告》
伦敦升级(八月)
纳入的EIP:
EIP-1559:Eth1.0费用市场变更(FeemarketchangeforETH1.0chain)
EIP-1559是以太坊史上最令期待的变更之一,也是伦敦升级里带来最大变更的EIP。这份EIP将在网络区块里引入“基本费用(basefee)",它会追踪gas价格,这些价格来自网络将接受的、基于对区块空间需求的交易。这意味着钱包和用户将可以更容易预测他们交易的价格。另外,EIP-1559新增了一种交易类型,用户可以指定他们愿意支付的最高限额,当他们把这个最高限额费用发送给矿工时,会获得最高限额费用减去基本费用与矿工小费之和的差值退款。最后,这份EIP还将导致部分交易费被烧毁,这一点被社区的大部分人认为是以太坊网络经济上的一个重要改善举措。
EIP-3198:BASEFEE操作码(BASEFEEopcode)
这份EIP是与EIP-1559搭配的。它只是简单添加了一个BASEFEE操作码,它返回的是执行交易所在的区块的基本费用。这将使得智能合约可以在链上访问这个值,这有助于提交欺诈证明和创建去信任的gas价格衍生品。
EIP-3529:减少gas返还(Reductioninrefunds)
在伦敦引入的另一个重大变更是取消了操作码SELFDESTRUCT的gas返还和减少了操作码SSTORE的gas返还。虽然设立返还的初衷是希望激励开发者在可能的情况下清除状态,然而现实是,这导致了GasToken的出现,反而增加了状态大小。利用这些返还的gas,GasToken可以在gas价格很低的时候填满状态,然后在gas价格上升的时候获得执行这些交易的返还。此外,gas返还还会导致区块执行时间的变化。EIP-3529把"执行gas返还"从50%下调到最多20%。这一变更将有助于抵消由EIP-1559引入的额外区块大小变化,因为EIP-1559允许区块使用的gas是现在gaslimit的两倍。
EIP-3541:拒绝以0xEF字节开头的新地址(Rejectnewcontractsstartingwiththe0xEFbyte)
这份EIP将使得伦敦升级后,以0xEF字节开头的新合约就无法部署,它们会被保留下来以后作为识别符合EIP-3540语义的方式。EIP-3540提出的EVM对象格式(EVMObjectFormat,EOF)是一种可扩展和版本化的EVM字节码容器格式,会在部署时进行一次性验证。因此,EIP-3541是为以后更广泛的EVM改良奠定基础。
EIP-3554:难度炸弹延迟至2021年12月1日(DifficultyBombDelaytoDecember1st2021)
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升级的影响》
《Finalizedno.24》
《Altair升级讲解(第30期以太七日谈)》
各期的《共识层进展更新》
ArrowGlacier升级(十二月)
ArrowGlacier是另一个类似于MuirGlacier的网络升级。它将只包括一份EIP——把难度炸弹推迟到明年夏天,以防区块链冻结,即“冰河时代(iceage)"。
以太坊2.0路线图演变过程
在2018年台北的一次研讨会上,以太坊的核心开发者做出了一个分三个阶段的以太坊2.0路线图,每个阶段交付的内容是:
阶段0将带来信标链
在阶段1,会加入数据分片
在阶段2,在每个分片加入虚拟机,以在系统里实现计算。
到了2020年末,在信标链快可以启动之前,尽管阶段1的工作进展顺利,但将在阶段1引入的分片上实现计算功能的阶段2仍然有很多未解决的问题。同时,rollup(即二层的扩容方案)方面正发生非常快速的进展。多个团队公布要上测试网,且取得令人鼓舞的早期成果。大约在这个时候,Vitalik在EthereumMagicians论坛上发表了长文,论述我们应该把短期和中期的扩容工作集中在rollup上。它们不仅会在阶段2完成前上主网,还会是阶段1的最大受益者。
同年11月,MikhailKalinin发表的《可执行信标链(ExecutableBeaconChain)》,提出了目前的合并架构,带出了几点洞见:
信标链已经启动了,现在可以作为共识引擎来使用;
Rollup是扩展计算的最佳短期解决方案;
当前的Eth1客户端是作为合并后执行层的最佳基础;
搬到权益证明可以通过对当前运行的应用影响最小的方式实现
在文章里,Mikhail提议直接把权益证明作为客户端使用的新共识算法。
合并后的架构与合并过程
概括来说,合并后,客户端将从根据PoW链转为根据PoS链来决定以太坊的最新有效区块。此外,客户端大多数的功能,以及更重要的EVM、它的状态,和它是如何执行交易的,都保持不变。现在的Eth1和Eth2客户端分别变成以太坊的执行层和共识层(或叫做引擎)。这意味着Eth1或信标链客户端的节点运行者将需要运行堆栈的“另一半”,以拥有一个完整的验证节点。
在合并的过程中,信标节点将监测当前的PoW链,当有区块的TotalDifficulty触达设定的TERMINAL_TOTAL_DIFFICULTY(终结总难度)时,该区块就成为最后的PoW区块,随后的区块都开始由信标链上的验证者构建和证明。当这个区块在信标链上被最终敲定时,合并就完成了。
实现合并的历程与计划
实现合并的三次标志性事件为:四月进行的Rayonism黑客松、十月进行的Amphora工作坊,以及十一月开启的Kintsugi计划。
为了验证可执行信标链架构的可行性,在长达一个月的Rayonism黑客松里,客户端团队进行了原型设计,搭建了测试网Nocturne,证明了可执行信标链是一个可行的架构。
到了十月,在Amphora工作坊活动中,客户端团队再次聚集在一起解决规范上悬而未决的问题。活动最后,客户端团队搭建了一个开发测试网,它跑完了所有客户端组合的转换过程,并对合并后的区块做了最后敲定。
Amphora活动后,经历了四个短暂的开发测试网,开发者推出了Kintsugi测试网计划。在十一月到十二月中旬这段期间,每周开发者会上线一个新的开发测试网,并基于上一个进行改进。在圣诞假期期间,已经上线了一个长期的公共测试网,并鼓励大家参与测试。
目前实现工作已经完成了80%~90%,ArrowGlacier把难度炸弹推迟到明年六月,也就是说明年六月前更多的是测试工作。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。