月亮链 月亮链
Ctrl+D收藏月亮链
首页 > 火必下载 > 正文

GAS:EIP-3529:减少gas返还_HistoryDAO

作者:

时间: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更长的峰期。

星火矿池市场负责人邱晓栋:我们还是反对EIP 1559,但无法阻挡实施:7月25日,“2021世界区块链大会·杭州”在杭州未来科技城学术交流中心进行。在 “伦敦升级在即,EIP-1559开启以太坊新时代?”圆桌论坛上,星火矿池市场负责人邱晓栋表示:目前EIP 1559对交易的性能以及参与DeFi的手续费并没有节省什么成本。我们还是坚持反对立场,但本质上结果已经不可阻挡。预计8月4日、5日会进行部署,最近还有很多言论说到2022年,这也是谣言。我们自己的程序员也在测试过程中发现EIP 1559的测试网的确有BUG,有BUG还要在8月4日这么短的时间内部署,看来决心很强,因为这是集体开发者通过的,所以反对的声音还在。我们的立场不变,但结果肯定不会改变,我们只是说期待它的上线能让DeFi的使用者清楚地知道什么是BaseFee,什么是矿工的小费。(巴比特)[2021/7/25 1:14:19]

规范

参数

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

以太坊开发者修复测试网上的EIP-1559相关漏洞:以太坊开发人员一直在努力解决测试网上的代码和客户端出现的问题,以为下一次网络重大升级——伦敦升级做好准备。7月21日,以太坊首席开发人员Tim Beiko发布了一份“伦敦测试网回顾”报告,详细介绍了即将到来的以太坊升级测试阶段的最新进展。

根据报告,OpenEthereum客户端在7月21日注意到他们的节点在Ropsten测试网上停止了运行。经查,问题不在该客户端,而是在go-ethereum协议和Geth客户端上,后者检查EIP-1559交易的发送方余额。据悉,当时一些客户端拒绝了该区块,而另一些客户端接受了该区块并继续处理:“具体而言,OpenEthereum和Besu拒绝了该笔交易/区块,而Nethermind、go-ethereum和Erigon接受了它们。”之后,通过向EIP-1559交易的有效性添加新的断言(assertions),这个问题得以修复,并且测试仍在继续。据悉,测试于6月24日在Ropsten测试网上率先激活;本月早些时候,Rinkeby测试网也启动了最后的测试阶段。(BeInCrypto)[2021/7/22 1:09:15]

1.移除SELFDESTRUCT的返还

TimBeiko正式将EIP-1559加入以太坊伦敦升级,暂定今年7月或8月执行:以太坊开发者、EIP-1559贡献者TimBeiko提交一份提案,该提案主张将EIP-1559加入到以太坊伦敦升级中,并暂定于2021年7月或8月执行。TimBeiko认为,该EIP提案没有什么问题,已经准备好通过正常的网络升级测试流程。下一步是让开发人员和其他网络参与者(即矿工)就此提案达成共识。注:EIP-1559是一个对以太坊交易机制进行优化的机制,旨在使以太坊网络上的交易费用更加可预测,解决当前“按需付费”的收费模式问题。其目标是创建一个更有效的收费市场,并简化客户端和应用程序软件的gas费付款流程。此前消息,绝大多数以太坊应用表示支持实施EIP-1559。[2021/2/26 17:54:54]

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

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

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

原理阐释

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

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

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

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

动态 | 以太坊团队考虑在伊斯坦布尔升级中实施EIP-2025,遭到开发人员的反对:据EWN7月23日消息,以太坊团队正在考虑将EIP-2025作为伊斯坦布尔升级的一项改进。由于通货膨胀率将相应提高,这一举措已引起开发者相当大的争议。因此,该提案引发一系列开发人员的争论和反对。EIP-2025建议在18个月内每个区块增加0.0055 ETH,作为开发者区块奖励,保留用于资助Etherum1.X开发。此举将在规定的时间范围内增加区块奖励。 Gnosis产品研究员Eric Conner认为此举是荒谬的,社区不应该允许它发生。Spankchain首席执行官Ameen Soleimani也表示反对,因为他认为以此目的增加区块奖励将削弱以太坊作为价值储存的外观。其他批评声音包括:加密投资公司Mythos Capital创始人Ryan Adams,RealT平台运营主管David Hoffman以及SetProtocol营销部门的Anthony Sassano。[2019/7/23]

在这三种情况里,只有(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_GASACCESS_LIST_STORAGE_KEY_COST第一次读取和编辑存储槽的最小开销进行配对。

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

对于第二次或之后的情况,SSTORE_CLEARS_SCHEDULE?的值是什么并不重要,因为那个gas大小的返还是与相同大小的清除返还相匹配的。这就只剩下第一种情况了。为了确保存储槽上消耗的gas总量为正,我们需要SSTORE_CLEARS_SCHEDULE<=SSTORE_RESET_GASACCESS_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

标签:GASSTO以太坊STORgas币一分钟暴涨5600倍STORM价格以太坊最新价格分析HistoryDAO

火必下载热门资讯
IDO:五月IDO第三弹,13个热门项目即将上线_TAL

整理|秦晓峰编辑|郝方舟出品|Odaily星球日报过去这周的市场,堪称魔幻。随着SHIB价格的冲高,PIG、Lion等各种动物币仿盘纷纷上线,动辄数百倍涨幅,令人咋舌.

1900/1/1 0:00:00
RAM:币安流动性挖矿开放 RAMP/BUSD 流动性池_Crypto Raiders

亲爱的用户:币安流动性挖矿现已开放RAMP/BUSD流动性池。即刻添加流动性,瓜分总额160,000RAMP挖矿收益。160,000RAMP奖励分发完成之后,用户将获得流动性池正常收益.

1900/1/1 0:00:00
Zora:ZD关于RPX开启充提的公告_MORA

尊敬的用户:RedPhoenix钱包部署已完成,原计划于5月20日12:00开启RPX充值与提现将提前至2021年5月14里12:00开启.

1900/1/1 0:00:00
比特币:金色早报 | 马斯克:我坚信加密货币_加密货币

头条▌马斯克:我坚信加密货币金色财经报道,特斯拉CEO埃隆·马斯克发推文称:“需要明确的是,我坚信加密货币,但比特币不可以推动化石燃料的使用大幅增加,尤其是煤炭.

1900/1/1 0:00:00
UNI:V神亲笔:V3后的Uniswap何不“兼职”预言机_SWAP

UniswapV3正式上线已经快一周了。最近几天大家应该已经看到了不少关于V3的测评文章,尽管褒奖与争议并存,但不可否认是,作为?DeFi世界的绝对龙头,Uniswap已经走过了其自身发展的一大.

1900/1/1 0:00:00
CHX:LaunchX (LNCHX)登陆BurningDrop_LAUNCH

亲爱的Pool-X用户,LaunchX将于2021年5月12日18:00:00(UTC8)登陆Pool-XBurningDrop。用户可通过质押USDT/ETH/KCS参与挖矿.

1900/1/1 0:00:00