多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

交易失败,费用为何照扣?mpp 低 gas 漏洞与代付服务的预算边界

交易失败,费用为何照扣?mpp 低 gas 漏洞与代付服务的预算边界 交易失败费用为何照扣mpp 低 gas 漏洞与代付服务的预算边界一、背景与时间线项目安全公告于2026-06-24发布GitHub 已审核数据库于2026-09-25收录。因此本期是新收录复盘不能写成 9 月发生了钱包损失事件。项目核验结果项目ZenHive/mppElixir/Hex 生态GHSAGHSA-vj8p-hp9x-gh47受影响0.2.00.6.0最低修复0.6.0前提服务端担任 fee payer**编号差异**核验时项目公告列出 CVE-2026-59252而 GitHub 数据库页面仍显示没有已知 CVE。本文用 GHSA 作为稳定关联键保留差异不宣称两处元数据已同步。二、技术原理状态回滚与费用结算分离公告描述客户端设置不足以完成执行的 gas 上限服务端仍联合签署并广播交易耗尽 gas业务状态回滚代付钱包仍承担费用。反复失败可能影响后续正常用户的服务可用性。旧版同步路径直接广播另一条路径虽调用模拟却省略 gas 参数因而不能验证实际交易的 gas 约束。这里的核心问题不是“有没有调用模拟接口”而是模拟输入是否包含了决定失败的约束。官方公告提供了两条路径的说明。**工程分析**这类问题可以抽象为三本账业务状态、资源消耗、费用归属。失败只回滚第一本账时后两本账仍可能持续增长。支付网关、任务执行平台与外部模型调用也应该分别记录“业务失败”和“实际成本”但这只是设计类比不代表它们受到本漏洞影响。三、补丁中的关键边界完整模拟与降级官方修复提交说明广播前通过eth_simulateV1模拟完整联合签署交易覆盖同步和乐观路径。它与静态费用策略互补而不是互相替代。必须注意同一提交公开说明的兼容行为节点返回 JSON-RPC-32601、不支持该方法时会降级其他 RPC 错误则关闭执行路径。因此不能把升级概括成“任何环境都保证成功模拟之后才广播”。**防护建议**对高风险代付业务运行验收应包含节点能力探测和降级告警。若业务要求强制模拟可在应用边界暂停不具备该能力的代付流程这是更严格的运维策略不是声称上游默认已经如此实现。四、无链上交易的安全模型以下仅用整数模拟预算不接钱包、不发交易也不提供真实 gas 阈值。数值是教学用单位与 Tempo 的真实执行成本无关。defexecute_model(balance,gas_limit,required,enforce_simulation):ifenforce_simulationandgas_limitrequired:returnbalance,rejected_before_broadcastcostmin(gas_limit,required)ifcostbalance:returnbalance,insufficient_budgetbalance-costreturnbalance,successifgas_limitrequiredelserevertedremaining,statusexecute_model(100,7,10,False)assert(remaining,status)(93,reverted)remaining,statusexecute_model(100,7,10,True)assert(remaining,status)(100,rejected_before_broadcast)remaining,statusexecute_model(100,12,10,True)assert(remaining,status)(90,success)print(cost separation checks passed)该模型忽略基础费用、状态变化、手续费价格和复杂执行环境只验证失败与成本可以分离。真实系统即使模拟成功执行前的链上状态也可能改变模拟不能替代总预算上限与风险监测。五、研发与安全团队行动清单**版本与能力核验**检查实际使用的 Hex 依赖及锁文件升级到至少 0.6.0 的兼容修复版本。分别测试同步和乐观路径确认节点对模拟方法的支持。不要把 HTTP 可达或 RPC 健康检查通过当作模拟能力存在。**预算治理**为每个主体、业务、钱包设置额度和速率约束对单笔费用、总赞助费用及连续失败数设置独立指标。预算判断必须在并发请求之间保持一致否则多个请求可能各自通过单笔检查却合计超额。**输入一致性**将要广播的交易与被模拟的交易绑定。测试重点不仅是字段是否存在还包括 gas、调用数据、发送者和其他执行上下文是否一致。任何模拟后的变更都应重新经过适用的验证。**故障策略**分别演练模拟成功、执行失败、RPC 超时、方法不支持和响应异常。每种情况都要有明确结果而不是通用异常处理后继续广播。兼容性降级应可观察、可配置并符合业务接受的风险。**排查与响应**关注费用持续增长而成功业务量没有增长的组合信号。保留交易标识、模拟结果、费用和调用主体的关联记录不记录私钥。无法确认异常原因时可以先暂停代付能力保护预算并保留调查证据。六、总结安全的代付服务要证明两件事操作在当前条件下值得执行以及即使失败也不会无限消耗他人的预算。静态边界、完整模拟与费用监测共同工作才能让失败路径不再成为成本失控入口。
返回列表