盘点以太坊升级的历史故事的主题

2021 年 04 月 Shanghai「上海」升级:

为什么叫“上海升级”?
其实,以前都是V神命名的,可以看出他也是一个中二的男孩纸。路线图结束后,大家为新的命名方式闹开了锅:社区还为此专门投票。有的建议用元素周期表命名,有的建议用魔兽世界命名。。最后讨论结果是用 Devcon 以太坊开发者大会每年举办的城市来命名!Next, Shanghai

即将激活的4个EIP:

EIP-3651:更温暖的 COINBASE

EIP-3651: Warm COINBASE
他是什么?
这标题的翻译确实很让人迷惑,这里的COINBASE并不是交易所的那家公司,而是来自比特币的概念,即区块中的第一笔交易是笔特殊交易,称为创币交易或者coinbase交易,这种交易早期设计用于矿工打包收集挖矿的gas小费收入。

温暖的和寒冷的,其实指的是此执行此交易时候是否有预先加载,影响矿工打包coinbase交易的gas费

  • 如果无预先加载,是寒冷的,则gas费更高
  • 如果有预先加载,是温暖的,则gas费更低

有什么用?
现在矿工打包的交易可能可以用作更多用途,比如ERC-4337中用于收集用户签名后,批量实现交易,其次也可以用同类原理来实现多种代币结合逻辑的元交易支付等。

  • 在EIP-3651之前,更激励用ETH的支付方式
  • 在EIP-3651之后,更激励用ERC20的支付方式

总之,是一个影响激励的交易类型的提案

EIP-3855:新增PUSH0 指令

他是什么?
对于EVM即以太坊虚拟机(执行合约代码的系统)中,设计有多种指令,但是之前缺少设计了push0即针对0这个数值的压入堆栈的操作指令,

而此EIP则新增了PUSH0( 0x5f) 指令,它将常量值 0 压入堆栈,该指令的需要 2 gas

有什么用?
原先没有push0时导致的是,有一些依赖于0做偏移量的操作,比如远程call调用与返回,则有很多参数是0,原先要操作0,只能使用指令PUSH1 0(即压入一个数字,数字为0),这个操作要消耗3个gas,其次push1 和0各占一个初始化代码的字节存储,导致的是部署此合约的成本也高了2*200gas

该EIP还统计了因此的gas损失:在现有账户户中,有 340,557,331 字节浪费在PUSH1 00指令上,意味着部署损耗达68,111,466,200 gas

总之,是一个降低无意义的GAS消耗的提案

EIP-3860:提高初始化的代码量限制

他是什么?
合约部署时候,有个初始化代码的大小,基于EIP170是限制了initcode大小为24576,而如今则是将 initcode 的最大大小限制提升为 49152即翻倍,并为每 32 字节的 initcode 块应用 2 的额外气体成本
有什么用?
显然,更大的代码容量,可以让智能合约系统做更多的事情,目前代码仅24kb的规模导致很难用一个合约去实现系统,原先的临时解决方案都是分多个合约部署,然后互相相互调用,但显然跨合约引用是个高gas成本的事情。

总之,是一个提高智能合约系统上限以及降低gas消耗的提案

EIP-4895:信标链将提款作为操作指令

他是什么?
可以说,这是本次上海升级的核心。从结果上讲,实现的是质押的ETH提款操作,而实现方式是引入了系统级的指令withdrawal基于信标链(共识层)的信息,无条件地直接控制指定地址的ETH余额。
执行提现操作的方法有很多种,本次的提现操作的特点如下

  • 本身是由系统来发起,而不是用某个用户发起,更简洁易于审查
  • 无gas费消耗,系统发起受到共识层提款限额的控制,无需再用gas来做抗dos防护
  • 直接更新执行层的余额,无EVM执行过程,采用最简实现策略。

有什么用?
别忘了,现在还有1400W个,合计价值 235 亿美元的 ETH被质押“困在”以太坊信标链里。

2021 年 08 月 London 「伦敦」升级:

• EIP-1559:将 Gas 费用分为了两部分,一部分每笔交易必须支付的、根据上一区块的基础费和区块资源利用率计算的「基本费率」(Base fee),另一部分则是由用户选择性支付的「优先费率」(Priority fee)。
• EIP-3554:延后难度炸弹到 2021 年 12 月

2021 年 04 月 Berlin 「柏林」升级:

• EIP-2565:降低预编译合约的成本。过去,EIP-198 为求幂运算引入了「预编译模块」,而 EIP-2565 降低了该EIP的 Gas。
• EIP-2718:以 Envelope 形式支持多种交易类型。
• EIP-2930:引入交易的目标地址与列表。更安全地交易,降低 Gas 成本。
• EIP-2028:调用链上数据需在以太坊链上支付Gas。该EIP的一部分内容将Gas成本从68 gas/字节降到16 gas/字节。
• EIP-1344:创建「chain ID」,来防止不同链之间双重攻击。当时没有为特定网络设置「chain ID」的规范,所以在此之前需要「客户端执行者」和「矿工」进行手动处理。

2019 年 12 月 Istanbul 「伊斯坦布尔」升级:

• EIP-1108:降低「椭圆曲线 alt_bn128」的预编译Gas成本,当时椭圆曲线算法预编译成本过高。此EIP使 ZK-SNARKs 这类扩展方案更便宜。
• EIP-2200:提供净Gas变化的结构化定义,启用新合约存储用法,并且减少大多数执行方式过高的gas费用。
• EIP-1234:把 「Difficulty Bomb」(难度炸弹)延后一年,ETH 减产 33%,区块奖励从 3ETH 减少到 2ETH
• EIP-1283:更改「智能合约」网络存储的定价,减少和「智能合约」运行量不匹配的 Gas 消耗

2019 年 2 月 Constantinople 「君士坦丁堡」升级:

• EIP-1052:允许「智能合约」只需通过检查另一个「智能合约」的「哈希值」来验证彼此。在「君士坦丁堡」升级之前,「智能合约」必须提取另一个合约的整个代码才能进行验证,而这样的验证方式需要花费大量时间和精力。

2017 年 10 月 Byzantium 「拜占庭」升级:

• EIP-140:加入 「Revert」 功能,不需消耗所有Gas就能使「智能合约」恢复到原来状态
• EIP-649:把 「Difficulty Bomb」(难度炸弹)延后一年,区块奖励从 5ETH 降到 3ETH

2 Likes