OP Stack 自定义 Gas 代币模式是什么?layer2 不用 ETH 付手续费会怎样 图 1
OP Stack 自定义 Gas 代币模式是什么?layer2 不用 ETH 付手续费会怎样 · 图 1

以太坊主网并不是唯一能收 gas 费的 layer2 结算层。OP Stack 规范里存在一种叫 Custom Gas Token(CGT)的模式:一条基于 OP Stack 部署的链,可以直接把 ETH 之外的某种资产定义为本国货币,用户支付交易费用、协议计算原生资产都走这个代币,而不是 ETH。规范概览页对这套模式标注了”文档尚未定稿、应视为实验性”的原话,也就是说它是协议仓库里公开的规格说明,不是所有 OP Stack 链都已启用的标配功能,读的时候要把它和已经稳定运行的机制区分开。

一个功能开关,改动集中在执行层

CGT 模式的设计思路是最小侵入:共识层不做任何改动,链的出块、推导、故障证明流程和普通 OP Stack 链完全一致;差异全部收在执行层的预部署合约和桥接函数里。系统通过 systemConfig 上的功能开关(检查 CUSTOM_GAS_TOKEN 是否启用)来决定各合约走哪条分支。规范把这套实现描述为位图式功能开关:用功能位来管理,好处是实验特性可以按链逐个打开,既不动共识规则,也不牵连其他链的实现。换句话说,一条链是不是 CGT 链,不是看口号,而是看链上系统配置合约里这个位是否打开,链上状态是可查的。

启用后资产进出会发生什么变化

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

规范列出的关键组件有两个。其一是名为 NativeAssetLiquidity 的预部署合约,只在启用 CGT 的链上部署,里面预先存放着这条链的原生资产,数量上限为 type(uint248).max;其二是 LiquidityController,一个由所有者治理的铸造与销毁路由合约,负责控制供给。对使用者来说最直观的变化是桥的行为:CGT 启用后,跨链桥方法里所有 ETH 转账流程被禁用,L2ToL1MessagePasserOptimismPortal 里的 ETH 桥接函数规定必须执行失败并回滚,目的是避免用户混淆”这条链的原生货币到底是哪一种资产”。如果确实需要把 ETH 本身带到这条链上,规范给出的路径是先把 ETH 包装成 ERC20 形式(例如 WETH),再通过 StandardBridge 生成一个 OptimismMintableERC20 表示——这时 ETH 在 L2 上的身份是普通 ERC20 代币,而不是原生资产。

供给与预挖:信任的另一半

资产维度上,CGT 模式还有一层不能跳过的东西:链的原生资产预挖在 NativeAssetLiquidity 预部署合约里,上限为 type(uint248).max,而增发与销毁权限归 LiquidityController 这个由所有者治理的路由合约。与 ETH 的对照很直白——ETH 的发行与销毁规则写在协议层里,CGT 原生资产的供给节奏则由链上一个受 owner 控制的合约管理。因此评估一条 CGT 链要看两件事:一是上面说过的费用与桥接路径,二是那个铸造销毁路由的治理结构,包括多签构成、时间锁和 owner 归属。两者要分开检查,费用计价的吸引力不能替供给治理背书。

用户视角要检查什么

判断一条链是否启用 CGT,最直接的核对顺序是:先看官方文档或规范登记里该链的配置说明,再看 SystemConfig 合约中对应功能位的实际状态,最后看门户合约对 ETH 转账是否回滚。三条信息互相印证才算确认,因为同一条链的实验开关、部署脚本和文档说明在某些阶段可能不一致。对已经在该链上持有资产的用户,需要明确的是:被禁用的是 ETH 的原生桥接通道,不是资产所有权;提款走的是这套模式对应的合约路径,费用与速度按该链公告为准。资产进出路径的变化属于操作风险而不是价格风险,动手前应核对自己钱包里持有的到底是原生资产还是 ERC20 表示,两者的桥接方法并不相同。

机制的代价与适用边界

把非 ETH 资产立为 gas 货币,换来的是这条链可以用自有代币建立经济闭环,但代价是 ETH 作为通用结算媒介的直通性被切断:跨 ETH 主网与这条链的价值传输要额外经过包装或转换环节,每个环节都有自己的合约面与授权面。这套模式适合已经有稳定代币经济、希望用户以本链代币付费的场景;对以 ETH 为主要资产的通用场景,它反而增加了摩擦。规范本身仍是实验性文档,具体参数、合约地址与启用状态以该链官方文档和链上配置为准。本文只做机制解释,不构成任何投资建议。