为什么我的 Solana 交易会失败?如何在 Solscan 上查明原因?
一次兑换显示红色的“失败”标签,你原本想转出的资金却没有动,钱包给出的也不过是一条含糊的错误提示。这在 Solana 上很常见,而完整的解释通常就在区块链上,只需搜索一下即可找到。
关键是弄清自己遇到的是哪种情况:交易已到达网络但执行失败,还是根本没有上链。Solscan 通常能告诉你是哪一种,很多时候也能说明原因。
Solana 上的“失败”可能意味着什么
第一种情况下,交易到达验证者并被纳入区块,随后由于某项依赖条件未满足,在执行过程中被拒绝。这类失败会永久记录在链上,并附有错误信息和程序日志。
第二种情况下,交易始终未能上链。每笔 Solana 交易都会引用一个近期区块哈希,该哈希大约在 150 个区块内有效,约为 60 到 90 秒。如果交易未能在这段时间内处理,就会过期并被丢弃。这类交易通常不会出现在任何区块浏览器上,因为它根本没有进入区块链。
Solana 交易失败的常见原因
对于已上链后又失败的交易,常见原因包括:SOL 不足以支付网络手续费(此外,创建新的代币账户时还需要一笔小额存款);兑换期间价格变动过大,导致超过滑点容忍度;或者账户状态在签名和执行之间发生变化。交易也可能耗尽计算资源上限,这在复杂操作中更常见。
对于始终未能上链的交易,常见原因包括区块哈希过期(通常是因为签名过程缓慢、在确认提示前犹豫不决,或连接延迟),以及网络拥堵。网络繁忙时,优先费较低的可选交易可能会在验证者处理之前被丢弃。
如何在 Solscan 上查明原因
先从钱包的活动记录或你使用的应用中复制交易签名,然后将其粘贴到 Solscan 搜索栏。如果交易已上链,页面通常会显示失败状态,而不是成功状态,并可能指出失败的指令。
接着查看页面下方的指令详情或日志消息等部分;这些部分的具体名称和布局可能会随时间变化。日志会显示运行了哪个程序以及程序在哪里停止,通常会列出指令编号,以及错误名称或代码。错误代码因程序而异,因此相同的数字在不同程序中可能代表不同含义;查看相应程序的文档有助于解读。如果 Solscan 完全找不到该签名,交易可能尚未上链,也可能还没有上链。
你的资金和手续费会怎样
Solana 会将一笔交易作为一个整体执行。如果其中任何一条指令失败,交易原本会造成的所有更改都会被撤销,因此你的代币余额会保持不变。通常,唯一的损失是尝试交易所产生的小额网络手续费;验证者已经处理了交易,因此仍会收取这笔费用。
如果交易过期且始终未能上链,通常不会收取手续费,因为它从未到达链上。不过,在重试之前,最好先在 Solscan 上检查第一次尝试的情况,因为看起来卡住的交易仍有可能成功,重复发送可能会导致重复转账。
WEEX 提醒:重试前先检查
WEEX 提醒用户,重新提交前应先在 Solscan 上确认第一次尝试的状态,并在钱包中留有少量 SOL 以支付手续费。失败交易也容易招来诈骗:无论对方看起来多么像官方人员,任何声称可以“修复”失败交易并索要助记词或私钥的人都不可信。真正的故障排查绝不会需要这两项信息。
结论
只要搜索交易签名,Solana 交易失败就不再是谜。Solscan 可以显示交易是在链上失败还是从未上链,日志通常也会指出导致交易停止的指令。在大多数情况下,资金会留在原处,只有少量手续费会损失,因此实用的做法是先检查,再重试。
常见问题
1. Solana 交易失败时,我会失去代币吗?
通常不会。Solana 会将一笔交易作为一个整体执行,因此如果任何一条指令失败,交易所做的更改都会被撤销,你的余额会保持不变。通常只有网络手续费会损失。
2. Solana 交易失败后,我仍然需要支付手续费吗?
如果交易已上链但执行失败,通常仍会收取少量网络手续费。如果交易过期且始终未能上链,通常不会收取手续费,也通常不会显示在 Solscan 上。
3. 为什么我在 Solscan 上找不到自己的交易?
交易可能尚未上链,也可能已经过期或被丢弃,或者你复制的签名有误。请检查签名,稍等片刻,并与钱包显示的状态进行核对。
4. 我在哪里能在 Solscan 上找到错误信息?
搜索交易签名,然后查看失败状态以及指令详情或日志等部分;这些内容通常会显示哪条指令失败,以及返回了什么错误。页面布局和标签可能会随时间变化。
5. 重试失败的 Solana 交易安全吗?
通常可以,但请先检查 Solscan,确认原交易没有成功,也没有仍在处理中。看起来卡住的交易仍有可能成功,过早重新发送可能导致重复转账。