你的錢包已經準備好發送,可它沒有給你一個乾淨的確認按鈕,而是在最高交易費旁邊掛了一條警告。此刻還甚麼都沒有失敗。那個數字是你正在授權的一個上限,而不是你已經同意支付的一筆費用,警告說的是這個上限越過了錢包一直盯着的某條線。它越過的是哪條線,才是「這筆交易根本發不出去」與「這筆交易只是看着讓人不舒服」之間的區別。
最高交易費到底是甚麼
產生那個數字的是兩個設置,而它們裏的哪一個都不是價格。第一個是 gas 上限,ethereum.org 把它定義為你願意在一筆交易上消耗的 gas 的最大量。第二個是每單位 gas 的最高費,那份文檔把它描述成你願意為自己這筆交易被執行而支付的一個上限。把兩者相乘,你就得到了最高交易費。
所以它是一個由兩個最壞情況搭出來的最壞情況。它回答的是這件事可能要花你多少錢,而不是它將要花你多少錢。拿一筆普通的以太轉賬來說,它需要 21,000 單位 gas 的 gas 上限,再假設你的錢包把每單位的最高費設成了 30 gwei。上限就是 0.00063 ETH,而錢包給你看的正是這個數。
錢包展示上限而不是估算值,是因為上限才是在網絡肯看這筆交易之前、必須已經躺在你賬戶裏的那個金額。界面上擺在它旁邊、一切更友善的數字,都是預測。
為甚麼這個數比你預期要付的費用大
自 EIP-1559 起,你為每單位 gas 支付的價格分成兩部分:一筆由網絡設定並銷毀的基礎費,以及一筆歸打包你的人的優先費。你的最高費,是罩在這兩者之和上的天花板。把它們連起來的規則,開發者文檔寫得很直白:最高費必須超過基礎費與小費之和,而發送方會被退還最高費與基礎費加小費之和的差額。想要這兩個部分背後的完整機制,可以看我們關於 gas 費的講解。
給同一個例子配上數字。如果你的交易被打包時基礎費落在 12 gwei,而你的小費是 1 gwei,有效價格就是 13 gwei,於是這筆轉賬花掉 0.000273 ETH。剩下的 0.000357 ETH 從來沒有被花掉。它被授權了、在交易掛起期間被凍在你夠不着的地方,然後被釋放。
這就是為甚麼留餘量其實很便宜、看上去卻很貴。把你的上限翻一倍,並不會讓費用翻一倍,因為 gas 費的定價方式是在打包那一刻由網絡定下的,而不是由你的上限定的。上限翻倍,翻的只是授權額,而授權額正是屏幕上的那個數。
錢包會拿你的上限跟三樣東西比
| 上限被拿來比的東西 | 錢包為甚麼要標出來 | 會不會擋住發送 |
|---|---|---|
| 你的賬戶餘額 | 餘額要同時蓋住轉賬金額與整個上限 | 會 |
| 你正在發送的金額 | 費用比它搬動的那筆錢還大,值得再看一眼 | 不會 |
| 錢包自己的費用建議 | 一個遠高於當前行情的上限,讀起來像多打了一位數 | 不會 |
只有第一行是協議的規則。另外兩行是錢包在替你做判斷,在你動手去找某個設置改之前,這一點值得先知道:這三條警告裏有兩條是可以讀懂、理解,然後直接確認過去的。
超過餘額,才是真正攔住你的那一條
餘額這一關寫在規範裏:它斷言簽名者的餘額至少要等於 gas 上限乘以每單位 gas 的最高費,再加上正在發送的金額。網絡查的是上限而不是預期成本,因為在做這個檢查的那一刻,還沒有人知道最終打包區塊裏的基礎費會是多少。
由此而來的實際後果常讓人意外:你沒法在一筆交易裏把餘額全部發走,而差的那一塊並不是費用,是費用之上的那個上限。錢包上的全部發送按鈕留下一個彆扭的零頭,做的就是這件事。調低每單位 gas 的最高費會縮小上限、騰出空間,但只能降到某個地板為止,下一節講的就是你降到地板以下會發生甚麼。
超過你正在發送的金額,是一次判斷題
在一條繁忙的鏈上,一筆小額轉賬花掉的錢可能比它搬動的還多。這不是故障,也不是哪裏配錯了的跡象。網絡給計算與區塊空間定價,而不給騎在上面的那筆支付的大小定價,所以在同樣兩個賬戶之間,轉幾個單位的價值和轉一筆巨款,成本是一樣的。
這條警告真正在告訴你的是:這筆轉賬在此刻不划算。答案是等一個清淨些的時段、把幾筆支付合併成一筆交易,或者把這類活動挪到更便宜的網絡上。把費用設置改高或改低,對這些都沒有幫助,因為你發送的金額根本就不是費用的輸入項。
相反的抱怨:上限低於基礎費
同一個設置在被設得太低時,會產生相反的警告。規範要求每單位 gas 的最高費至少要等於所在區塊的基礎費,所以一個低於當前基礎費的上限,會讓你的交易沒有資格被納入。它不會大聲失敗。它會待在內存池裏,看着一個又一個區塊從它身邊過去。
等基礎費自己降下來迎接你,比聽上去要慢。基礎費每個區塊最多變動 12.5%,也就是它上一個值的八分之一,因為 EIP-1559 裏那個變動分母是八。所以一個遠低於當前基礎費的上限,不會在接下來一兩個區塊裏被夠到,而在出塊快的鏈上,那仍然是很長一段甚麼都不發生的時間。
補救辦法是把上限抬上去,而不是等它自己變得夠用。在賬戶模型的鏈上,這意味着用同一個 nonce、帶一筆確實更高的費用重發。在比特幣上,對應的動作是手續費替換,也就是把同一筆交易帶着更大的費用重新廣播出去。
gas 上限、最高費與優先費:該改哪一個
| 設置 | 它給甚麼設上限 | 甚麼時候該調高 | 調高它會發生甚麼 |
|---|---|---|---|
| gas 上限 | 這筆交易被允許消耗的工作量 | 交易的 gas 不夠用了 | 上限與餘額那一關一起變大 |
| 每單位 gas 的最高費 | 每單位 gas 的總價格 | 你的上限低於基礎費 | 授權額變大,預期費用不變 |
| 優先費 | 你付給打包你的驗證者的小費 | 你需要更快被納入 | 你實際付出的錢變多 |
最後一列裏的那種不對稱,正是關鍵。調高最高費,動的是上限,預期費用留在原地;而調高小費,動的是費用本身。所以一條關於上限的警告並不是一條關於價格的警告,把它當價格看,會讓人去削錯設置。
在這種情況下應當別碰的設置是 gas 上限。它管的是這筆交易被允許做多少工作,而不是那些工作值多少錢,所以為了消掉一條費用警告去調高它,只會把上限與餘額要求一起撐大,而對能不能被納入毫無作用。沒用掉的 gas 會被退還,這就是為甚麼一個過大的上限本身不構成一筆費用,但它仍然是一份你已經簽過字的授權。
退還這件事蓋不住的,是失敗。一筆跑起來之後已回退的交易,仍然要為它停下來之前做過的工作付錢,所以在合約調用上,那個上限不像在簡單轉賬上那樣,只是一個純理論的數字。
小結
最高交易費是 gas 上限乘以每單位 gas 的最高費,它是一個上界而不是一個價格。你的賬戶必須能蓋住它,它與有效價格之間的差額會回到你手裏,而錢包關於它的警告,是一條關於授權額有多大的警告。
讀這條警告的方法,是問它由哪一次比較觸發。跟餘額比,它是硬性攔截,要麼上限降下來、要麼金額降下來。跟支付金額比,它是在提醒你今天這筆轉賬值不值得做。跟錢包自己的建議比,它是在替你檢查一個打錯的設置。而當抱怨反過來、上限低於基礎費時,並沒有甚麼東西卡住到壞掉的程度,因為一筆網絡不肯給它定價的交易,壓根就沒有進過隊列。想繼續打好這些基礎,請追蹤 Bitbase(幣貝)學院的更多內容。
相關閱讀
幣貝上與本主題相關的其他文章:
- 加密波動率指數解析:BVIV、EVIV 與 CVI 入門
風險披露:本文為 Bitbase(幣貝)學院的科普內容,僅供教育與資訊參考,不構成任何投資、交易、稅務或財務建議。加密資產波動劇烈,請自行評估風險。本文撰寫於 2026 年 9 月,請以官方最新資訊為準。
參考資料
[1] ethereum.org,開發者文檔,Gas and fees ethereum.org
[2] Ethereum Improvement Proposals,EIP-1559: Fee market change for ETH 1.0 chain,狀態 Final eips.ethereum.org
[3] ethereum/execution-specs,src/ethereum/forks/london/fork.py,check_transaction 函數(標籤 v2.20.0,提交 2004296) github.com






