简单总结
移除SELFDESTRUCT的gas返还,减少SSTORE的gas返还到一个较低水平,使得返还的量仍然相当大,但不会像现在高到可以被利用的地步。
原因
最初引入SSTORE和SELFDESTRUCT的gas返还是为了鼓励应用开发者写应用时能践行“良好的状态卫生”,清理不再需要的存储槽与合约。但是,结果证明这项技术带来的效率远低于预期,gas返还还带来多项未预料到的有害后果:
gas返还导致GASToken的出现。GasToken有益于把gas空间从低费用阶段转移到高费用阶段,但它也对网络有坏处,尤其是加剧状态大小膨胀(由于状态槽被有效用作“电池”来积攒gas)和低效地堵塞区块链gas使用。
gas返还加剧区块大小变化。一个区块实际消耗的gas量的理论最大值是接近名义上的gaslimit(因为返还会增加同一区块里后面交易的gas空间,尽管返还的gas最多是该笔交易消耗gas的50%)。这一点不是致命的,但影响还是相当不好,特别是返还可以被用来维持比EIP-1559使用两倍gaslimit更长的峰期。
第110次以太坊ACDC会议:CL客户端团队正考虑将EIP 4788纳入Deneb升级:6月4日消息,据 Galaxy 研究副总裁 Christine Kim 记录报道,以太坊核心开发人员于本周召开了第 110 次全核心开发人员共识 (ACDC) 电话会议。开发人员在会上讨论和协调对以太坊共识层 (CL) 的更改。本周,以太坊基金会研究员 Dankrad Feist 介绍了一项关于以太坊主网节点传播大量数据的能力的数据实验结果。根据他的发现,他建议将 EIP 4844 规范从每个块最多 4 个 blob 增加到 6 个。
此外,CL 客户端团队正在考虑将 EIP 4788 纳入 Deneb 升级。据悉,EIP 4788 为智能合约和去中心化应用程序 (dapps) 引入了一种信任最小化的方式来访问 CL 和验证者余额、活动和奖励等信息。[2023/6/4 11:56:33]
规范
参数
对于存在block.number>=FORK_BLOCK的区块,需要作下列变更。
Double Protocol提出的EIP-4906得到Opensea支持:3月12日消息,NFT 租赁平台 Double Protocol?提出的 EIP-4906 现得到 Opensea 支持。据悉,该标准在 ERC-721 中添加了元数据事件,允许第三方及时更新其动态 NFT 的元数据。[2023/3/12 12:57:39]
1.移除SELFDESTRUCT的返还
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量到返还计算器
Spruce:SIWE标准EIP-4361已从“草案”状态变更为“审查”状态:7月19日消息,数字身份认证公司Spruce发推称,EIP-4361(使用以太坊登录,简称SIWE)作为一项EIP已经从“草案(draft)”状态变更为“审查(review)”状态。这是将“使用以太坊登录”作为广泛采用标准向前迈进的一大步。
据悉,EIP-4361描述了使用签名消息的现有Web2服务的身份验证方法。用户可以使用自己的私钥(带有相应的地址)进行身份验证,而不是使用用户名和密码的组合。
此前消息,Spruce于2021年10月与以太坊基金会、ENS共同制定了SIWE标准EIP-4361 并于去年年底发布了EIP-4361的实现源代码,并于今年5月发布其2.0版本。[2022/7/19 2:22:34]
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返还。
CoinDesk:关于以太坊EIP 1559升级存在4个常见误解:CoinDesk今日发文“关于以太坊EIP 1559升级的4个常见误解”。其中包括误解一:EIP 1559旨在降低以太坊的高额费用。文章表示,EIP 1559 的目标是通过创建算法模型来自动调整成本,从而降低交易费用的波动性和可预测性。然而,对以太坊费用模型内部运作的变化预计不会降低以太坊的交易费用;误解二:EIP 1559将使以太坊的货币政策更具可预测性。文章认为,鉴于基本费用根据网络活动和区块空间需求动态调整,很难准确预测随着时间的推移会燃烧多少以太坊;误解三:EIP 1559很可能会导致以太坊矿工退出并攻击网络。文章认为,大多数矿工不太可能因为激活EIP 1559而背叛或试图破坏以太坊。主要原因之一是矿工将不得不放弃他们本可以通过升级机器和继续运营而获得的奖励;误解四:EIP 1559将解决以太坊上的矿工可提取价值(MEV)问题。文章表示,EIP 1559降低了矿工依靠交易费用从用户那里提取MEV的能力,但矿工通过其他方式要求交易并赚取MEV的能力在EIP 1559之下保持不变。[2021/6/19 23:49:10]
此EIP处理第一种情况。我们可以通过使用一个相似的“配对”变元来确定在何种条件下gastoken是不可用的(例如,你不可以在一个存储槽里获得比你的输入更多的gas),将每一笔返还映射到同一笔交易的同一个存储槽的前一笔支出。当一个存储槽的原始值是非零值,如果它被改为0时,有两个可能性:
Stack Funds首席运营官:以太坊涨势源自EIP 1559升级引起的兴奋:金色财经报道,以太坊在周一早些时候升至创纪录的3201美元,年初至今的涨幅超过330%。对此,Stack Funds首席运营官Matthew Dibb表示,以太坊的融资率保持平稳,今日早些时候在FTX上达到负数。以太坊的现货涨势主要是由于即将到来的EIP 1559升级引起的兴奋。[2021/5/4 21:21: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
本文详解数字人民币到底是什么,会不会和微信支付宝成竞争关系,它和区块链又有什么关系?据财联社报道,支付宝已对部分用户上线数字人民币模块,并支持用户转账、收款等服务,其中.
加密行业越来越多的声音认为,以太坊市值超越比特币的可能性正在提升。其中之一是BitMEX创始人ArthurHayes,此前曾撰文表示以太坊价格很可能会达到1万美元,今日再撰文表示以太坊市值将有可.
这几天网上似乎越来越多人开始讨论以太坊超越比特币的可能。之所以会出现这个现象,我觉得可能和两个因素有关:一是以太坊上面的生态越来越大;二是以太坊的价格上涨将具备机制因素.
马斯克一句话,便能引起加密货币市场的急涨急跌。上周马斯克质疑比特币耗能,并宣布停止以比特币支付购买特斯拉。而仅在一个月前,特斯拉才宣布接受比特币作为支付方式.
比特币正在失去主导地位,目前市值占比已滑落至3年低点,在这一次周末暴跌中清算达到25亿美元的合约头寸。值得参考的是,2018年1月,比特币市值占比首次降至33%的最低点,并开启了一波漫长的熊市.
撰文:FionaKobayashi,软件工程师,目前致力于MEV领域的研究编译:PerryWangDeFi普通用户不清楚的是,在我们讨论MEV时,该领域疆土正不断变化,内部已形成多条战线.