今回は、Trust の Telegram グループに何度か問い合わせをいただいている、Ethereum のトランザクションのキャンセル方法をご紹介します。
皆さんもなかなか通らない保留中のトランザクションを見てイライラした経験はあるのではないのでしょうか。そんなときは、トランザクションのキャンセルができるんです。
厳密にはトランザクションの上書きになりますが、もちろん Trust から行うことも可能です。
目次
トランザクションが保留中になってしまう理由
それはずばりガス(手数料)不足です。
マイナーはガス代を多く払っているトランザクションを優先的にブロックに取り込みます。
他のトランザクションが自分よりも多くのガス代を払う場合、いつまでたっても自分のトランザクションがブロックに取り込まれないため、保留中が続いてしまいます。
Trsut は適切なガス代を計算して推奨値として初期設定していますが、DApps 側が固定値を初期設定していてその値が小さかったり、急にガス代が高騰したりしてしまうとこの問題に直面します。
適切なガス代は ETH Gas Station や Ethereum GAS Tracker で確認することができます。
保留中のトランザクションの対処方法
設定したガス代が小さくてトランザクションが長時間保留中になってしまっている場合、以下の対処方法があります。
- 我慢して待つ
- トランザクションを上書きする(キャンセルする)
我慢して待つのは分かりやすいですが、どれだけ待たないといけないかわかりません。
トランザクションの上書きと言っても、がむしゃらに新規トランザクションを発行してはいけません。
保留中のトランザクションが残っている場合、そのトランザクションが承認されないと後続のトランザクションも承認されないため保留中のトランザクションで渋滞してしまいます。
トランザクションには通し番号であるナンス(nance)が割り当てられており、トランザクションを発行するごとに+1されていきます。
このナンスが大きいトランザクションは小さいトランザクションが完了するまで承認されないのです。
トランザクションのキャンセル方法
簡単に言うと、自分自身に0ETH送るトランザクションをキャンセルしたいトランザクションと同じナンスで発行します。
ただし、キャンセルできるのは保留中のトランザクションのみです。ブロックに取り込まれた後のトランザクションはキャンセルできませんのでご注意ください。
また、当然ではありますが、キャンセル用のトランザクションにガス代が必要になります。
具体的な手順を確認しましょう。
1.保留中のトランザクションのナンスを確認する
トランザクションの一覧から保留中のトランザクションを確認しましょう。以下のように「保留中」の表示があるはずです。複数保留中の場合は、一番下のトランザクションを選択しましょう。古いほうからキャンセルする必要があります。

すると、以下の通りトランザクションの詳細が確認できます。下部に記載のナンスを覚えておきましょう。

2.自分のアドレスに0ETHを送信するトランザクションを作成
次に、自分のアドレスに0ETHを送るトランザクションを作成します。このトランザクションで先ほどの保留中のトランザクションを上書きするためです。
以下の通り自分のアドレスを確認してコピーしておきましょう。


続いて、宛先を先ほどコピーしたアドレスに設定し、送信するETHを0にして次に進みましょう。


3.ナンスを変更
そして、ここが肝心なポイントです。先程のトランザクションのナンスを変更して上書きするように変更します。
以下のトランザクション発行前の承認画面で右上にある設定ボタンを選択します。

表示された設定画面の下部にナンスが設定されていますので、その値を先程覚えた値に書き換えます。
この時、ガス代が適切に設定されていることも確認しましょう。またガス代が低いと、上書きしたトランザクションも保留中になってしまいます。(Trust の場合、基本的には初期値で問題ないはずです)
書き換えたら右上の「保存」を選択します。

この状態で「送信する」を選択し、上書きしたトランザクションが承認されれば、以下のようにトランザクションがキャンセル(上書き)されます。

まとめ
トランザクションのキャンセル方法をご紹介しました。
なかなか面倒な手順だと思いますので、普段から適切なガス代を設定することが重要ですね。
この方法のほかに、目的のトランザクションを再度実行する際にナンスを変更して上書きする方法もありますので目的に応じて試してみてください。
Twitter でマキオをフォローしよう!
Follow @makionaire