Tx Doctor / EVM 回滚错误库 / 执行回滚(没有原因字符串)
EVM 错误:执行回滚(没有原因字符串)
合约拒绝了这次调用,也没有返回任何信息。通常是无原因的 require()、解码器不认识的 custom error,或调用深处出现 gas 问题。
为什么会这样
- 合约的 require() 检查失败且没有消息,revert 数据为空。
- 抛出了 custom error(Solidity 0.8.4+)——它们带 4 字节 selector 而不是可读文本,只有该合约的 ABI 能给出名字。
- 内层调用耗尽 gas,最终表现为一个空的 revert。
- 调用中的代币转账静默失败(带转账税的代币、黑名单、合约暂停)。
怎么解决
- 在浏览器的调试器里重放这次调用(Tenderly、Etherscan 的 Simulate),通常能指出失败的是哪个子调用。
- 检查涉及的代币:暂停、被拉黑或带转账税的代币会无消息地 revert。
- 把 gas 上限提高 30% 到 50% 再试一次,排除 out of gas。
- 如果你是开发者,用合约里的 custom error 去匹配这个 4 字节 selector。
钱包或区块浏览器里显示的样子
execution reverted (no data present; likely the contract threw a custom error)
现在就遇到这个问题?粘贴交易哈希,工具会自动找到所在链并解码真正失败的原因。
诊断我的交易