领取交易卡住或失败了怎么办:先分清状态再动手
先给顺序,再讲道理:看状态 → 读报错 → 查 nonce → 才轮到加速或取消。第一步就是先分清两种状态——还在待处理,和已经上链但执行失败。这一步最容易被跳过,而跳过它的代价通常不是白等,是钱包里多堆一笔卡住的交易。
这篇不打算给你一个“一键解决”的答案,因为并不存在。它给的是一个自查顺序,以及一条更值钱的提醒:从交易卡住的那一分钟起,只要你开口问,你就成了公开频道里最好认的那个人——正在等一个答案。
第一步:分清待处理和已失败
交易从你按下确认那一刻起,并不是立刻就上链。它先进入待处理的交易池排队等待被打包,出价(也就是 gas)高的那些会被优先处理。这是 Etherscan 官方文档里对待处理交易的基本描述,也是理解后面所有动作的前提:没被打包,和被打包但执行失败,是两件完全不同的事。
怎么分清?拿那笔交易的哈希,去区块浏览器上查它。钱包的活动列表里通常能复制到这个哈希;如果连哈希都没有,说明这笔交易可能压根没发出去,那就是另一个问题了。查到之后,你会落到下面三种情形之一。
| 你看到的 | 它的意思 | 接下来看哪节 |
|---|---|---|
| 状态是 Pending / 待处理 | 还在排队,没进区块,理论上还有替换或取消的机会 | 第三节 |
| 状态是 Fail / 失败 | 已经上链了,但执行没成功,结果被回滚 | 第二节 |
| 查不到这个哈希 | 可能被丢弃替换(Dropped & Replaced);先换用其它网络节点,再看区块浏览器上有没有这笔记录 | 本节末尾 |
第三种情形值得单独说一句。Etherscan 官方对 Dropped & Replaced 的解释是:当同一个发送地址、同一个 nonce 的另一笔交易被确认时,原来那笔就会被丢弃替换掉。常见的诱因是原交易的 gwei 出价太低,一直排不上。好消息是,被丢弃的交易既不扣你的资产,也不扣 gas,全都退回发送地址。如果你查不到哈希,别急着断定钱丢了,先换用其它网络节点再看一次区块浏览器上有没有这笔记录。
上链失败:本金还在,扣的是 gas
先把最要紧的那句说完:Etherscan 的官方说明写得很直白——一笔交易显示 Fail 时,你打算发送的资金不会被扣,还留在钱包里,但 gas 费照扣。“交易失败等于币丢了”是流传最广、也最让人白白慌一场的误解。你为这次失败付出的成本,是这笔交易被处理时消耗掉的手续费,而不是本金。对 gas 到底怎么算、为什么失败也要付,可以看我们的gas 费是什么,想估个大概数字就用gas 费计算器。
接下来是读报错。Etherscan 的官方知识库列举过几类常见的失败原因(info.etherscan.com),对着看能省很多瞎猜的时间:
- Out of Gas。你给的 gas limit 低于这笔交易实际需要的量,执行到一半没“油”了。领取类交易的合约逻辑常常比普通转账复杂,需要的量也更大。
- Reverted。交易没有被执行,状态全部回滚。合约可以自定义报错信息,所以你在浏览器上看到的那句英文提示,文案因项目而异——不同空投合约写法不一样,别把别人贴出来的报错直接套到自己身上。
- Bad jump destination / Bad instruction。合约代码层面的错误,属于你这边没法调整参数解决的类型。
- ERC-20 转账失败。可能是代币合约被锁定、余额不足,或者该代币的实现方式不标准。
看到 Reverted 时,先回头确认一件事:你到底有没有资格、领取窗口有没有开。有相当一部分“领取失败”,本质是合约按规则拒绝了这次调用,而不是你的钱包出了毛病。资格怎么查,我们单独写过一篇(怎么查空投资格)。
还在待处理:按这个顺序做
确认状态是 pending 之后,动作是有先后的。跳步的人往往会在同一个地址上叠出好几笔互不相干的待处理交易,越理越乱。
- 一、拿哈希去区块浏览器确认它确实在排队。这一步是为了排除“我以为发出去了其实没发”和“已经被丢弃替换”这两种情况。
- 二、按地址查这笔交易和它的 nonce。nonce 是这个地址发出交易的序号。你要知道它排在第几位,也要知道前面有没有更早的一笔还堵着。
- 三、如果前面还堵着更早的交易,先处理最早那笔。MetaMask 官方在讲加速与取消时明确说过(support.metamask.io):排队时必须从最早那笔往后处理,不能先去取消 nonce 10 而放着 nonce 9 不管。序号在前的那笔不动,后面的永远轮不到。
- 四、再考虑加速或取消。MetaMask 的 Speed up 是以更高的 gas 把同一笔交易重发一次,复用原来的 nonce,不会让你付两次 gas;Cancel 则只有在交易仍处于 pending 状态时才有机会尝试,它不是一个保证成功的按钮。具体怎么操作,以官方帮助中心里那篇《How to speed up or cancel a pending transaction》为准(support.metamask.io)。
- 五、自己拿不准,就交给官方工具判。拿到交易哈希后,可以到 activity.metamask.io 点 “Help with a pending transaction”,选好网络后点 View,由它判定这笔交易当前的状态并给出方案。这是官方入口,不需要你把任何私密信息交出去。
关于“替换一笔卡住的交易”,Etherscan 官方给的正确做法只有一句话:用完全相同的细节重新发送,提高 gas 价格,并且沿用同一个 nonce。反过来说,如果你不管 nonce,只是重新点一次领取按钮,那你造出来的是第二笔全新的待处理交易,原来那笔照样堵在那。在一个转圈的领取页上连点几次“确认”,最后要清理的就是这样几笔互不相干的交易。
本文不会给你任何“提价多少百分比就一定能挤进去”的数字。链上的排队情况随时在变,钱包在你点加速时会给出它当时的建议值,以钱包页面当时的提示为准。看不懂 wei、gwei、ether 之间的关系,可以用单位换算先把数字对上号。另外也要接受一个现实:取消并不保证成功,交易一旦被打包,谁都撤不回来。
nonce 和“清除活动数据”什么时候才轮到
这两样是新手最容易乱动、也最容易把事情搞复杂的功能。它们不是禁区,但它们排在自查顺序的很后面。
先说自定义 nonce。MetaMask 里那个能让你手填 nonce 的输入框默认不显示:在扩展里,要在交易确认页右上角打开 “Show advanced details”,才会出现可编辑的 nonce 栏。官方还提醒一点:如果你开着 Smart Transactions,而这笔交易在以太坊主网、Base、Arbitrum 或 BNB 智能链上,得先把 Smart Transactions 关掉才能改 nonce,改完记得打开回去。这个设计本身就在暗示:多数人多数时候不需要碰它。真的要用,也得守住前面那条规矩——从最早那笔往后处理,一笔一笔来。
再说“清除活动和 nonce 数据”。MetaMask 扩展从 10.28.1 起把原来的 reset account 更名成了这个,它的作用是清空本地的交易历史,以及钱包对待处理交易的记忆。注意“本地”两个字:它清掉的只是你当前所在那条网络的那部分本地记录,改变的只是你这边看到的界面,链上已经发生的事一件都不会变。官方给的口径也很紧——只有在 MetaMask 支持人员或者 MetaMask Activity 工具建议你这么做时才用。
我个人的取舍是:如果你还没走完“查哈希、看 nonce、试加速”这三步,就先别碰它。它是收拾残局的工具,排在解决问题之后。何况一旦本地记录被清掉,你再想回头核对自己到底发了几笔、分别是什么状态,只能全靠区块浏览器一笔笔翻。
这一刻最危险:假客服正等着你开口
现在换个角度想问题。一笔领取交易卡住时,人的典型反应是什么?去项目的官方群里发一句“我的领取交易一直 pending,有人遇到吗”,或者在某条推文下面留言问。这句话一发出去,你就把自己标记成了“正在着急、正需要帮助”的人——而这正是骗子在公开频道里筛人的方式。
MetaMask 官方在讲仿冒诈骗时描述过这套手法:恶意账号伪装成官方支持渠道,盗用官方 logo、配上很专业的头像和用户名,冒充“支持工程师”找上你,最终目的是诱导你交出助记词或私钥。他们不会一上来就要,往往先陪你聊几句技术细节,把你哄到“他好像真的懂”的位置,再说需要你“验证一下钱包”。
有两条硬判据可以当护栏用:
- 任何人索要助记词,都是骗子。MetaMask 官方的说法是,它几乎不会要你输入助记词,合法的场景只有三个:首次创建钱包、恢复钱包、重置密码。任何以“修复交易”“解锁账户”“同步节点”为名要你输入的,一律是假的。这条底线的完整版在助记词安全那篇。
- 官方不会通过邮件主动来要东西。MetaMask 明确说过绝不会通过邮件索要你的 Google、Apple 账号、密码或助记词,官方只会就已经开好的工单、从其官方域名邮箱联系你。收到“检测到你有一笔异常交易,请点击处理”的邮件,直接当钓鱼处理。
还有一种更老派的版本:网上搜出来的“客服电话”。受害者拨过去后被一步步诱导交出登录信息,甚至整个账户的控制权;遇到这类情况,可向 IC3(ic3.gov)举报。所以我不建议你去搜索引擎或社交平台上找客服,正确做法是从早就核实过的官方入口进帮助中心(辨别官方渠道),或者用上一节的官方工具自查。这类私信的话术长什么样,假空投红旗清单里有更全的对照。
顺序反过来记也行:先自查,再求助;求助只对官方入口开口。真要发问,也别贴钱包截图和地址。
任何情况下都不做的三件事
最后是三条不设例外的规矩。它们不复杂,难的是在着急的时候还守得住。
- 不输入助记词、私钥或 Keystore 文件。处理一笔卡住的交易,从头到尾都不需要它们。凡是把这一步塞进流程里的教程、工具、客服,都是冲着你的钱包来的,理由说得再技术也一样。
- 不把希望寄托在任何号称能“修复卡单”“解锁交易”的第三方服务上。你的交易在链上是什么状态,只有链能决定;能改变它的动作只有替换、取消或等待,这些你自己在钱包和官方工具里就能做完。
- 不为了赶领取窗口而反复重发。着急重发只会让待处理队列变长,反而更慢。同样的道理也适用于授权:如果你在慌乱中给某个页面签过说不清的授权,事后一定要回去检查并撤掉(授权检查与撤销)。
回到最开始那句顺序。交易卡住这件事,出路无非是等它自己被打包,或者用加速、替换来收尾;真正把人拖进坑里的,是等待时那股“得赶紧找个人问问”的冲动。你手上其实握着全部的信息——一个交易哈希、一个 nonce、一个官方帮助入口,足够把状况看清楚了。慢一点,别把钥匙递出去。
常见问题
交易在区块浏览器上显示 Fail,我的币是不是没了?
没有。按 Etherscan 官方说明,一笔交易显示失败时,你打算发送出去的资金不会被扣,仍然留在钱包里;被扣掉的是这次执行消耗的 gas 费。因为矿工或验证者确实为你处理了这笔交易,无论结果成不成功,这部分算力开销都要付。所以看到 Fail 先别慌着到处求助,你要处理的是“为什么没执行成功”,不是“钱去哪了”。
加速(Speed up)会不会让我付两次 gas?
不会。MetaMask 的 Speed up 是用更高的 gas 价格把同一笔交易重新发一次,它复用的是原来那个 nonce,所以最终链上只会确认其中一笔,你也只会为确认的那一笔付费。真正会让你多花钱、还多卡一笔的做法,是不管原交易、自己另外发一笔新的——那笔用的是新的 nonce,两笔会一起排队。取消(Cancel)同理,它只有在原交易仍然处于待处理状态时才有机会成功。
卡住的时候直接用“清除活动和 nonce 数据”能解决吗?
这个功能不该被当成常规解法。它在 MetaMask 扩展 10.28.1 之后由原来的 reset account 更名而来,作用是清空本地的交易历史和钱包对待处理交易的记忆——而且只清掉你当前所在那条网络的那部分本地记录,链上状态一点都不会变。官方给的使用口径很明确:只有在 MetaMask 支持人员或 MetaMask Activity 工具建议你这么做的时候才用。链上那笔交易该在哪还在哪,清掉本地记录只会让你自己更难看清现状。