Tx Doctor / EVM 回滚错误库

EVM 交易为什么回滚了?

回滚的原因就那么几种:合约自己的检查没通过、gas 用光、ERC-20 授权或余额不足、成交价超出滑点、或者 nonce 已经被用过。下面每一条都教你如何区分它们——以及真正能解决的做法。

诊断我的交易

本工具支持的链

Ethereum 1Base 8453Arbitrum One 42161OP Mainnet 10Polygon 137BNB Chain 56

链是由哈希本身判断的,没有选错网络这回事。不支持的链会被明确说明,而不是靠猜。

执行回滚(没有原因字符串)

EVM · reverted — 合约拒绝了这次调用,也没有返回任何信息。通常是无原因的 require()、解码器不认识的 custom error,或调用深处出现 gas 问题。

Gas 不足

EVM · gas — 调用完成前 gas 上限就用完了,EVM 回滚了全部状态——但 gas 照样被扣。

基础 gas 太低

EVM · gas — 你给的 gas 上限小于交易本身的基础成本(21,000 加 calldata),所以在执行前就被拒了。

余额不足以支付 gas

EVM · balance — 发送地址付不起「金额加上按其设定价格计算的 gas」,节点因此拒绝接收这笔交易。

Nonce 太低

EVM · nonce — 这个 nonce 的交易已经上链,节点把新交易当成重复项丢弃了。

替换交易出价太低

EVM · nonce — 你试图替换一笔待处理交易,但新费用不够高——多数节点要求至少高出约 10%。

ERC-20 转账超过余额

EVM · token — 代币合约拒绝了转账,因为发送地址持有的数量少于请求值——常见于带转账税的代币先扣掉了自己那份。

ERC-20 授权额度不足

EVM · token — 路由或合约没有被授权动用这么多代币,transferFrom 因此回滚。

安全转账失败(STF / TF / TransferHelper)

EVM · router — 路由无法从你的钱包拉走代币。Uniswap 系路由报成三个字母 STF(safeTransferFrom 失败)或 TF,PancakeSwap 报…

兑换滑点超限

EVM · DEX — 池子给出的数量低于你的最小输出(或吃掉了超过最大输入),路由拒绝以更差的价格成交并回滚。

兑换已过截止时间

EVM · DEX — 交易在你设定的截止时间之后才被打包,路由拒绝执行。

合约已暂停、冻结或被拉黑

EVM · token — 代币或协议此刻在刻意阻止转账。调费用或重试都没用——限制是合约所有者设的。

Solidity panic(算术或越界错误)

EVM · Panic — 合约触发了编译器插入的 panic:溢出、除零、数组越界读,或 assert() 失败。这是合约侧的问题,不是钱包问题。

未知的 custom error selector

EVM · custom — revert 数据以一个 4 字节 selector 开头,不属于 ERC-20 或 Panic 标准。custom error 由各合约自行定义,这个 selector…