Gas 费怎么算:baseFee 和小费分别是什么
Gas 费由 gasUsed、baseFee 和 priorityFee 三部分决定。这里说明每个数字归谁、怎么变化、在哪三种具体情况下容易被误读,以及主网费用该和什么对比才有意义,也解释钱包报价为何常与链上快照对不上。
先说结论
5 条- Gas 费 = gasUsed ×(baseFee + priorityFee)。三个数缺一个都算不出你实际要付多少钱。
- baseFee 由协议按拥堵程度自动调整并被销毁,不给验证者;小费才归验证者。
- 「Gas 贵了」多数时候说的是 baseFee 涨了,也就是拥堵溢价,不是手续费涨价——没有人在调价。
- 这个数字每 12 秒变一次,任何单点数值都只代表那一个区块,包括本页顶部的快照。
- L2 的费用结构不同(含 L1 数据发布成本),不能拿主网的 Gas 直接比。
0.0645Gwei
数据截至 2026-07-17 每 24 小时更新
数据来自 以太坊公共节点 · ethereum.org
解读
人写- 怎么算出来的
- 一笔以太坊交易的费用 = gasUsed ×(baseFee + priorityFee)。gasUsed 是这笔交易实际消耗的计算量;baseFee 由协议按上一个区块的拥堵程度自动调整,并且被销毁,不给任何人;priorityFee 是你自愿给验证者的小费。你在钱包里设的 maxFeePerGas 是愿付上限,实付取 min(maxFee, baseFee + priorityFee),多付的部分退回。
- 什么时候会骗人
- 单看 baseFee 会在三种情况下骗人:一是它不等于你要付的钱,实付还要乘 gasUsed 并加上小费,一笔简单转账和一次合约交互的 gasUsed 能差十几倍;二是它每个区块都在变,任何单点数值都只代表那 12 秒;三是拿它跟 L2 的费用直接比没有意义,L2 的成本结构里还含 L1 数据发布费用,是另一套算法。
- 该拿它跟什么比
- 拿它跟同一条链的历史区间比,而不是跟另一条链比。想知道贵不贵,看两个数:baseFee 在近 30 天里的位置,以及 gasUsedRatio(区块用量比)。gasUsedRatio 持续高于目标值时,涨的是拥堵溢价而不是手续费本身。想知道自己要付多少,把 baseFee、小费、gasUsed 三个数一起看,缺一个都得不出金额。
这份数据的边界
- 只反映以太坊主网,各条 L2 的费用结构不同,不能直接套用
- Gas 随区块波动,这是抓取那个时点的值,不是当天均值
- 这里给的是 baseFee,不含你要付的小费(priorityFee),也不含 gasUsed
- 页面标明快照日期;日期不是今天时,应当把它当作历史读数
每个区块的 baseFee 可以在 12 秒内变化 12.5%,这是协议允许的单块调整上限。Gas,是指在以太坊上执行计算所消耗的资源单位,你付的那笔费用就是按它计价的。多数人对它的误解集中在一个地方:「Gas 贵了」听起来像有人涨价了,实际上没有人在调价——那个数是协议自己按拥堵程度算出来的。
Gas 费到底由哪几个数决定?
由三个数决定:gasUsed、baseFee、priorityFee,缺任何一个都算不出金额。这三个数经常被压缩成一句”现在 Gas 多少”,而那句话通常只说了中间那一个。
三个数各是什么
- gasUsed:这笔交易实际消耗的计算量。一笔普通的 ETH 转账和一次复杂的合约交互,差别能有十几倍。它取决于你在做什么,不取决于网络。
- baseFee:协议按上一个区块的拥堵程度自动调整出来的基础价,并且会被销毁——它不进任何人的口袋。
- priorityFee(小费):你自愿多给验证者的部分,用来让自己排在前面。这一份归验证者。
完整算式是:费用 = gasUsed ×(baseFee + priorityFee)。你在钱包里设的 maxFeePerGas 只是愿付上限,实付取 min(maxFee, baseFee + priorityFee),多出来的会退回。这套规则来自 EIP-1559,2021 年 8 月的 London 升级之后生效。
为什么销毁那部分很重要
因为它改变了”贵”这个字的含义。baseFee 被销毁,意味着没有一个收款人——不存在一个把价格调高来多赚钱的角色。它涨,只说明上一个区块用得比较满,协议照规则把价格往上抬了一档。
这就是本篇要给的那个认知:**Gas 贵,是拥堵的读数,不是收费的决定。**你在为”这一刻很多人都想上车”付钱,而不是在为某项服务付更高的费率。区分这一点之后,“等一等”这个念头才有依据——拥堵会散,费率不会自己降。
这个数字什么时候会骗人?
在三种情况下它会骗人,而这三种在日常讨论里都很常见。顶部快照只回答某一刻的 baseFee;拿它估算实际费用,还缺 gasUsed 和小费。
三种会被误读的情况
- 把 baseFee 当成”我要付多少钱”。它只是算式里的一项。同一时刻,转账和合约交互的实付能差十几倍,差在 gasUsed 上,跟 baseFee 无关。
- 把一个时点当成一段时间。这个数每 12 秒变一次。截图里的”Gas 只要 0.3”和你操作时的值,可能已经不是同一回事。
- 拿主网的 Gas 跟 L2 比。L2 的费用结构里还含着把数据发布回 L1 的成本,是另一套算法。两个数字单位一样,含义不一样。
链上能看到什么 / 看不到什么
链上能读到的:
- baseFeePerGas、gasUsedRatio(区块用量比)、按百分位统计的 reward(小费)——这些通过标准方法
eth_feeHistory就能拿到,字段定义写在 Execution APIs 规范 里。 - 每个区块的高度与时间戳,所以任何一个 Gas 数值都能被追溯到具体的块。
- 这是链上原始事实,任何合规的公共节点返回的结果应当一致,不依附任何厂商的数据许可。
链上看不到的:
- 你钱包里会显示多少。钱包的估算另有算法,各家不同,它猜的是”你大概愿意等多久”。
- 拥堵是谁造成的。能看到区块被填满,看不到填它的人是谁、为什么。
- 未来 10 分钟的值。费用历史是历史,任何”待会儿会降”的说法都是推测。
eth_feeHistory返回的 reward 是那个区块内交易按小费排序取的百分位值,不等于”你会付多少”。它描述的是别人付了多少,不是对你的报价。
Gas 什么时候会突然抬起来?
区块被填满的时候。听着像废话,但它排除掉了一整类解释——不是有人调价,不是网络”变差了”,是这一刻想上链的人比区块装得下的多。
三种把区块填满的典型事件
- 集中铸造。某个 NFT 或代币在同一分钟开放,几千个地址同时抢同一批交易位置。这时候抬起来的多半是小费——大家不是在付更多手续费,是在竞价排序。
- 行情剧烈波动引发的清算与套利。价格快速变动时,清算交易和套利交易对时间敏感到以区块计,它们愿意为排在前面付出很高的小费。
- 持续性的高吞吐需求。铭文热潮那类场景是典型:不是某一分钟的尖峰,而是连续很多个区块都被填满,这时候被推上去的是 baseFee——协议每个区块往上抬一档,抬着抬着就到了高位。
前两种是尖峰,来得快去得也快;第三种是抬升,会持续到需求退潮。从费用曲线上区分这两类,靠的是看哪个数在动,这也是上面那个”baseFee 还是小费”的分法在实际场景里的用途。
这解释了一件反直觉的事
Gas 高的时候,链本身通常运行得很正常——甚至可以说它正在满负荷工作。费用高是需求的读数,不是故障的读数。
反过来说,Gas 长期极低也不全是好消息,它同时意味着区块没被用满、链上没什么人在做事。所以”Gas 便宜”这句话,既可以读成”现在操作划算”,也可以读成”这条链现在很闲”,取决于你关心哪一头。多数报道只取前一种读法,那是因为它们默认读者是来操作的。
该拿它跟什么比才有意义?
跟同一条链的历史区间比,别跟别的链比。这也是本页顶部那个快照的正确用法——脱开这一段,它就只是个数。
判断”现在贵不贵”要看两个数
| 你想知道 | 该看的数 | 该怎么读 |
|---|---|---|
| 现在算不算堵 | gasUsedRatio(区块用量比) | 持续高于目标值 = 拥堵,baseFee 会被继续抬 |
| 现在算不算贵 | baseFee 在近 30 天里的位置 | 跟自己的历史比,不跟别的链比 |
| 我要付多少 | gasUsed × (baseFee + 小费) | 三个数一起,缺一个都得不出金额 |
| 该给多少小费 | reward 的百分位分布 | 它说明别人付了多少,不是对你的报价 |
| 和 L2 比谁便宜 | 别直接比 | 费用结构不同,含 L1 数据发布成本 |
一段时间序列比一个数字有用得多
单点数值几乎没有信息量,因为它没有参照。有参照之后,能看出来的东西立刻多起来:这一段涨的是 baseFee 还是小费?
- baseFee 在涨、小费平稳 —— 是普遍拥堵,全部人都在排队。
- 小费在涨、baseFee 平稳 —— 是有人在抢排序,通常对应某个具体事件(铸造、清算、抢跑)。
- 两个都在涨 —— 事件叠加拥堵,也就是费用体感最差的那种时候。
这个区分只有拉出一段时间序列才做得到,单点读数看不出来。时间序列能帮你分清变化主要来自 baseFee 还是小费,某一刻的数字不能。
下次看到「Gas 好贵」,先看哪个数?
先看 gasUsedRatio,再看 baseFee 在近 30 天的位置。看完通常会发现,“贵”说的是这一刻堵,而不是这条链变贵了——这两句话对应的动作完全不同。
顶部快照的用法也一样:它是一个论据,不是一个结论。它的价值不在那个数是多少,在它旁边写着数据截至什么时候、怎么算的、什么时候会骗你。
一个能带走的动作
看到任何一个 Gas 数字——本页的、钱包里的、群里截图的——先问它三个问题:这是哪个数(baseFee 还是总费用)?截至什么时候?主网还是 L2?
三个问题答不齐,这个数字就还不能用来判断任何事。这不是严谨,是这个数的性质决定的:它每 12 秒换一次,脱离时点和统计方式以后,它连自己都代表不了。
常见问题
Q: baseFee 为什么要销毁?给验证者不好吗?
答: 销毁是 EIP-1559 的设计选择,目的之一是切断”收费方”和”定价方”的关系。如果基础费给验证者,验证者就有动机让区块保持拥挤来抬高它。销毁之后,验证者的收入来自小费和出块奖励,抬高 baseFee 对他没有直接好处。对普通人来说,这一点的实际意义是:baseFee 涨了是拥堵的结果,不是谁的决定。
Q: 为什么钱包显示的 Gas 和这里的快照对不上?
答: 因为两者算的不是一个东西。这里显示的是 baseFee,一个链上的客观读数;钱包显示的是估算的总费用,里面含它替你估算的小费,还乘了这笔交易预计消耗的 gasUsed。各家钱包的估算策略也不同:有的偏保守,愿意多给小费换取更快确认;有的偏省钱。两边对不上很正常。
Q: 同样是转账,为什么这次比上次贵这么多?
答: 先分清是哪个数在变。gasUsed 对同类操作基本是固定的(简单转账通常是 21000),所以变的多半是 baseFee 或者小费。如果是 baseFee,那是网络在堵;如果是小费,那是钱包给你调高了排序优先级。还有一种容易忽略的情况:你以为的”转账”其实是一次合约调用(比如转某个代币),那 gasUsed 从一开始就不是同一个量级。
Q: Layer2 的 Gas 为什么便宜那么多?
答: 因为成本结构不一样,不是同一个东西打了折。L2 把大量交易在链下执行,然后把数据批量发布回以太坊主网,主网那部分成本由这一批交易分摊。所以 L2 的费用里含着一块「L1 数据发布成本」,它会随主网的拥堵变化——这也是为什么主网堵的时候,L2 的费用有时也跟着抬。拿主网 Gas 和 L2 Gas 直接比大小,单位一样,含义不一样。
Q: 这个页面的数字多久更新一次?
答: 计划每 24 小时更新一次,标注的「数据截至」就是快照时间,读数取自公共节点的 eth_feeHistory。日期如果不是今天,就把它当历史数据,不要当成当前报价。
Q: 我能自己去查这些数吗?需要写代码吗?
答: 不需要。任何区块浏览器的区块详情页上都有 baseFee 和 gas used,点开一个区块就能看到,这已经够回答”现在堵不堵”。想看一段时间的序列才需要调接口,方法是 eth_feeHistory,字段定义在以太坊的执行层规范里公开。这里只讲怎么读、去哪读,不讲怎么用它省钱抢跑。
参考资料
- 以太坊官方文档 · Gas 与费用 —— baseFee、priorityFee、gasUsed 的标准解释
- EIP-1559 标准原文 —— 费用市场机制、baseFee 调整规则与销毁设计
- Execution APIs 规范 · eth_feeHistory —— 本页数据的取数方法与字段定义
- 以太坊官方文档 · JSON-RPC 接口 —— 公共节点的标准调用方式
- 以太坊官方文档 · Layer 2 与扩容 —— L2 费用结构与 L1 数据发布成本的关系
版本 1.0 · 更新于 2026-07 · 本页快照数据截至 2026-07-17,取自公共节点的 eth_feeHistory,每 24 小时更新;数值只反映以太坊主网某个区块的时点值,不代表当天均值,也不能套用到 L2。
接着看
L2 手续费真比主网便宜吗
2026 年 7 月 17 日的快照中,以太坊主网单笔成本中位数约为 L2 整体的 5.9 倍。L2 成本的两部分、中位数与平均数的差别、单日数据何时会误导判断,以及读数和哪些指标一起看才真正有意义。
链上数据怎么看:先核对哪几个数
同一天同一个来源,Base 的交易笔数是以太坊主网的 4.3 倍,活跃地址却更少。这里讲清活跃地址、交易笔数和两者比值分别说明什么,给出一套固定的核对顺序,以及链上能看到什么、看不到什么。
假空投:骗的不是私钥,是你那一次授权
多数钱包被搬空的案例里,受害者并没有交出私钥,而是在页面上确认了一次授权。approve 给了什么权限、空投投毒怎样引流、签名前如何分清转账和授权,以及发现异常后的止损顺序。