宇宙链 宇宙链
Ctrl+D收藏宇宙链
首页 > Fil > 正文

EIP-3529:减少gas返还

作者:

时间:1900/1/1 0:00:00

简单总结

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

原因

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

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

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

规范

Ethereum EIP-4345提案:难度炸弹可推迟到2022年5月:10月9日消息,Ethereum开发者TimBeiko和James Hancock发布了EIP-4345提案,提议将Ethereum难度炸弹推迟到2022年5月。该提案称,预计Ethereum可在2022年5月前完成上海升级和ETH1.0与2.0合并,所以可将难度炸弹推迟到该日期后。目前,EIP-4345提案并未终止修改,提案内容可在未来做出修正。[2021/10/9 20:16:29]

参数

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

1.移除SELFDESTRUCT的返还

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

以太坊客户端Nethermind:难度炸弹和EIP-3554是针对试图分叉链的攻击者的防御措施:以太坊客户端Nethermind在推特上表示,难度炸弹和EIP-3554是针对试图分叉链的攻击者的防御措施,它确保以太坊有持续的维护和变更的紧迫性。此外,如果核心开发者在部署变更方面拖沓,难度炸弹就会出现,以太坊就会变得不可用。而最为重要的是,当Eth1-Eth2合并发生时,将鼓励每个人转至PoS系统,否则他们将冒着留着一个不可用的链上的风险。与此同时,首席开发者Tim Beiko表示,他怀疑如果不是因为有难度炸弹,伦敦升级可能会在1至6个月后进行。伦敦升级目前正处于Ropsten测试网的最后测试阶段。在6月24日开始的测试中,已经有超过100000枚ETH被销毁。注:伦敦升级将纳入EIP-3554,以将难度炸弹延迟至2021年12月1日。(BeInCrypto)[2021/7/13 0:49:00]

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

原理阐释

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

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

以太坊改进提案EIP-2876试图优化交易所充值流程中的Gas消耗:比特币技术爱好者JonathanUnderwood为以太坊提出改进提案EIP-2876,试图优化中心化交易所的充值流程,减少整体的Gas消耗。文档指出,兼容EIP-2876的钱包应用可以向兼容的存款系统发送ETH,以减少以太坊网络整体Gas的消耗量,因为两笔交易需要花费4.2万Gas,但是一个简单的ETH转发合约仅需要花费约3万Gas。而且对于这套存款系统来说,可以直接将所有存款转发到交易所的冷钱包,不需要手动操作来归集多个外部账户的存款。[2020/8/17]

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

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返还。

V神:EIP 1559将缓解以太坊当前面临的三大问题 新方案将更易被矿工接受:EIP 1559被认为是以太坊的下一个大手术,对此,以太坊联合创始人V神(Vitalik Buterin)整理了一份常见问题解答对EIP 1559做出详细阐述称,EIP 1559将缓解以太坊当前面临的三大问题:1.交易费用水平的波动性与交易的社会成本之间的不匹配。从直觉上看,这种费用调整机制在短期内看就像是一个固定费用,而从长远来看,它代表着一个上限。在基本上公链会并存的背景下,固定费用可能要比设置一个上限要更好。2.第一价格拍卖机制的效率低下问题。EIP 1559用一个固定价格的销售来代替拍卖(除非在短期内,区块完全填满,直到费用赶上),从而消除了第一价格拍卖机制的低效性,并使费用估算变得非常简单。3.无区块奖励区块链的不稳定性问题。EIP 1559创建了一种类似于永久性区块奖励的机制,从而缓解了仅收费区块链(指没有新区块奖励的区块链)的许多不稳定问题,而无需实际永久发行。

V神表示,新方案将更易被矿工接受。据悉,EIP 1559是旨在改变以太坊费用市场的提议,主要的变动涉及:1.目前1000万 gas限额会被两个数值所取代,一个是“长期平均目标”(1000万),另一个是“每个区块的硬上限”(2000万);2.交易需要支付一个基础费用(BASEFEE,它会被燃烧掉),该费用按区块进行调整,目标是确定一个value值,使得区块gas平均使用量保持在1000万左右。[2020/5/6]

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

动态 | 以太坊君士坦丁堡升级修改为两个名称,并删除改进提案EIP1283:以太坊官方网站今日更新了关于以太坊君士坦丁堡升级的最新公告,并表示,以太坊网络将按原定计划在区块高度达到7,280,000时发生。预计将于2019年2月28日(周四)进行。具体的日期可能会根据时间段的不同而变化,可以在1-2天之前或之后激活。这次网络升级的名称变为君士坦丁堡/圣彼得堡。此次网络升级有两个名称的原因是原来的君士坦丁堡网络升级被推迟了,需要在相同的区块上进行两个协议升级,以修复各种以太坊测试网络上的问题。圣彼得堡变化主要体现在,在对以太坊主网执行网络升级之前,将对测试网络(如Ropsten)进行升级测试更改。此文章中列出的原始君士坦丁堡更改,在推迟之前应用于测试网络,并且需要第二次网络升级以撤消原始君士坦丁堡的更改。这被称为圣彼得堡,它出现在与君士坦丁堡相同的区块上。查询发现,使用圣彼得堡网络升级从测试网络中删除了提案EIP1283。(华尔街见闻)[2019/2/23]

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

标签:GASSTOSTORTORNAGASWAPtourstorageserverStorage Cointoro币下载链接

Fil热门资讯
融资新闻 |加密零售经纪商Bitpanda在B轮扩展轮融资中再次筹集1200万美元

据TheBlock5月8日消息,总部位于维也纳的加密零售经纪商Bitpanda在最近的1.7亿美元B轮融资中又筹集了1000万欧元.

1900/1/1 0:00:00
为何英格兰银行行长Andrew Bailey对加密货币不屑一顾

周四,英国央行行长AndrewBailey在瑞士达沃斯举行的世界经济论坛上对加密货币提出了不信任的声明,称投资者必须做好准备承受最终全部的投资损失.

1900/1/1 0:00:00
担心客户流失,瑞银探索向财富客户提供加密货币投资渠道

本文来自彭博社 原文作者:AmbereenChoudhury?&ChanyaChanjaroen?&MarionHalftermeyerOdaily?星球日报译者?|念银思唐瑞银集团正处于计划向财富客户提供数字.

1900/1/1 0:00:00
Uniswap正在向加密货币钱包发行不可替代的代币(NFTs)

加密货币世界正处在这个行业的欢乐时代。在这里一切都可能发生,我们有很多解决棘手问题的妙招。享受这段时光吧,因为它不会永远持续下去.

1900/1/1 0:00:00
马斯克:比特币“高能耗”已暂停使用,正考虑其他加密货币

来源:澎湃新闻 作者:崔珠珠 北京时间5月13日,特斯拉CEO埃隆·马斯克在推特上表示,由于担心比特币开采需要大量耗能会给环境带来负担,特斯拉已经暂停使用比特币购买汽车。他还表示特斯拉正在研究使用其他加密货币去支付.

1900/1/1 0:00:00
彭博社ETF分析师:比特币ETF今年获批准的可能性处于历史最高

多年来,比特币行业一直希望美国证券交易委员会批准ETF,从理论上讲,这将为更多资金流入比特币打开便利之门.

1900/1/1 0:00:00