0

浅谈以太坊上海升级的作用以及带来的好处

 1 year ago
source link: https://www.btc798.com/articles/91455.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
藏民3小时前1133

关于以太坊上海升级,我们来简单梳理一下,分别能带来哪些好处。

参考以太坊最新公开消息,和上海升级的相关EIP如下:

  • 确定包含的 EIP:EIP-3651,EIP-3855,EIP-3860,EIP-4895

  • 可能包含的 EIP:EIP-3540,EIP-3670

  • 而和 L2 扩容相关的 EIP-4488,EIP-4844 都不在本次升级范围内

EIP-3651:暖 COINBASE

说到 EIP-3651,得先介绍一下 EIP-2929 一个改动:

当目标不在 accessed_addresses 中,收取 COLD_ACCOUNT_ACCESS_COST(冷账户访问成本)gas,并将地址添加到 accessed_addresses。否则,收取 WARM_STORAGE_READ_COST(暖存储读取成本)gas,暖读取消耗 gas 相对较低。

如今 COINBASE 直接支付正变得越来越受欢迎,但目前访问 COINBASE 的价格较高;这是由于在 EIP -2929 引入的访问列表框架下,COINBASE 是按冷账户访问成本计算 gas 的,在 EIP-3651 后,accessed_addresses 将包括 COINBASE (0x41) 返回的地址。

修改后,COINBASE 在支付 ERC20 代币时会减少 gas 消耗。

EIP - 3855:PUSH0 指令

EIP-3855,引入一条新指令(0x5f),将常量值 0 压入堆栈,黄皮书关于 PUSH 的指令集,目前只有 PUSH1-PUSH32,作用是将 1 字节压入堆栈,到 32 字节压入堆栈

现有指令实现将 0 值压入堆栈需要通过执行 PUSH1 0 ,在 runtime 中需要消耗 3 gas,并且额外需要消耗 200 gas(2 字节的存储成本)

1667889029633701.jpg

有了 PUSH0 指令后,就不需要消耗这额外的 200 gas了。

目前大约有 11% 的 PUSH 操作只是压入 0,因此这个 EIP 执行后可以节省一定量的 gas,也能稍微提高以太坊的现有的 TPS。

EIP-3860:限制和计算初始化代码

目前 initcode 的最大为 MAX_CODE_SIZE: 24576(EIP-170),新的 initcode 的最大为 (MAX_INITCODE_SIZE = 2 * MAX_CODE_SIZE = 49152),这意味合约大小可以扩展一倍,合约开发者可以部署更丰富的功能。(合约代码过大会导致部署不成功,PS:L2 项目也部分已修改,支持更高的合约大小上限)

此外为每 32 字节的 initcode chunk引入 2 个 gas 费用,以表示 jumpdest-analysis 的成本。因为在合约创建期间,客户端必须在执行之前对 initcode 执行 jumpdest 分析。执行工作与 initcode 的大小成线性关系。

这意味着 initcode 每字节将添加成本 0.0625 gas,合约部署 gas 成本微微上涨。

合约部署 gas 费微微上调,但合约大小可以扩展一倍,合约开发者写更丰富的功能代码。

EIP-4895: 信标链提款

主要内容是确定信标链提款至 EVM 的主要流程,部署完成后,以太坊信标链质押提款功能将被激活。

激活以太坊信标链质押提款功能。

EIP-3540:EVM 对象格式 (EOF) v1

此 EIP 涉及改动较大,并非一定包含在上海升级中。

此 EIP 中描述的格式引入了一个简单且可扩展的格式,并引入了验证。 实现了合约代码和数据的分离。

新的 EVM 对象格式为:magic, version, (section_kind, section_size)+, 0, <section contents>

版本控制有利于以后实现引入或弃用新功能(例如引入账号抽象);

合约代码和数据的分离对于 L2 的验证(op)有益,减少 L2 验证器的 gas 成本;

合约代码和数据的分离也更加方便链上数据分析工具的工作。

EIP-3670:EOF —代码验证

此 EIP 并非一定包含在上海升级中,配合 EIP-3540 合约创建时引入代码验证。拒绝未定义指令的合约。

合约创建时,就可引入代码验证

欧易okex交易平台欧易okex交易所官网欧易okex官方下载APP


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK