市值: $2.827T -4.84%
體積(24小時): $188.512B 68.83%
恐懼與貪婪指數:

28 - 害怕

  • 市值: $2.827T -4.84%
  • 體積(24小時): $188.512B 68.83%
  • 恐懼與貪婪指數:
  • 市值: $2.827T -4.84%
加密
主題
加密植物
資訊
加密術
影片
頂級加密植物

選擇語言

選擇語言

選擇貨幣

加密
主題
加密植物
資訊
加密術
影片

為什麼我的錢包顯示“交易失敗”但我仍然支付了汽油費?

A "failed" blockchain transaction means the EVM rejected execution mid-process—gas is consumed for all completed steps, no full refunds occur, and the nonce still increments.

2025/12/13 20:20

了解區塊鍊網絡中失敗的交易

1. 標記為“失敗”的交易意味著以太坊虛擬機(EVM)或等效執行環境在完成其預期邏輯之前拒絕了該操作。這種拒絕發生在執行階段,而不是提交之前。

2. 每個計算步驟都會消耗 Gas 費用,包括驗證檢查、存儲訪問和操作碼執行。即使合約恢復或耗盡 Gas,這些執行的步驟也是不可逆轉且不可退款的。

3. 網絡不區分“成功意圖”和“已執行工作”。無論最終狀態是否發生變化,礦工或驗證者都會因處理時間和使用的資源而獲得補償。

4. 常見原因包括餘額不足、函數參數不正確、智能合約中的 require() 或 revert() 語句失敗以及觸發顯式恢復的整數溢出。

5. 用戶經常將故障誤解為網絡級錯誤,而實際上它反映了旨在保持完整性和防止無效狀態轉換的故意合約行為。

EVM 兼容鏈中的 Gas 費用機制

1. Gas 按單位定價並乘以消耗的總單位。費用是在交易提交時從發送者的帳戶中扣除,而不是在交易成功時扣除。

2.直到故障點為止使用的所有 Gas 都會被永久消耗——除非觸髮帶有原因字符串的特定恢復並且在恢復指令後 Gas 仍然存在,否則不會發生部分退款。

3. 如果一筆交易耗盡了 Gas,則將消耗指定 Gas 限額的 100%。如果它顯式地恢復(例如,通過 revert() 或 require(false)),未使用的 Gas 將被退還——但調用該函數和執行先前操作碼的基本成本仍然不可退還。

4. 像 Tenderly 或 Blocknative 這樣的交易模擬工具可以在廣播之前預覽 Gas 使用情況和潛在的恢復,但由於動態的鏈上條件,它們不能保證相同的結果。

5. 錢包界面很少顯示確切的恢復原因,除非節點支持 eth_call 跟踪或使用完整的調試輸出在本地模擬交易。

智能合約恢復行為及其影響

1. Solidity的revert()、require()和assert()語句會停止執行並回滾狀態更改,但它們並不能消除恢復之前執行的操作的gas消耗。

2.使用自定義錯誤消息(在 Solidity 0.8.4+ 中引入)進行恢復仍然會產生編碼和發出該消息的 Gas 成本 - 通常會在基準執行之外添加 100-300 個 Gas 單位。

3. 由於恢復後 Gas 退款的計算方式發生變化,在伊斯坦布爾硬分叉之前部署的合約在恢復條件下的行為可能會有所不同。

4. OpenZeppelin 的 SafeERC20 或 ReentrancyGuard 等第三方庫引入了額外的檢查,增加了 Gas 開銷並擴大了早期恢復的表面積。

5. 對不受信任合約的外部調用會增加風險:即使你的交易邏輯是健全的,被調用合約的恢復也會級聯並導致你的整個交易失敗並消耗gas。

錢包界面限制和用戶誤解

1. 大多數消費者錢包依賴 eth_getTransactionReceipt 來確定成功狀態,將 status == 0x0 解釋為“失敗”,而不暴露底層恢復數據。

2.短語“交易失敗”是一個 UI 抽象,它並不表示網絡擁塞、RPC 失敗或錢包錯誤,除非伴隨著特定的錯誤代碼,如“資金不足”或“nonce 太低”。

3. 一些錢包會抑制低級 EVM 錯誤,以避免壓垮用戶,用通用標籤替換“執行已恢復:ERC-20 轉賬金額超出餘額”等技術消息。

4. 即使發生故障,事務哈希在瀏覽器上仍然有效且可見,允許用戶檢查跟踪日誌、存儲讀取和堆棧跟踪 - 儘管這需要熟悉技術和外部工具。

5. 硬件錢包集成有時會增加延遲或簽名不匹配,從而導致靜默預執行失敗,與錢包 UI 中的鏈上恢復無法區分。

常見問題解答

問:如果交易失敗,我可以拿回我的 Gas 費嗎?天然氣永遠不會全額退還。僅返回顯式 revert() 或 require() 後未使用的氣體。恢復前的基本執行成本和 Gas 消耗仍被扣除。

問:為什麼 MetaMask 顯示“失敗”而 Etherscan 顯示“成功”?這種差異通常源於緩存延遲或 RPC 端點不匹配。 Etherscan 顯示規範收據; MetaMask 可能會反映陳舊或分叉的視圖,直到確認深度增加。

問:交易失敗會影響我的錢包隨機數嗎?是的。每個簽名的交易都會增加發送者的隨機數,無論是成功還是恢復。後續交易必須使用下一個連續的隨機數才能被接受。

問:如何找到我的交易被還原的確切原因?使用具有跟踪功能的塊瀏覽器(例如​​,Tenderly、Blockscout),或使用 Hardhat-node 或帶有 --debug 標誌的 Foundry 的強制發送來重播交易,以檢查內部調用並恢復字符串。

免責聲明:info@kdj.com

所提供的資訊並非交易建議。 kDJ.com對任何基於本文提供的資訊進行的投資不承擔任何責任。加密貨幣波動性較大,建議您充分研究後謹慎投資!

如果您認為本網站使用的內容侵犯了您的版權,請立即聯絡我們(info@kdj.com),我們將及時刪除。

相關知識

如何為Bitcoin隱私生成新的接收地址?

如何為Bitcoin隱私生成新的接收地址?

2026-01-28 13:00:19

了解 Bitcoin 地址重用風險1. 在多個交易中重複使用相同的 Bitcoin 地址會將交易歷史記錄暴露給公共區塊鏈分析工具。 2. 鏈接到重複使用地址的每筆交易都可以聚合,以估計錢包餘額並推斷用戶行為模式。 3. Blockstream Explorer 或 Mempool.space 等區塊...

如何通過錢包鏈接查看 Etherscan 上的交易歷史記錄?

如何通過錢包鏈接查看 Etherscan 上的交易歷史記錄?

2026-01-29 02:40:09

訪問錢包交易歷史記錄1. 使用安全且更新的網絡瀏覽器導航至 Etherscan 官方網站。 2. 找到位於主頁頂部中心顯著位置的搜索欄。 3. 將完整的以太坊錢包地址(包含以“0x”開頭的 42 個字母數字字符)粘貼到搜索字段中。 4. 按 Enter 或單擊放大鏡圖標開始查找。 5. 系統加載一個...

如何在新設備上恢復 Trezor 錢包?

如何在新設備上恢復 Trezor 錢包?

2026-01-28 06:19:47

了解恢復過程1. Trezor 設備依賴於初始設置期間生成的 12 或 24 字恢復種子。該種子是您錢包私鑰的唯一加密表示。 2. 恢復短語不存儲在 Trezor 服務器或云中。它僅存在於用戶實際寫下或安全離線存儲的地方。 3. 恢復過程中不需要任何密碼、PIN 或生物識別數據來替代對這一確切單詞序...

如何在 Temple Wallet 中委託 Tezos (XTZ) 質押?

如何在 Temple Wallet 中委託 Tezos (XTZ) 質押?

2026-01-28 11:00:31

訪問鎖倉界面1. 打開 Temple Wallet 瀏覽器擴展程序或移動應用程序,並確保您的錢包已解鎖。 2. 導航至主儀表板,其中突出顯示您的 XTZ 餘額。 3. 找到並點擊 XTZ 餘額旁邊的“質押”按鈕 — 這將啟動委託流程。 4. 確認您正在查看正確的網絡:Mainnet。測試網上的委託不...

如何在非託管錢包上設置定期購買?

如何在非託管錢包上設置定期購買?

2026-01-28 15:19:33

了解非託管錢包的限制1.非託管錢包不在中心化服務器上​​存儲私鑰,這意味著用戶保留對資產和簽名權限的完全控制。 2. 這些錢包缺乏內置的調度基礎設施——MetaMask、Trust Wallet 或 Exodus 中不存在本地定期購買功能。 3. 交易執行每次都需要人工簽名,防止在沒有外部協調的情況...

如何保護您的錢包免受剪貼板劫持惡意軟件的侵害?

如何保護您的錢包免受剪貼板劫持惡意軟件的侵害?

2026-01-27 22:39:55

了解加密貨幣錢包中的剪貼板劫持1.剪貼板劫持惡意軟件監視系統剪貼板中的加密貨幣錢包地址。 2. 當用戶複製合法錢包地址時,惡意軟件會將其替換為攻擊者控制的地址。 3. 這種替換是悄無聲息且即時發生的,通常不會向用戶提供任何視覺反饋。 4. 攻擊利用用戶對複制地址的信任,特別是在時間敏感的交易期間。 ...

如何為Bitcoin隱私生成新的接收地址?

如何為Bitcoin隱私生成新的接收地址?

2026-01-28 13:00:19

了解 Bitcoin 地址重用風險1. 在多個交易中重複使用相同的 Bitcoin 地址會將交易歷史記錄暴露給公共區塊鏈分析工具。 2. 鏈接到重複使用地址的每筆交易都可以聚合,以估計錢包餘額並推斷用戶行為模式。 3. Blockstream Explorer 或 Mempool.space 等區塊...

如何通過錢包鏈接查看 Etherscan 上的交易歷史記錄?

如何通過錢包鏈接查看 Etherscan 上的交易歷史記錄?

2026-01-29 02:40:09

訪問錢包交易歷史記錄1. 使用安全且更新的網絡瀏覽器導航至 Etherscan 官方網站。 2. 找到位於主頁頂部中心顯著位置的搜索欄。 3. 將完整的以太坊錢包地址(包含以“0x”開頭的 42 個字母數字字符)粘貼到搜索字段中。 4. 按 Enter 或單擊放大鏡圖標開始查找。 5. 系統加載一個...

如何在新設備上恢復 Trezor 錢包?

如何在新設備上恢復 Trezor 錢包?

2026-01-28 06:19:47

了解恢復過程1. Trezor 設備依賴於初始設置期間生成的 12 或 24 字恢復種子。該種子是您錢包私鑰的唯一加密表示。 2. 恢復短語不存儲在 Trezor 服務器或云中。它僅存在於用戶實際寫下或安全離線存儲的地方。 3. 恢復過程中不需要任何密碼、PIN 或生物識別數據來替代對這一確切單詞序...

如何在 Temple Wallet 中委託 Tezos (XTZ) 質押?

如何在 Temple Wallet 中委託 Tezos (XTZ) 質押?

2026-01-28 11:00:31

訪問鎖倉界面1. 打開 Temple Wallet 瀏覽器擴展程序或移動應用程序,並確保您的錢包已解鎖。 2. 導航至主儀表板,其中突出顯示您的 XTZ 餘額。 3. 找到並點擊 XTZ 餘額旁邊的“質押”按鈕 — 這將啟動委託流程。 4. 確認您正在查看正確的網絡:Mainnet。測試網上的委託不...

如何在非託管錢包上設置定期購買?

如何在非託管錢包上設置定期購買?

2026-01-28 15:19:33

了解非託管錢包的限制1.非託管錢包不在中心化服務器上​​存儲私鑰,這意味著用戶保留對資產和簽名權限的完全控制。 2. 這些錢包缺乏內置的調度基礎設施——MetaMask、Trust Wallet 或 Exodus 中不存在本地定期購買功能。 3. 交易執行每次都需要人工簽名,防止在沒有外部協調的情況...

如何保護您的錢包免受剪貼板劫持惡意軟件的侵害?

如何保護您的錢包免受剪貼板劫持惡意軟件的侵害?

2026-01-27 22:39:55

了解加密貨幣錢包中的剪貼板劫持1.剪貼板劫持惡意軟件監視系統剪貼板中的加密貨幣錢包地址。 2. 當用戶複製合法錢包地址時,惡意軟件會將其替換為攻擊者控制的地址。 3. 這種替換是悄無聲息且即時發生的,通常不會向用戶提供任何視覺反饋。 4. 攻擊利用用戶對複制地址的信任,特別是在時間敏感的交易期間。 ...

看所有文章

User not found or password invalid

Your input is correct