﻿---
title: "Gas 与交易费用"
description: "按分叉版本介绍 gas 单位、固有与执行成本、EIP-1559 费用上限、基础费销毁、优先费、回滚、gas 耗尽、退款、blob gas 和 L2 费用组成。"
image: "https://wiki.fcontext.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://wiki.fcontext.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Gas 与交易费用

> 仅供教育参考，不构成投资或交易建议。费用取决于具体的链、分叉、交易类型、执行路径、状态、费用市场、排序器或构建者政策及纳入时间。

<a id="answer"></a>

## 直接答案

Gas 是协议衡量执行工作量和状态访问的记账单位；gas 费用则是用计费 gas 单位乘以每单位价格得出的货币费用。在采用 EIP-1559 的以太坊上，`effectiveGasPrice = min(maxFeePerGas, baseFeePerGas + maxPriorityFeePerGas)`，执行费为 `gasUsed * effectiveGasPrice`；其中基础费部分被销毁，优先费部分通过区块的费用接收方路径支付。Gas 上限和费用上限授权的是最大值，并非一定会支出的金额。

实际 gas 用量取决于 calldata、操作码路径、内存扩展、冷／热状态访问、存储变更、嵌套调用、预编译合约、成功或失败、退款和生效的分叉。提高价格可以增强交易被纳入的竞争力，却无法修复回滚、gas 上限不足、恶意合约、过时报价或错误 calldata。Blob 交易和许多 L2 还会产生独立的数据费或协议费，不能默认并入 EVM gas。

<a id="mechanism"></a>

## 运行机制

1. 锁定链、分叉、区块或状态标签、交易类型、发送者、nonce、目标地址、转账价值、calldata、访问列表、blob 字段、gas 代币和费用币种。记录报价对应的是 L1 交易、L2 执行、数据发布、提款还是组合路径。
2. 在执行前重建固有 gas：交易信封、calldata 字节成本、合约创建与访问列表费用以及交易类型特有开销。如果 gas 上限低于固有 gas，或发送者无法满足协议的最大成本有效性检查，交易会在纳入执行前被拒绝，而不是纳入后回滚。
3. 按目标分叉追踪执行。测量操作码动态成本、内存扩展、冷／热账户或存储槽、`SSTORE`、调用 gas 转发、价值转移、预编译费用、日志和退款。同一个 ABI 函数在不同状态下可能走不同分支并使用不同 gas。
4. 区分结果。执行成功会提交效果。`REVERT` 会回滚失败作用域，并可能返还该调用帧未使用的 gas；gas 耗尽这一异常停机会通常耗尽分配给该调用帧的 gas。被纳入的顶层失败即使回滚合约状态、价值转移和日志，仍会消耗发送者 nonce 和计费 gas。
5. 为执行 gas 定价。对类型 2 交易，根据基础费、优先费上限和总费用上限计算实际 gas 价格，再把计费 gas 拆分为销毁的基础费与优先费。应区分未使用 gas、未支出的费用上限余量，以及合资格状态清理产生且受生效退款上限约束的协议 gas 退款。
6. 单独计算其他费用市场。Blob 交易除执行 gas 外还支付 `blobGasUsed * blobGasPrice`，并受 `maxFeePerBlobGas` 约束；blob 基础费采用独立调整路径。L2 用户费用可能包括 L2 执行费、压缩后的 L1 数据费或 blob 成本、运营者或协议收费及利润加成；公式与标量参数取决于具体部署和升级。
7. 对账估算、纳入和收据。签名前，按转账价值加授权的最高费用核验余额，在锁定状态下模拟并设置有界费用上限。纳入后，记录 gas 上限、收据 gas 用量、实际价格、基础费、优先费、退款影响、blob gas、L2 费用字段、状态和余额变动；分别处理估算误差、交易替换和最终确定性。

<a id="example"></a>

## 计算示例

- **类型 2 成功交易与上限。** Gas 上限为 `120,000`，gas 用量为 `70,000`，基础费为 `25 gwei`，最高优先费为 `3 gwei`，最高费用为 `40 gwei`。实际价格为 `min(40, 25 + 3) = 28 gwei`；实际费用为 `70,000 * 28 gwei = 0.001960 ETH`，其中 `0.001750 ETH` 被销毁，`0.000210 ETH` 是优先费。执行费授权上限为 `120,000 * 40 gwei = 0.004800 ETH`；未使用的 `50,000 gas` 和未支出的费用上限余量都不是协议状态清理退款。
- **REVERT 与 gas 耗尽。** 两个已纳入调用的 gas 上限均为 `100,000`，实际价格均为 `30 gwei`。调用 A 执行 `REVERT` 时，收据 gas 用量达到 `60,000`，费用为 `60,000 * 30 gwei = 0.001800 ETH`。调用 B 耗尽整个交易 gas 上限，费用为 `100,000 * 30 gwei = 0.003000 ETH`。两次顶层失败都会回滚合约效果并消耗发送者 nonce，但 REVERT 可保留未使用 gas，gas 耗尽则不会。
- **退款上限。** 在限定于 EIP-3529 分叉的教学案例中，执行在退款前消耗 `100,000 gas`，产生 `30,000 gas` 的退款计数器。可应用的最高退款为 `100,000 / 5 = 20,000 gas`，因此计费 gas 为 `100,000 - 20,000 = 80,000 gas`。按 `20 gwei` 计算，费用是 `0.001600 ETH` 而非 `0.002000 ETH`，节省 `0.000400 ETH`；退款规则和合资格操作可能随分叉改变。
- **独立 blob 费用市场。** 假设某 blob 交易使用 `100,000` 执行 gas，价格为 `20 gwei`，并携带两个 blob。按 `131,072 blob gas/blob`，blob gas 用量为 `262,144`；若 blob gas 价格为 `5 gwei`，blob 费用是 `262,144 * 5 gwei = 0.00131072 ETH`。执行费为 `0.002000 ETH`，协议费用合计 `0.00331072 ETH`。这里的 `5 gwei` 仅为示例；blob 费用既不是验证者优先费，也不是 L2 用户的完整端到端费用。

<a id="risks"></a>

## 风险

- 使用错误的链、分叉、gas 代币、交易类型或费用币种。
- 混淆 gas 单位、wei、gwei、ETH 和法币换算。
- 把 gas 上限当成预期或实际费用。
- 无法通过固有 gas 或最大成本的执行前有效性检查。
- 状态、基础费或 calldata 变化后仍依赖过时估算。
- 把 gas 上限设得低于实际执行分支所需用量。
- 误以为提高 gas 价格可以防止合约回滚。
- 混淆 REVERT、gas 耗尽、无效操作码和执行前拒绝。
- 顶层状态为 `1` 时漏查已被捕获的子调用失败。
- 错算冷／热状态访问或使用不完整的访问列表。
- 忽略内存扩展、调用 gas 转发、预编译或日志成本。
- 使用过时的存储退款规则或超过退款上限。
- 把未使用 gas 或费用上限余量算作协议 gas 退款。
- 将最高费用设得低于纳入区块的基础费。
- 在不了解构建者或排序器政策时过付优先费。
- 持有其他资产却没有原生 gas 代币。
- 遗漏 blob gas、blob 费用上限或数据可用性费用。
- 把某个 L2 的执行、数据、标量和运营者费用公式视为通用公式。
- 忽略交易替换、nonce、交易丢弃和余额预留的竞态。
- 把已付费或成功的交易当作合约安全或最终确定的证明。

<a id="misconceptions"></a>

## 常见误区

- Gas 按转账价值的百分比收取。
- 提高 gas 上限必然增加实际收费。
- 较高的最高费用或优先费能保证执行成功。
- 所有未使用的授权额度和状态清理退款都是同一种机制。
- L2 费用只等于本地 EVM gas，blob 费用就是普通执行 gas。

<a id="related"></a>

## 相关主题

- [Blob 费用与 Rollup 成本](/zh-cn/crypto/blob-fee-rollup-cost/)
- [以太坊虚拟机](/zh-cn/crypto/evm/)
- [交易模拟](/zh-cn/crypto/transaction-simulation/)

<a id="sources"></a>

## 来源

- [Ethereum gas and fees: technical overview](https://ethereum.org/developers/docs/gas/) - Ethereum.org（查阅日期：2026-08-12）
- [Transactions](https://ethereum.org/developers/docs/transactions/) - Ethereum.org（查阅日期：2026-08-12）
- [EIP-1559: Fee market change for ETH 1.0 chain](https://eips.ethereum.org/EIPS/eip-1559) - Ethereum Improvement Proposals（查阅日期：2026-08-12）
- [EIP-2929: Gas cost increases for state access opcodes](https://eips.ethereum.org/EIPS/eip-2929) - Ethereum Improvement Proposals（查阅日期：2026-08-12）
- [EIP-3529: Reduction in refunds](https://eips.ethereum.org/EIPS/eip-3529) - Ethereum Improvement Proposals（查阅日期：2026-08-12）
- [EIP-4844: Shard Blob Transactions](https://eips.ethereum.org/EIPS/eip-4844) - Ethereum Improvement Proposals（查阅日期：2026-08-12）
- [Execution Engine](https://specs.optimism.io/protocol/exec-engine.html) - OP Stack Specification（查阅日期：2026-08-12）
- [Transaction fees on OP Mainnet](https://docs.optimism.io/op-stack/transactions/fees) - Optimism Documentation（查阅日期：2026-08-12）

Source: https://wiki.fcontext.com/zh-cn/crypto/gas-fee/index.mdx
