帳戶與安全

Gas 與網路手續費怎麼計算?看懂 Base fee、小費與 Max fee

以太坊類網路的手續費是「實際用掉的 Gas × 單價」,單價由協議決定的基礎費加上你給的小費組成。本文依官方文件與 EIP-1559 說明計算方式、送出前的估算步驟、送出後的對帳方法,並補充比特幣按 sat/vB 計費的算法。

Gas 與網路手續費怎麼計算?看懂 Base fee、小費與 Max fee

在以太坊這類網路上送出一筆交易,手續費不是一個固定價目,而是「這筆交易用掉多少計算量」乘上「每單位計算量你願意付多少」。錢包介面上同時出現 Gas limit、Base fee、Priority fee、Max fee 四個欄位,真正扣掉的金額只由其中幾個決定。本文用以太坊官方文件與 EIP-1559 規範說明計算方式,教你送出前自己估一次、送出後在區塊瀏覽器上對帳,並補充比特幣按費率計費的算法。

適用讀者與前置條件

適合三種情況:第一次在自託管錢包裡看到 Gas 欄位、不確定該不該改;想在送出前估出最壞情況要付多少;或者已經送出,想確認實際扣款是否合理。

請先準備:你要使用的網路名稱、該網路原生幣的餘額(以太坊主網是 ETH),以及一個能查交易明細的區塊瀏覽器。如果你還在猶豫要用哪條鏈轉帳,先看USDT 轉帳網路的相容性、費用與速度比較,本文只處理「選定網路之後,手續費怎麼算」。

核心概念:用量 × 單價,單價再拆成兩段

名詞 意思 由誰決定
Gas 衡量執行操作所需計算量的單位 交易內容決定;一般 ETH 轉帳需要 21,000
Gas limit 你允許這筆交易最多消耗多少 Gas 你(錢包通常自動估算)
Base fee(基礎費) 每單位 Gas 的最低價,交易要有效至少得付這麼多 協議依前面區塊的擁擠程度計算,付出後會被銷毀
Priority fee(小費) 在基礎費之上額外給驗證者的單價 你
Max fee(maxFeePerGas) 你願意付的每單位 Gas 總價上限 你
gwei 計價單位,1 gwei = 0.000000001 ETH 固定換算

一句話記住:實付手續費 = 實際用掉的 Gas × (基礎費 + 實際給出的小費)。Gas limit 和 Max fee 都是「上限」,不是實付。

真實畫面:官方文件的計算公式

以太坊官方開發者文件 How are gas fees calculated 段落(英文介面),列出公式 units of gas used × (base fee + priority fee),以及 21,000 × (10 + 2) = 252,000 gwei 的例子

圖為 ethereum.org 開發者文件「Gas and fees」頁面的計算段落。文件舉的例子是:一般 ETH 轉帳需要 21,000 單位 Gas,基礎費 10 gwei、小費 2 gwei,總手續費 = 21,000 × (10 + 2) = 252,000 gwei,也就是 0.000252 ETH。其中基礎費部分 0.00021 ETH 被銷毀,小費部分 0.000042 ETH 歸驗證者。

同一份文件還說明了兩件容易被忽略的事:

  • 手續費不論交易成功或失敗都要付。
  • 基礎費由前面的區塊決定:上一個區塊用量高於目標(Gas 上限的一半)就調升,低於目標就調降,每個區塊最多變動 12.5%。所以錢包能預先知道「下一個區塊的基礎費最高會是多少」。

真實畫面:Max fee 怎麼變成實付單價

EIP-1559 規範的參考實作程式碼(英文介面),顯示 priority_fee_per_gas 取 max_priority_fee_per_gas 與 max_fee_per_gas 減去 base fee 兩者的較小值,以及 effective_gas_price 等於優先費加基礎費

圖為 EIP-1559 規範的參考實作片段(最右側長行被頁面寬度截斷)。這幾行把錢包上的欄位怎麼互相作用寫得很清楚:

  1. 實際小費 = min(你設的最高小費, Max fee − 當下基礎費)。基礎費先扣,剩下的空間才輪到小費。
  2. 實付單價(effective gas price)= 實際小費 + 基礎費。
  3. 送出時先按 Gas limit × 實付單價 預扣,餘額不夠就是無效交易;執行完把沒用完的 Gas 退回。
  4. 驗證者只拿到小費,基礎費不給任何人(被銷毀)。

用官方例子延伸一次:若你設定 Max fee 30 gwei、最高小費 2 gwei,基礎費 10 gwei 時,實際小費 = min(2, 30 − 10) = 2,實付單價 12 gwei,結果和上面的 252,000 gwei 相同。若基礎費漲到 29 gwei,實際小費 = min(2, 1) = 1,實付單價 30 gwei。若基礎費高於 30 gwei,這筆交易就進不了區塊,只能等基礎費回落或重新出價。

可執行步驟:送出前自己估一次

  1. 確認手續費用什麼幣付。以太坊主網用 ETH;轉 USDT 等代幣時,手續費仍用 ETH 付,代幣本身不能拿來付 Gas。
  2. 打開錢包的進階設定,記下 Gas limit、Max fee、最高小費三個值。一般 ETH 轉帳的 Gas limit 應是 21,000;呼叫合約(轉代幣、兌換)會更高,以錢包估算為準。
  3. 算最壞情況:Gas limit × Max fee。例如 21,000 × 30 gwei = 630,000 gwei = 0.00063 ETH。這是你的原生幣餘額至少要留的量。
  4. 算預期金額:預估用量 × (目前基礎費 + 最高小費)。目前基礎費可在區塊瀏覽器或錢包顯示中看到。
  5. 把 gwei 換成 ETH(除以 10 億),再按當下價格換算成法幣,判斷值不值得現在送。
  6. 不急的交易,可以等網路較空閒時再送;基礎費每個區塊都在調整,同一筆交易不同時段的成本可能差很多。

比特幣的算法:費率 × 虛擬大小

比特幣沒有 Gas。手續費 = 費率(sat/vB,每虛擬位元組多少聰)× 交易的虛擬大小(vbytes)。依 BIP141 定義,虛擬大小 = 交易權重 ÷ 4,無條件進位。交易的輸入越多(例如把很多筆小額零錢合併送出),虛擬大小越大,手續費越高,和轉出金額大小無關。

mempool.space 首頁(英文介面)的待確認區塊與 Transaction Fees 面板,顯示 No Priority、Low、Medium、High Priority 四檔 sat/vB 費率及對應美元估算

圖為 2026 年 9 月 29 日截取的 mempool.space 首頁。左側綠色方塊是等待打包的區塊,每塊標示中位費率與費率範圍;右側紫色方塊是已確認的區塊。下方 Transaction Fees 面板當時顯示四檔建議費率:0.2、1、2、3 sat/vB。這些數字每分鐘都在變,只代表截圖當下,請以你送出時的即時數字為準。

計算示範(假設值):一筆 200 vB 的交易選 2 sat/vB,手續費 = 400 sat = 0.000004 BTC。

其他網路:先查它用什麼計費模型

不同鏈的計費方式差異很大,不要套用以太坊的直覺:

  • Solana:每個簽名有固定基礎費,另可加依運算單位計價的優先費,詳見 Solana 官方文件的費用說明。
  • TRON:用頻寬與能量兩種資源計費,帳戶資源不足時才燒 TRX 補足,詳見 TRON 開發者文件的資源模型。
  • 以太坊二層網路:通常除了自身執行費,還包含把資料寫回以太坊主網的成本,以各網路官方文件為準。

核對方法:送出後在瀏覽器上對帳

交易上鏈後,用交易識別碼在區塊瀏覽器查詢(查詢方式見用 TxID 查詢轉帳進度),找這幾個欄位:

  • Gas Limit & Usage:實際用掉的 Gas 是否低於上限。
  • Gas Price 或 Effective Gas Price:實付單價。
  • Base fee、Max fee、Max priority fee:可還原上面的 min() 計算。
  • Transaction Fee:應等於「實際用掉的 Gas × 實付單價」。自己乘一次,對得上就代表扣款正確。

比特幣則核對 Fee、vsize(或 Virtual size)與 Fee rate 三欄:Fee ≈ Fee rate × vsize。交易還沒確認、想知道要等多久,可參考區塊確認數與等待確認的排查順序。

常見錯誤與失敗處理

狀況 原因 處理方式
轉代幣時提示餘額不足,但代幣明明夠 原生幣不夠付 Gas 先補足該網路的原生幣(以太坊主網為 ETH),留出「Gas limit × Max fee」的量
交易失敗卻仍被扣手續費 執行途中 Gas 用完(out of gas)或合約回滾,已用的 Gas 照付 查看瀏覽器的失敗原因;重新送出時不要手動把 Gas limit 調得比錢包估算更低
Gas limit 設太低直接送不出 低於交易所需量,會在驗證階段被拒,不會上鏈也不扣費 恢復錢包的自動估算值
交易一直待確認 Max fee 低於當下基礎費,或小費太低 用錢包的「加速」以同一個 nonce 提高出價重新送;或用「取消」送一筆同 nonce、給自己 0 金額的替代交易
比特幣交易卡住 費率低於目前區塊門檻 若原交易啟用 RBF,可用更高費率替換;收款方也可用 CPFP(花掉這筆未確認款並付高費率)帶動確認
平台提領費和鏈上手續費對不上 平台的提領費由平台自行訂定,可能是固定金額 以該平台提領頁顯示的金額為準;鏈上實付可在瀏覽器查到,兩者不必相等

加速或取消都是送出新交易,本身也要付手續費;如果原交易在你操作前已被打包,替代交易會失效,不會重複扣款。

風險邊界

  • 錢包顯示的是估算。基礎費每個區塊都可能變動,實付以鏈上紀錄為準。
  • 手續費只是轉帳成本的一部分。兌換代幣時還有價格滑動與協議費,本文不涵蓋。
  • 任何要求你「先付一筆 Gas 或手續費才能解鎖、領取、提出資金」的網站或私訊,都應視為詐騙。正常的鏈上手續費由你自己的錢包在送出交易時支付,不需要另外轉給任何人。
  • 本文的計算以以太坊主網與比特幣的公開規範為準,其他網路請以其官方文件為準。

常見問題

Max fee 設很高會不會被多扣錢?

不會。依 EIP-1559,實付單價是基礎費加上實際小費,超出的部分會退回。但 Max fee × Gas limit 的金額必須先在餘額裡,設太高可能讓你看起來「餘額不足」。

為什麼同一筆轉帳,今天和昨天手續費差很多?

用量通常一樣,差在單價。基礎費隨網路擁擠程度逐區塊調整,每塊最多 ±12.5%,連續擁擠時會快速上升。

小費設 0 可以嗎?

技術上有效,但官方文件指出只付基礎費的交易不太可能被打包,因為驗證者沒有動機優先收錄它。

轉 USDT 為什麼要付 ETH?

在以太坊主網上,USDT 是一個代幣合約,轉帳是呼叫合約的操作,手續費必須用網路原生幣 ETH 支付。其他鏈同理,手續費用各鏈的原生資源支付。

比特幣轉帳金額越大,手續費越高嗎?

不是。比特幣手續費看的是交易的虛擬大小和費率,主要受輸入、輸出數量影響,與金額無關。

官方與一手來源

  • ethereum.org:Gas and fees(計算公式、基礎費、小費、Gas limit)https://ethereum.org/en/developers/docs/gas/
  • EIP-1559:Fee market change for ETH 1.0 chain(參考實作與參數)https://eips.ethereum.org/EIPS/eip-1559
  • BIP141:Segregated Witness(虛擬大小定義)https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki
  • mempool.space:比特幣即時費率與區塊 https://mempool.space/
  • Solana 官方文件:Fees https://solana.com/docs/core/fees
  • TRON 開發者文件:Resource Model https://developers.tron.network/docs/resource-model