保证 gas 市场是什么?跨层交易的费用为什么烧在 L1 且不退还 图 1
保证 gas 市场是什么?跨层交易的费用为什么烧在 L1 且不退还 · 图 1

在 OP Stack 链上从 L1 发起一笔跨层交易,费用不是付给 L2 的排序器,而是通过燃烧 L1 gas 结算的,规范把这套定价装置称为 guaranteed gas market。它解决的是一个很具体的拒绝服务问题:如果任何人都能免费或极便宜地在 L2 上强制执行存款交易,那么用一点 L1 成本就能把 L2 区块塞满。规范给出的答案是——给这类交易设一个独立于普通 L2 gas 市场的价格,并且这笔钱不可退还。

为什么必须不能退

规范解释得很直白:存款交易的 L2 gas 是通过燃烧 L1 gas 买下的,燃烧掉的东西没有余额可以退回,所以这笔支出天生不具备可退性。这和普通 L2 交易形成鲜明对比——普通交易多付的 gas 会按实际用量退还差额,存款交易则按预估值一口价结算。工程上这是一个刻意的设计取舍:可退款意味着合约要维持一个待退余额池,而这笔费用在结算形式上可能根本不是 ETH 转账,规范的表述是”有时以 gas 燃烧支付,可能没有 ETH 余额可退”。理解这一点,也就理解了为什么跨层充值的费用有时候和直觉不符:它不是手续费加价,而是把 L1 执行成本和 L2 执行成本用一个汇率折算进了同一次燃烧。

一个独立的反馈回路

机制示意(图片由 Agnes 生成,非产品界面或链上数据图)

guaranteed gas market 内部像微型 EIP-1559:它有一个每个 L1 区块的资源目标 TARGET_RESOURCE_LIMIT 与上限 MAX_RESOURCE_LIMIT,两者之间是弹性系数关系;还有一个独立的 base fee,按”本 L1 区块实际被购买的 L2 gas 与目标的差额”调整,调整幅度受最大变化分母约束,反应速度比 L2 主市场的 base fee 更快,以便及时吸收突发存款流量。当需求低于目标时 base fee 下探到地板价,超过目标则沿反馈算法上升,短时突发允许在弹性上限内临时多买、但付出更高单价。这套机制的目标值刻意保持较小,规范的说法是让小目标配合弹性倍数,在容纳偶发大额交易的同时守住整体用量。

计费公式与补贴项

具体计价过程分三步。合约先按请求的 guaranteed gas 乘当前存款 gas 价格算出名义成本;接着给一笔抵消:存款事件本身在 L1 被处理消耗的 gas,按 L1 base fee 折算成 ETH 后从 L2 成本里扣掉,相当于协议承认”这个日志的存在本身也花了钱”;剩下的净值才是需要燃烧的 L1 gas 量,用折算比例换算成 L1 gas 单位。如果抵消之后净值为负,则不燃烧任何 L1 gas——规范明确写了这种情形对应零燃烧。所以从用户视角看,存款的跨层费用会随 L1 base fee、存款市场 base fee 和当区块拥挤度三者共同浮动,同一时刻不同区块发起同样操作的成本可以差出几倍。

这套机制的边界与读法

需要注意三点。第一,这套市场只服务于在 L1 发起、由推导强制执行到 L2 的交易,用户日常的 L2 内交易走的是普通 L2 gas 市场,两套价格互不干涉;这也是为什么同一笔操作”从 L1 直接 deposit”和”先上 L2 再操作”的总成本结构完全不同。第二,规范里”直接收 ETH 支付 L2 gas”的路径被列为尚未支持的方案,现阶段的唯一途径仍是燃烧,读文档时不要把设计目标误读成已交付功能。第三,弹性上限的存在意味着攻击者理论上可以在短时间内以更高单价买入超额 L2 gas,定价机制把这种突发约束在成本与区块上限之内,而不是承诺完全消除。查看当前价格时可以按该链的 L1 存款合约读取 base fee 与资源目标相关变量,具体函数名与参数因链的升级列车不同而不同,以该链官方文档为准。机制解释之外还要说清一句:本文讨论的是协议计费设计,不构成任何投资建议,也不构成对费用水平的当前值判断。