﻿---
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-tw/crypto/blob-fee-rollup-cost/)
- [以太坊虛擬機](/zh-tw/crypto/evm/)
- [交易模擬](/zh-tw/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-tw/crypto/gas-fee/index.mdx
