织梦CMS - 轻松建站从此开始!

我的网站

当前位置: 主页 > 区块链

解析「上海升级」技术细节及潜在影响:为什么说它很重要?(4)

时间:2022-12-16 16:26来源:未知 作者:admin 点击:
William Morris 在提案中提出现阶段在平台上的每笔新交易都必须与 COINBASE 软件进行多次交互,由于软件需要「预热」,第一次 gas 成本会更高,随着交互次数

  William Morris 在提案中提出现阶段在平台上的每笔新交易都必须与 COINBASE 软件进行多次交互,由于软件需要「预热」,第一次 gas 成本会更高,随着交互次数的增加,gas 费用会逐渐降低。Williams Morriss 在 EIP-3651 中提出可以将 COINBASE 软件从一开始就保持「温暖」的状态(预先加载),并在 accessed_addresses 中包含 COINBASE (0x41) 返回的地址,从而改变矿工插入的首笔交易的 gas 费用,并以此鼓励 ERC20 代币的支付方式。此提案的好处在于 EIP -3651 推出后矿工打包的交易可以用于更多的用途,gas 费用成本会降低。同时在 EIP-3651 推出前更倾向于使用 ETH 支付,而推出后将更鼓励使用 ERC 20 的支付方式。上海升级中通过的另一项提案 EIP-3855 也是一个用于降低无意义的 gas 消耗的提案,两项提案的实施都将很大程度上降低以太坊 gas 费用的成本。

  3.EIP-3670: EOF - Code Validation

  EOF 优化

  配合 EIP-3540 合约创建时引入代码验证。拒绝未定义指令的合约。这样在合约创建时,就可引入代码验证。拒绝包含截断的 PUSH-数据或未定义指令的合约。

  4.EIP-3855:新增 PUSH0 指令

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

  对于 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。

  5.EIP-3860: Limit and meter initcode

  提高智能合约系统上限以及降低 gas

  通过引入 initcode 的最大大小限制 (MAX_INITCODE_SIZE = 2 * MAX_CODE_SIZE = 49152),扩展了 EIP-170。即将 initcode 的最大大小限制从 24576 提升为 49152,即翻倍。同时为每 32 字节的 initcode chunk 引入 2 个 gas 费用,以表示 jumpdest-analysis 的成本。

  目的:在合约创建过程中,客户端必须在执行 initcode 之前对初始化代码执行 jumpdest-analysis。所执行的工作随 initcode 的大小线性扩展。基于 EIP170 是限制了 initcode 大小为 24576,而如今则是将 initcode 的最大大小限制提升为 49152。原先的临时解决方案都是分多个合约部署,然后互相相互调用,但显然跨合约引用是个高 gas 成本的事情。显然,更大的代码容量,就意味合约大小可以扩展一倍,合约开发者可以部署更丰富的功能。简言之,EIP-3860 目的是支持更大型的 Dapp。 (责任编辑:admin)

织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容