38 分钟前

以太坊开发者征求应用评估Glamsterdam拟议燃料费调整

EIP-8037 state-gas rules force Ethereum dApps to rewrite billing

CryptoSlate

以太坊核心开发者正征求应用团队审查,以确定是否需要修改Glamsterdam拟议的燃料费规则。开发者的内部审计无法检查每个项目的合约和链下服务。马里乌斯·范德魏登(Marius van der Wijden)在以太坊基金会11月6日发布的博客文章中,要求检查八项燃料费假设。ChainSecurity和Dedaub正与内部审计团队同步开展调查,同时开发者也要求各项目说明可能的修复方案。

原定于10月26日在Hoodi激活的升级及配套的2亿燃料上限上调已于10月22日推迟。11月6日发布的征求意见呼吁维持延期,直至问题解决;相关通知未设定主网激活日期。EIP-8037将提高创建持久化区块链数据的费用,并将状态增长与执行分开计费。EIP-8038将调整访问和写入现有状态的费用。这些提案旨在提高吞吐量,同时限制以太坊节点必须保留的数据量。审查框架涵盖三项有关固定预算和储备的定价假设,以及五项涉及返还燃料、失败、计费和授权的核算假设。

框架中的INV-5条目审查中继服务使用的报销计算方式;中继服务会替其他用户支付交易成本。对于燃料上限高于16,777,216的交易,EIP-8037拟将燃料最初分配至单独的状态燃料储备。创建状态会先消耗该储备,再消耗执行燃料。Solidity的gasleft()不包括该储备,因此对比读取值时可能漏算由中继服务支付的费用。如果后一次读取值高于初始值,带检查的减法会回退并阻止操作。改用不检查的减法则可能发生数值回绕,产生很大的结果,并可能导致过度报销,具体取决于其他计算和支付保障措施。未计量的储备支出也可能造成向用户少收费,让运营方承担差额。

计费指南建议按照拟议规则估算成本,并取得用户签署的费用协议。对于仍保留计量机制的系统,指南建议将减法结果限制在合理范围内,并设定由用户签署的付款上限,但由储备支付的费用仍无法计量。尚未定案的规范提案PR #12581拟禁止燃料读取值上升,以解决减法问题,但不会消除储备费用未计量的问题。

INV-8审查EIP-7702,该提案允许账户授权委托合约代码。按照拟议规则,如果执行前燃料不足,交易仍可能被记录在区块中,但委托关系和与授权相关的随机数更新会被回滚。如果授权仍符合有效性检查条件(包括对授权账户随机数的检查),暴露的授权之后可能被再次使用。如果委托合约的初始化函数允许首个调用者选择所有者,攻击者就可能在一笔交易中应用该授权并取得所有权。在公共内存池中,抢先使用授权的情况早已存在;但即使交易通过私密方式提交,这类失败也可能在交易被打包后暴露可重复使用的授权。在顶层执行框架开始之前应用的委托关系,即使该框架之后执行失败仍会保留,因此必须检查失败交易回执所对应的账户代码和随机数。钱包可采取的保护措施包括:要求初始化必须经过账户签名或账户自调用,并使已暴露的授权失效。一项建议中的协议修改将预先收取最高授权费用,但该修改尚未采纳。

根据该提案,创建一个冷存储槽总计将消耗110,020单位燃料,而大阪升级下为22,100单位。拟议的总量包括12,100单位执行燃料和97,920单位状态燃料,状态燃料部分由储备决定从哪个余额中扣除。ChainSecurity于10月13日发布的研究显示,费用调整及燃料返还可能使合约永久记录一项资金不足的操作为失败。如果该记录不允许重试,一项有效操作就可能无法再次执行。重新核查预算、传递失败状态和保留重试选项,分别可以应对风险的不同方面。

代码仓库要求受影响项目说明配置变更、升级或迁移能否解决问题,以及大约何时能完成修复。各项目的回复将帮助开发者判断应用能够承受多少兼容性改动,以及规范应在哪些方面作出调整以避免损害。对故障和可行修复方案的具体描述,将为下一轮规范讨论提供依据。

This content is an AI-generated summary/analysis for informational purposes only and does not constitute investment advice.