你在Arbitrum上做一笔交易,钱包里跳出来的Gas费,其实是两层费用叠在一起的结果——执行费是L2的,数据费是L1的,两者分开算。
做什么
看懂二层网络(L2)Gas费的结构:搞清楚执行费和数据费分别是什么、怎么算,以及为什么同样是转账,不同时间费用差很多。
概念拆解
L2的交易费用由两部分构成:
L2执行费(Execution Gas Fee)
这笔交易在L2网络上实际执行时消耗的计算资源。
逻辑和以太坊主网一样:Gas消耗量 × Gas价格。一笔交易在L2上消耗的Gas量和在以太坊主网上完全相同,比如一笔ETH转账在主网消耗21,000 Gas,在L2上也消耗21,000 Gas。
唯一区别是L2的Gas价格比主网便宜得多,所以执行费部分比主网低很多。
L1数据费(L1 Data Fee)
L2之所以便宜,是因为它把大量交易打包后再提交到以太坊主网,但打包后的交易数据要发布到主网上,这部分成本叫L1数据费。
这笔费用由以太坊主网的Base Fee(或Blob Base Fee) 决定,不是L2自己定的。主网越堵,L2的数据费就越高。
费用按交易压缩后的大小计算,交易越复杂(比如Swap、合约调用),数据量越大,数据费就越高。
总费用 = L2执行费 + L1数据费。
对比选择
| 费用类型 | 由谁决定 | 影响因素 | 波动特点 |
|---|---|---|---|
| L2执行费 | L2网络自身 | 交易复杂度(Gas消耗量)、L2拥堵程度 | 相对稳定,由L2的EIP-1559机制调节 |
| L1数据费 | 以太坊主网 | 交易数据压缩后大小、主网Base Fee / Blob Base Fee | 随主网费用波动(每个区块最多变化12.5%) |
Arbitrum的一个特殊之处:它的Gas费在用户端显示为一笔费用,但底层是把L1数据费换算成L2 Gas单位,塞进了Gas Limit里。所以你调用eth_estimateGas返回的值,已经包含了L1数据费对应的Gas缓冲。
常见失败原因
"我在L2网络不堵的时候做交易,为什么Gas费还是比平时高不少?"
因为以太坊主网突然拥堵了。L2的数据费跟着主网的Base Fee走,主网一涨,L2的Gas费就跟着涨。你感觉L2"不堵",那是L2执行费没涨,但L1数据费涨了。
"为什么有的L2转账Gas费特别低,有的特别高?"
因为不同的L2压缩效率不同,且采用的数据提交方式不同。用EIP-4844 Blob提交的链比用Calldata提交的便宜很多。另外,交易越复杂(比如要调用多个合约),数据量越大,数据费就越高。
怎么做 - 实际操作
情况 A:用钱包操作
钱包显示的预估Gas费已经包含了执行费+数据费,不用自己拆开来算。
但如果你看到Gas费异常高,可以等主网Gas费降下来再做——因为L2的数据费跟着主网走。
情况 B:用代码估算
用
eth_estimateGas获取Gas Limit,再乘以L2的Gas Price,就能得到总费用。如果需要单独拆出L1数据费,可以调用
GasPriceOracle合约的getL1Fee方法(OP Stack链适用)。
完成标准
交易确认后,在区块浏览器里查看交易详情:
看到L1 Data Fee一栏显示的具体金额(有些浏览器会拆开显示)。
看Gas Used和Gas Price,相乘就是执行费部分。
两者相加等于你实际支付的Gas费。
FAQ
Q:Arbitrum和Optimism的数据费计算方式完全一样吗?
A:底层逻辑相同:都是压缩交易数据后发布到以太坊。但具体参数(压缩算法、标量参数)有细微差异。OP Stack链的baseFeeScalar和blobFeeScalar各有不同值。
Q:为什么我在Arbitrum上设了很高的优先费,交易还是排了很久?
A:Arbitrum的排序器(Sequencer)不按优先费排序,按先来后到。设不设优先费,在Arbitrum上不影响速度。但在Optimism上,优先费会影响排序器处理顺序。



