Tx Doctor / EVM リバート事典

EVM トランザクションはなぜリバートした?

リバートの理由は数種類しかありません。コントラクト自身のチェックに引っかかった、ガスが尽きた、ERC-20 の承認や残高が足りない、スリッページ上限を超えた、nonce が既に使われた。各項目で見分け方と、実際に効く対処を説明します。

自分のトランザクションを診断

対応チェーン

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

チェーンはハッシュそのものから判定するため、ネットワークの選択ミスは起きません。未対応のチェーンは推測せず明示します。

実行が revert(理由文字列なし)

EVM · reverted — コントラクトが呼び出しを拒否し、メッセージも返しませんでした。理由なしの require()、デコーダが知らない custom…

ガス不足

EVM · gas — 呼び出しが終わる前にガス上限を使い切り、EVM がすべて巻き戻しました。ただしガス自体は課金されます。

基本ガスが低すぎる

EVM · gas — 指定したガス上限が取引自体の固定コスト(21,000 に calldata 分を加えたもの)より小さく、実行前に拒否されました。

ガスを払う残高が不足

EVM · balance — 送信アドレスが「送金額 + 設定した価格のガス代」を賄えないため、ノードが取引を受け付けませんでした。

Nonce が低すぎる

EVM · nonce — この nonce の取引はすでに取り込まれているため、ノードは新しい取引を重複として破棄します。

置換取引の手数料が低すぎる

EVM · nonce — 保留中の取引を置き換えようとしましたが、新しい手数料が競り勝てる水準ではありませんでした。多くのノードは約 10% 以上の上乗せを要求します。

ERC-20 送金が残高を超過

EVM · token — 送信アドレスの保有量が要求額より少ないため、トークンコントラクトが送金を拒否しました。転送手数料付きトークンが先に取り分を引く場合も同様です。

ERC-20 の承認額が不足

EVM · token — ルーターやコントラクトがその数量を引き落とす権限を持っていないため、transferFrom が revert しました。

セーフトランスファー失敗(STF / TF / TransferHelper)

EVM · router — ルーターがウォレットからトークンを引き出せませんでした。Uniswap 系は STF(safeTransferFrom 失敗)や TF、PancakeSwap は…

スワップでスリッページ超過

EVM · DEX — プールの出力が最小受取額を下回った(または最大入力額を超えて引かれた)ため、ルーターは不利な価格で約定せず revert しました。

スワップの期限切れ

EVM · DEX — 設定した期限を過ぎてから取引が取り込まれたため、ルーターが実行を拒否しました。

コントラクトが停止・凍結・ブラックリスト

EVM · token — トークンまたはプロトコルが意図的に送金を止めています。手数料の調整や再試行では解決しません。制限はコントラクト所有者が設定しています。

Solidity panic(算术・境界エラー)

EVM · Panic — コントラクトがコンパイラ挿入の panic に当たりました。オーバーフロー、ゼロ除算、配列の範囲外読み取り、assert()…

未知の custom error selector

EVM · custom — revert データが ERC-20 / Panic 標準ではない 4 バイト selector で始まっています。custom error…