保留中のトランザクションをキャンセルする方法
- 執筆
- CRYPTO PORT 編集部
- 公開日
- 更新日
- 読了目安
- 5 分
結論
まだ確定していない取引は、同じ連番(ナンス)で自分宛の空の取引を、より高い手数料で送ることで無効化できる場合があります。多くのウォレットにこの操作にあたる機能があります。ただし成功は保証されず、確定してしまった取引は一切取り消せません。キャンセル自体にも手数料がかかります。
要点
- 同じ連番の取引は一つしか確定しない、という性質を利用する
- 確定済みの取引には使えない。取り消しの余地はない
- キャンセル用の取引にも手数料がかかる
- 成功するかどうかはネットワークの状況次第で、保証はない
定義
送信済みだがまだ確定していない取引を、同じ連番の別の取引で置き換えることで、実行されない状態にすること。
キャンセルが成り立つ理由は、連番(ナンス)の性質にあります。一つのアカウントから出る取引には順番の番号が振られ、同じ番号の取引は一つしか確定できません。したがって、まだ確定していない取引と同じ番号で別の取引を出し、そちらを先に確定させれば、元の取引は行き場を失います。これがキャンセルの実態で、取り消しというより上書きです。
置き換えに使うのは、一般的に「自分自身へ、金額0で送る」だけの軽い取引です。中身がないので効果はなく、連番を消費することだけが目的になります。手数料は元の取引より高く設定します。低いままでは、そちらが先に確定してしまい、キャンセルになりません。多くのウォレットでは、保留中の取引を開くとキャンセルにあたる項目が表示され、この処理を自動で組み立ててくれます。名称と位置はアプリにより異なります。
使う場面は限られます。よくあるのは、手数料を低く設定しすぎて長時間保留になっている取引を、いったん取り下げたい場合です。あるいは、送信直後に内容の誤りに気づいた場合ですが、これは時間との勝負になります。ブロックの生成は速いため、気づいた時点で既に確定していることも珍しくありません。その場合、できることはありません。
失敗する可能性も理解しておいてください。キャンセル用の取引を出しても、元の取引のほうが先に取り込まれてしまえば、キャンセルは成立せず、しかもキャンセル用の手数料は消えます。混雑時ほどこの読み合いは不確実になります。したがって、キャンセルを前提にした運用はできません。送信前の確認こそが唯一確実な防御です。
なお、dApp への承認をなかったことにしたい場合は、この操作とは別の話です。すでに確定した承認は、承認の取り消し操作でしか無効化できません。「承認(Approve)の取り消し方」を参照してください。
注意点
- · 確定した取引は取り消せません。キャンセルは保留中に限った手段です
- · キャンセルが失敗しても手数料は戻りません。元の取引が先に確定する場合があります
- · 「キャンセルを代行する」「取引を巻き戻せる」と称する業者はすべて詐欺です
よくある質問
キャンセルすると送ろうとした資産は戻りますか?
元の取引が実行されないため、送ろうとした資産はウォレットに残ったままです。ただしキャンセル用の取引に使った手数料は消費されます。すでに確定していた場合は、資産は相手に渡っており、戻りません。