在以太坊生態中,無論是發送代幣、交互智能合約還是參與DeFi協議,交易都是核心操作,與中心化系統不同,以太坊作為一個去中心化的區塊鏈網絡,交易的狀態并非即時且明確,用戶發送一筆交易后,常常會困惑:我的交易成功了嗎?被礦工/驗證者打包了嗎?卡在哪個環節了?本文將詳細解析以太坊交易的各種狀態,以及如何準確判斷交易所處的階段。

以太坊交易的生命周期
要判斷交易狀態,首先需要了解一筆以太坊交易從發送到最終確認的完整生命周期:
- 創建與簽名 (Created and Signed):用戶通過錢包(如MetaMask)創建一筆交易,指定接收方、金額、gas limit、gas price(或優先級費用)等參數,并用私鑰簽名。
- 廣播到網絡 (Broadcast to Network):簽名后的交易被發送到以太坊網絡中的節點。
- 進入內存池 (Mempool):網絡中的節點接收到交易后,會對其進行驗證(如格式是否正確、 nonce 是否正確、余額是否充足等),驗證通過的交易會被節點放入其內存池(Mempool),等待被礦工(PoW)或驗證者(PoS)打包。
- 被打包進區塊 (Packed in a Block):礦工/驗證者從Mempool中選擇交易(通常按gas price高低排序),將它們打包進一個新的區塊,并嘗試將該區塊添加到區塊鏈上。
- 區塊確認 (Block Confirmation):一個新的區塊被添加到區塊鏈后,后續的區塊會不斷在該區塊之上進行延伸,每增加一個后續區塊,該區塊中的交易就多一次確認,6-12次確認后,交易被認為是最終安全的。
- 交易執行與狀態更新 (Transaction Execution & State Update):交易在區塊中被執行,改變以太坊的狀態(如賬戶余額、合約存儲等),執行成功或失敗的結果會被記錄下來。
以太坊交易的核心狀態
基于上述生命周期,以太坊交易可以處于以下幾種核心狀態:
-
待處理 (Pending):
- 含義:交易已被廣播到網絡并進入Mempool,但尚未被任何區塊打包。
- 判斷方法:
- 以太坊瀏覽器:在Etherscan、Etherscan等區塊瀏覽器中輸入交易哈希,狀態會顯示為“Pending”。
- 錢包:錢包界面通常會顯示“等待發送”或類似的“Pending”狀態。
- 節點API:通過
eth_getTransactionByHashRPC調用,如果返回結果中blockNumber字段為null,則交易處于Pending狀態。
-
成功 (Success / Confirmed):
- 含義:交易已被打包進區塊,并且該區塊得到了足夠數量的后續區塊確認(通常為6次以上),交易執行成功,狀態已更新。
- 判斷方法:
- 以太坊瀏覽器:狀態顯示為“Success”,并且有多個確認數(如“Confirmations: 12”)。
- 錢包:錢包會顯示交易成功,并更新相關余額或狀態。
- 節點API:
eth_getTransactionByHash返回結果中blockNumber不為null,且status字段為0x1(表示成功),通過eth_getTransactionReceipt可以獲取到更多執行詳情,包括status字段(0x1為成功)和gasUsed等。
-
失敗 (Failed):

- 含義:交易被打包進區塊,但在執行過程中由于某種原因出錯(如gas不足、合約邏輯錯誤、nonce錯誤、轉賬地址無效等),導致交易執行回滾,狀態未改變,但消耗的gas不會被退還(只有未使用的gas會被退還)。
- 判斷方法:
- 以太坊瀏覽器:狀態顯示為“Failed”,并通常會顯示錯誤信息(如“Out of gas”、“Revert”等)。
- 錢包:錢包會提示交易失敗。
- 節點API:
eth_getTransactionReceipt返回結果中status字段為0x0(表示失敗),這是判斷交易是否執行成功的最直接方式。
-
已確認但未執行 (Unexecuted in Confirmed Block - 極少見):
- 理論上:交易被打包進區塊,但由于區塊重組(reorg),該區塊被從鏈上移除,交易可能重新回到Pending狀態,或者如果重組發生在更深層次,交易可能被視為“丟失”。
- 實踐中:在以太坊PoS后,區塊重組的概率大大降低,這種情況較為罕見。
-
交易被丟棄 (Dropped):
- 含義:交易在Mempool中停留時間過長(超過一定閾值,或gas price過低導致被優先級更低的交易擠出),或者由于網絡擁堵、節點策略等原因,被節點從Mempool中移除。
- 判斷方法:交易哈希在瀏覽器中無法查到,或查詢顯示“Transaction not found”,錢包可能仍會短暫顯示Pending,然后消失。
如何判斷以太坊交易狀態:實用指南
綜合以上信息,以下是判斷以太坊交易狀態的實用步驟:
-
首選工具:以太坊區塊瀏覽器:
- 這是最直觀、最常用的方法,復制交易哈希(TX Hash),粘貼到Etherscan(以太坊主網)或對應測試網的瀏覽器中。
- 關注“Status”字段:Pending、Success、Failed。
- 關注“Confirmations”字段:確認次數越多,交易越安全。
-
使用你的錢包:

大多數錢包(MetaMask、Trust Wallet等)會實時同步交易狀態,并在界面上顯示“待處理”、“成功”、“失敗”等提示。
-
通過節點API查詢(適用于開發者):
- 查詢交易詳情:使用
eth_getTransactionByHash方法。- 如果返回
blockNumber: null,則為Pending。 - 如果返回
blockNumber不為null,則已打包,需進一步查詢收據。
- 如果返回
- 查詢交易收據(關鍵):使用
eth_getTransactionReceipt方法。status: "0x1"(或1):交易成功執行。status: "0x0"(或0):交易執行失敗。- 如果收據不存在,可能交易仍在Pending或已被丟棄。
- 查詢交易詳情:使用
-
注意Gas Price和網絡擁堵:
在網絡擁堵時,gas price較低的交易可能長時間處于Pending狀態,甚至被丟棄,可以通過提高gas price(使用EIP-1559的優先級費用)來加速交易。
-
檢查Nonce:
如果賬戶的nonce(交易序號)不連續(發送了nonce為3的交易后直接發送了nonce為5的交易,跳過了4),nonce為4及之后的交易將一直處于Pending狀態,直到nonce為4的交易被處理或被丟棄。
準確判斷以太坊交易狀態對于用戶來說至關重要,理解交易從創建到確認的完整生命周期,以及“Pending”、“Success”、“Failed”等核心狀態的含義,是正確處理交易問題的基礎,區塊瀏覽器是最便捷的查詢工具,而節點API則為開發者提供了更強大的查詢能力,在實際操作中,保持對網絡擁堵、Gas Price和Nonce的關注,能夠有效避免交易卡頓或失敗的情況。
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。



