PancakeSwap 兑换失败:按输出不足、过期和转账失败逐项排查
链小知 · 入门 · 核验 · 依官方文档整理
以已有 Router 报错定位输入、滑点和授权问题,避免用极端滑点或无限授权解决所有失败。
开始前准备
- 准备失败交易的完整错误、链、Router/池版本与兑换预览。
- 适用于已有 Router 错误和兑换预览;Router 旧错误与 Infinity/v3 错误不能自动等同。
1. 保留原始错误与路线
抄下失败交易哈希和错误全文,再记链、代币地址、池或 Router 版本。查看预览里的路线详情,确认是 v2、v3 或其他池。不同版本费用不同,不能将 v2 的固定费用移植到所有路线。
检查结果:错误未被概括为一个“交易失败”,路线版本已注明。
2. 输出不足先复核报价与流动性
若错误为 INSUFFICIENT_OUTPUT_AMOUNT,检查输入金额、最少收到、预览时间与价格变化。用较小数量重新做预览有助于判断价格冲击;先确认代币转账特性和路线,不能直接把滑点提到极高值来绕过保护。
检查结果:写清是旧报价、规模/流动性还是代币行为待核实。
3. 过期检查 deadline
EXPIRED 对应交易截止时间已过去。核对请求创建和链上处理时间,旧交易数据不可原样反复使用;重新取得预览与新期限属于下一次操作准备,并不意味着应重新发送交易。
检查结果:记录能解释期限与提交时间是否不匹配。
4. 转出失败分别查余额和 allowance
TRANSFER_FROM_FAILED 时,在同一链、同一钱包、同一授权对象下核对代币余额与授权额度。余额足不代表已授权,授权过其他 Router 也不代表当前路线可使用。含转账税的代币还可能出现 K 等其他错误,需要按该代币与 Router 的兼容性继续核实。
检查结果:余额不足、授权不足、代币机制三个分支分别有结果。
5. 把费用和后续状态分清
保留网络 gas 及路线显示的交易费;v3 不同费率档位、v2 和稳定池不是同一套费用。失败交易回执、扣除的 gas 与未完成的兑换应分开记录。若没有回执,状态只能写成钱包/接口错误,不能判断已上链。
检查结果:故障单包含路线、输入、原始错误与回执状态。
怎样确认完成
- 给出可以继续核查的具体错误分支。
- 完成检查而未重签、未提交新兑换。
常见错误与边界
- 照搬旧文档中极端滑点或近零最少输出的示例。
- 把所有代币错误归咎于网络拥堵。
- 忽略交易失败仍可能消耗网络 gas。