EIP-3529:减少gas返还

简单总结

移除SELFDESTRUCT的gas返还,减少SSTORE的gas返还到一个较低水平,使得返还的量仍然相当大,但不会像现在高到可以被利用的地步。

原因

最初引入SSTORE和SELFDESTRUCT的gas返还是为了鼓励应用开发者写应用时能践行“良好的状态卫生”,清理不再需要的存储槽与合约。但是,结果证明这项技术带来的效率远低于预期,gas返还还带来多项未预料到的有害后果:

gas返还导致GASToken的出现。GasToken有益于把gas空间从低费用阶段转移到高费用阶段,但它也对网络有坏处,尤其是加剧状态大小膨胀(由于状态槽被有效用作“电池”来积攒gas)和低效地堵塞区块链gas使用。

gas返还加剧区块大小变化。一个区块实际消耗的gas量的理论最大值是接近名义上的gaslimit(因为返还会增加同一区块里后面交易的gas空间,尽管返还的gas最多是该笔交易消耗gas的50%)。这一点不是致命的,但影响还是相当不好,特别是返还可以被用来维持比EIP-1559使用两倍gaslimit更长的峰期。

规范

第160次以太坊ACDE会议:确定纳入EIP-4844、6780、6475、1153:4月29日消息,根据Christine Kim对第160次以太坊执行层核心开发者会议(ACDE)进行的总结,本次会议主要讨论在下次坎昆(Cancun)升级中,需要纳入哪些代码修改。

除了此次升级的主角EIP-4844(降低L2手续费) 外,开发者还同意将以下EIPs纳入升级:

·EIP-6780(修改SELFDESTRUCT操作码的功能,主要是为未来应用Verkle树做准备);

·EIP-6475(为可选值引入新的简单序列化类型,以提供更佳的可读性和紧凑的序列化);

·EIP-1153(引入瞬态存储操作码)。

另外,还有部分EIPs提案尚未被正式接受纳入升级(EIP-6913、6493、4788、2537、5656)以及部分被确定不考虑纳入本次升级(Big EOF和EVMMAX)。

在对围绕坎昆EIPs进行讨论后,下一次会议议程将是关于EIP-4844的进展。

此前消息,以太坊核心开发人员会议中表示,计划对区块链的共识层进行代码修改,为下一次坎昆升级(Cancun-Deneb)做准备,预计将于今年晚些时候进行。

以太坊的Cancun-Deneb升级中预期的最重大变化将是EIP-4844,也称为“ proto-danksharding ”。 EIP-4844旨在通过以太坊节点实现链下数据的临时存储和检索,以满足区块链应用程序的数据和存储需求。如果成功激活,EIP-4844有望降低第2层rollup解决方案(包括Optimism和Arbitrum)的交易成本。[2023/4/30 14:35:10]

参数

Tim Beiko:钱包应针对EIP-1559带来的Gas费用政策改变来改善用户体验:9月18日消息,以太坊核心开发者会议协调人Tim Beiko在推特上表示,MetaMask的UI/UX开发者Jake Lee Haugen在Trenton Van Epps组织的EIP-1559复盘会上称,目前80%的MetaMask用户从未进入过“编辑 Gas”的界面。Tim Beiko表示,目前钱包在用户体验设计上最大的挑战在于从之前针对不同交易速度需求来设置Gas费用转换为现在平时的“支付当前所需费用”,以及网络拥堵时“等待高峰期结束”、“设置全网最高的交易费”一类的需求。而目前很多钱包团队已经意识到了这个问题并正在朝这个方向进行开发。[2021/9/18 23:35:17]

对于存在block.number>=FORK_BLOCK的区块,需要作下列变更。

以太坊开发者计划将EIP-1559迁移到主网,大多数研究问题已解决:ConsenSys高级产品经理Tim Beiko发布第7次EIP-1559实施者电话会议内容。“最后我们开始讨论如何将该EIP迁移到主网。大家一致认为,大多数研究问题现在都已解决(对事务池管理和更新规则分析模块化),因此我们应该制定一个计划并在主网上实现。”他分享的主网就绪清单显示实施所需的大多数理论分析和模拟已经完成。

EIP 1559旨在实现四个设计目标:防止经济抽象化、永久区块补贴、灵活区块设计和算法费用模型的实现。算法费用模型的实施将消除目前的Gas费困境,可能是该方案最值得期待的部分。一旦实施,用户无需手动设置Gas费,即使在网络活动频繁的情况下,兼容EIP-1559的钱包也会自动设置。钱包还将为矿工增加小费,作为其工作的报酬。

但是根据收集ETH社区反馈的报告,几乎所有接受调查的矿工称EIP-1559将对其产生负面影响,如果通过,他们将考虑转到其他链挖矿。矿工的担忧可能是因为随着他们从每笔交易中赚取的费用减少,矿工收入将大幅减少。其他问题包括矿工之间潜在勾结,矿工没有升级客户端支持该EIP,以及如果小矿工被赶出以太坊,挖矿风险会集中化。(AMBCrypto)[2020/12/5 14:06:38]

1.移除SELFDESTRUCT的返还

V神:以太坊EIP-2929提案或将打破部分已有智能合约:为了减小以太坊飙升的交易费,以太坊创始人Vitalik Buterin?于2日发布了以太坊改进提案EIP-2929,他建议将一些合约收费提高三倍,受影响的合约包括更新以太坊状态的合约,以及一些应用程序。但是这个重新定价的提议可能会打破一些已经在以太坊上运行的智能合约,批准这一提议也需要以太坊社区的一致同意,这一过程可能需要数周或数月的时间。(Coindesk)[2020/9/4]

2.用SSTORE_RESET_GAS+ACCESS_LIST_STORAGE_KEY_COST(EIP-2929+EIP-2930合力下的4,800gas)取代SSTORE_CLEARS_SCHEDULE

3.把交易后的最大返还gas量减少到gas_used//NEW_MAX_REFUND_QUOTIENT

原理阐释

EIP-2200引入了返还的三种情况:

1.如果原始值是非零,新值是零,添加SSTORE_CLEARS_SCHEDULE的gas量到返还计算器

2.如果原始值是零,当前值是非零,新值为零,添加SSTORE_SET_GAS-SLOAD_GAS(当前是19,900)的gas量到返还计算器

分析:以太坊竞价升级算法EIP-2593提案是以用户为主导的策略:加密货币研究员hasufl和gakonst联合发布了对EIP-2593 区块空间市场提案的分析,分析称,EIP-2593 更广为人知名字是竞价升级算法或者简称为自动扶梯,被称为改进以太坊交易费机制的 EIP-1559 提案的替代品,因为在设计目标上有很大的重叠。在自动扶梯方案中,用户继续参与区块空间的第一价格拍卖。不过每一笔交易都可以选择为逐步提高的出价提供参数,从而为区块生产者创建一个基于时间的拍卖,以便纳入这笔交易。EIP-2593 引入了用户必须指定的参数,包括用户愿意为交易支付的最低价格、交易有效的第一个区块、发送方为处理此交易愿意支付的最大价格、用户愿意等待处理交易的最后一个区块。EIP-2593 机制向交易中附加一个不断升级的出价,以缓慢地测试最佳出价。从较低的费用开始,有助于避免支付过高的价格,因为矿工应以他们愿意接受的最低价格进行交易。不断升级的价格确保了一笔交易最终被包括在内,前提是交易价格高于网络 gas 费,有助于防止支付不足。不过自动扶梯算法比 EIP-1559 小得多,并且设计范围不同。EIP-1559 拍卖范围也相对较小,即使在目标重叠的地方,结果也很难比较。这两个提案是相辅相成的,尽管不一定是在基础层,但都应该赞同。现在自动扶梯算法已经被使用了,无论是用户手动操作,还是在以太坊进行大量交易的专业服务公司的内部使用。这证明了自动扶梯是用户的主导策略。因此,应该关注的不是自动扶梯算法是否有用,而是它们是否应该在协议内部或外部实现。[2020/6/25]

3.如果原始值是非零,当前值是一个不一样的非零值,新值等于原始值,添加SSTORE_RESET_GAS-SLOAD_GAS的gas到返还计算器

在这三种情况里,只有(1)会启动gastoken且允许区块在执行上消耗超过区块gaslimit的gas。(2)不具有这个特点,因为要获得19,900的gas返还,同一个存储槽必须在之前从零改为非零,这需要消耗20,000gas。无法从一个存储槽获得gas并用它来编辑另一个存储槽,意味着它不能被用作gastoken。另外,获得返还需要恢复存储的写入和扩展,使得返还的gas不会增加客户端处理区块的工作量。(3)是相似的:只有当同一个存储槽在之前已经消耗了5,000gas的时候才能获得4,900gas返还。

此EIP处理第一种情况。我们可以通过使用一个相似的“配对”变元来确定在何种条件下gastoken是不可用的(例如,你不可以在一个存储槽里获得比你的输入更多的gas),将每一笔返还映射到同一笔交易的同一个存储槽的前一笔支出。当一个存储槽的原始值是非零值,如果它被改为0时,有两个可能性:

1.这可能是存储槽第一次被设置为零。在这种情况下,我们可以把这个时间与SSTORE_RESET_GAS+ACCESS_LIST_STORAGE_KEY_COST第一次读取和编辑存储槽的最小开销进行配对。

2.这可能是存储槽第二次被设置为零或被设置为零后的情况。在这种情况下,我们可以把这个事件与最近一次数值从零改为其他值,且SSTORE_CLEARS_SCHEDULE的gas从返还中被移除的变元进行配对。

对于第二次或之后的情况,SSTORE_CLEARS_SCHEDULE?的值是什么并不重要,因为那个gas大小的返还是与相同大小的清除返还相匹配的。这就只剩下第一种情况了。为了确保存储槽上消耗的gas总量为正,我们需要SSTORE_CLEARS_SCHEDULE<=SSTORE_RESET_GAS+ACCESS_LIST_STORAGE_KEY_COST。因此,此EIP只把SSTORE_CLEARS_SCHEDULE减少到那两项开销的总和。

此EIP的另一个原因是,清除还未被读取的数据(通常是“无用”数据)是不会有净返还的,但清除被读取过的数据(通常是“有用”数据)还继续会有净返还。

向后兼容性

返还当前仅在交易执行后应用,因此无法对执行中任何特定可用的调用框架造成影响。因此,清除它们将不会破坏任何代码的执行,尽管它将使得一些应用变得经济上不可行。

Gastoken会变得没有价值。DeFi套利机器人今天经常不是使用已有的gastoken方案就是一个定制的,以减少链上的开销,这得益于重写它们的代码以清除对那些不再有用的gas存储机制的调用。

然而,完全保留在new=original=0!=current?里的返还,以及保留在其他nonzero->zero情况里的一些返还能确保一些接收(和值得)更好的gas开销待遇的关键用例能持续获益。例如,zero->nonzero->zero的存储设置模式保持只需消耗大约100gas。这些模式包括两个重要实例:

?反重入锁(通常在一个子调用开始前从0变为1,当子调用结束时再变回0)

?ERC20授权与发送(当代币转移得到授权,"授权值"会从零变成非零,然后在代币转移过程中恢复到零)

对清除存储激励的影响

对之前关于移除返还的EIP(EIP-3298和EIP-3403)的批评是这些EIP完全消除了把一个值设为零的激励,相当于鼓励用户不要完全清除一个存储槽(即使他们想这么做),哪怕他们想再次使用该存储槽的几率是最小的。

举一个例子,如果你有一个单位的ERC20代币,且你要送出或卖出你的所有余额,你可以只给出0.999999个单位,把剩余的留下。如果你想在未来重新放入更多该种代币到同一个账户,你仅需要为SSTORE支付5,000gas(2,100用于读取+2,900用于非零变为非零的设置)而不是22,100(20,000用于零到非零值的设置)。今天,这部分的gas会被清除存储获得的15,000gas返还所抵消,因此,如果你有超过15000/17100=87.7%的把握会再使用这个存储槽,你才会有动力这样做;按照EIP3298或EIP3403的设定,抵消激励这部分是不存在的,因此,如果你再次使用该存储槽的可能性是大于0的,设为非零值会更好。

对于剩下的4,800gas返还,如果你觉得再次使用某个存储槽的几率大于4800/17100=28.1%,你才有保持该存储槽为非零的动力。这并不是完美的,但它可能高于一般人在清除了他们的全部余额后在同一个地址重新获得同一代币的几率。

gas返还的上限是所消耗gas量的1/5,这意味着这种返还仅够用于增加处理一个区块所需的存储写入操作量最多为25%,限制了利用这个机制进行以存储写入为重点的拒绝服务攻击。

测试用例

EIP-2929的gas开销

注意,“热”和“冷”存储槽之间是有区别的。这个表展示了EIP-2929下的值,假定所有变动过的存储槽都已经是“热”状态(区别是一次性消耗2,100gas)。

减少了的返还后

如果通过把SSTORE_CLEARS_SCHEDULE从15,000变为4,800(以及去除selfdestruct的返还),减少了部分的返还,下面是是一个对比表。

安全考虑

返还对于事务执行时不可见的,因此这不会对事务执行逻辑产生任何影响。

如果我们不计算后来重置回零的零到非零的SSTORE,在一个区块里执行的最大gas消耗量受到gaslimit的限制。不计算这些事可以的,因为如果这样的SSTORE被重置了,存储不会被扩展,客户端实际上不需要调整默克尔树;gas消耗是可以返还的,但客户端对这些操作码的处理通常也会被取消。如果new_value=original_value,客户端应该保证不会进行存储写入;这是自以太坊创世以来的一次谨慎优化,但它现在变得更重要了。

来源|?eips.ethereum.org

作者|VitalikButerin&MartinSwende

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

银河链

DOGE花旗银行考虑推出加密交易、托管和融资服务

银行业巨头花旗集团正在考虑推出加密交易,托管和融资服务。花旗全球外汇业务主管伊泰?塔赫曼在周五发布的一份报告中对英国《金融时报》表示,自去年8月以来,该银行已看到大客户对比特币的兴趣“非常迅速”积累.

波场在协议升级增加质押奖励后,EOS价格上涨100%

随着区块链领域的不断发展,偶尔的协议更新是必要的,以确保项目跟上最新的发展,并为用户提供可能的最佳用户体验。EOS最近的协议升级提高了该项目的通胀率,自5月5日以来,EOS价格上涨超过100%.

[0:15ms0-1:976ms