Tx Doctor / EVM リバート事典 / 実行が revert(理由文字列なし)
EVM エラー:実行が revert(理由文字列なし)
コントラクトが呼び出しを拒否し、メッセージも返しませんでした。理由なしの require()、デコーダが知らない custom error、または呼び出し内部のガス問題が典型です。
原因
- コントラクトの require() がメッセージなしで失敗したため、revert データが空です。
- custom error(Solidity 0.8.4+)が投げられました。4 バイトの selector を持ち、そのコントラクトの ABI でしか名前が分かりません。
- 内側の呼び出しでガスを使い切り、裸の revert として現れました。
- 呼び出し内のトークン転送が静かに失敗しました(転送手数料付きトークン、ブラックリスト、停止中のコントラクト)。
解決方法
- エクスプローラーのデバッガー(Tenderly、Etherscan の Simulate)で呼び出しを再生してください。失敗したサブコールが分かるのが通例です。
- 関係するトークンを確認してください。停止中、ブラックリスト、転送手数料付きのトークンはメッセージなしで revert します。
- ガス上限を 30〜50% 上げて 1 回だけ再試行し、out of gas を除外してください。
- 開発者なら、4 バイト selector をコントラクトの custom error と突き合わせてください。
ウォレット/エクスプローラーでの表示例
execution reverted (no data present; likely the contract threw a custom error)
いまこの問題が出ていますか?トランザクションハッシュを貼ると、チェーンを自動判定して実際に失敗した理由をデコードします。
自分のトランザクションを診断