交易卡在“等待中”怎么办?Pending 状态的排查、加速与取消 图 1
交易卡在“等待中”怎么办?Pending 状态的排查、加速与取消 · 图 1

先确认它是真的卡住了

钱包里显示「等待中」「Pending」不一定代表出了问题。交易广播后要先被打包进区块,网络拥堵时等几十分钟也属正常。判断的第一步是拿交易哈希去对应链的区块浏览器搜索:

  • 浏览器能搜到、状态是 Pending:交易已进入内存池,正在排队,问题多半出在出价或Nonce。
  • 浏览器完全搜不到:交易可能根本没广播成功,或你连的是延迟节点,网络切换后看不到别处的排队交易。
  • 浏览器显示已失败(Failed):那不是卡住,而是执行回滚,gas 已消耗,需要另查失败原因。

原因一:Nonce 顺序卡住了后续交易

以太坊类账户的交易必须按 Nonce 从小到大依次执行。如果第 N 笔交易因为出价太低一直没人打包,后面的 N+1、N+2 全部会排队等待,看起来像「全部卡住」。查法:在区块浏览器打开你的地址页,看每一笔 Pending 交易的 Nonce 是否连号;最早那个未确认的 Nonce 就是堵点,只需要处理它,后面的会自然疏通。

原因二:Gas 出价太低

验证者按出价高低挑交易打包。如果设置时用了偏低的费用,拥堵时段就可能长期排不上。在 EIP-1559 结构的链上,重点看优先费(priority fee)是否明显低于当前网络水平,而不是只看总费用。

原因三:网络整体拥堵

如果同样出价别人的交易也慢,那就是全网拥堵。此时提高出价是唯一加速手段,等是等不掉的。可以关注浏览器上的费用参考页面判断当前水平,费用数据实时变化,以核验当时的读数为准。

原因四:广播失败或节点延迟

钱包显示的 Pending 有时只是本地状态。换一个区块浏览器、或把交易哈希贴到另一家浏览器上核对,如果各家都查不到,基本可以认定没有广播成功。这种情况下重新发起一笔新交易即可,旧的那笔不存在于网络上,不会突然生效。

处理方式一:加速(提高出价替换)

主流钱包大多提供「加速」功能:用相同 Nonce 发一笔出价更高的交易,内容和原交易一致。谁先被打包,另一个自动作废。注意两点:加速同样要付手续费,失败不退;加速交易必须覆盖原交易的全部要素(收款人、金额、合约调用),如果你的钱包只是「提高费用重发」,务必核对内容没有被改动。

处理方式二:取消(同 Nonce 空转交易)

取消的本质是:用同一个 Nonce 给自己发一笔空交易(转账金额为 0、收款人是自己或任意无副作用目标),出价高于原交易。空交易先被打包,原 Nonce 位置被占,卡住的那笔就永久失效了。钱包的「取消」按钮做的事与此等价。如果钱包没有取消按钮,可以手动构造一笔同 Nonce 的低gas空交易,但务必先确认当前 pending 的到底是哪个 Nonce。

处理方式三:什么都不做

如果金额不大、不急着到账,等待是零成本选项。只要出价不为零,交易通常在拥堵缓解后被打包。要警惕的是「等不及去换地址重发」:那笔 Pending 交易仍然可能在未来某个时刻生效,造成重复支付。要么等它确认,要么先取消,再重发。

常见误区

  • 反复点击「加速」堆出一串同 Nonce 交易:只有最后一笔被打包才有效,反复加只会多烧钱,选一次出价足够高的即可。
  • 在别的钱包或别的 RPC 上查不到就断定交易丢了:不同节点看到的 pending 集合不同,以多数学浏览器都可见为准。
  • 以为「取消」能把钱退回来:取消只是让原交易不生效,资金从未离开过你的钱包,但取消交易本身的 gas 要付。
  • 把失败(Failed)当成 Pending 去加速:失败的区块执行已回滚,加速只会再执行一次同样的失败逻辑,再扣一次 gas,应先查失败原因。

风险提示

本文是操作与原理说明,不构成投资建议。加速、取消等操作产生的手续费一经广播即被网络收取,无法退回。文中提到的钱包按钮名称因产品与版本而异,请以你所用钱包的实际界面为准,无法确认界面路径时不要凭想象操作。涉及大额资产时,建议先在测试环境或小额场景演练一遍流程。