暗号資産のトレードでは、エントリーや手仕舞いのタイミングと同じくらい手数料(ガス代)と取引失敗リスクの管理がパフォーマンスに直結します。特にEthereum系チェーン(EVM互換)でのDEX取引は、EIP-1559の料金モデルとノンス管理を正しく使い分けるだけで、同じスワップでも「数%の収益差」になることが珍しくありません。本稿では、初心者の方でもすぐ実践できる形で、EIP-1559のガス戦略とノンス管理の要点を体系的に解説します。
EIP-1559の基本式を最短で理解する
EIP-1559では、トランザクション送信時に「maxFeePerGas(上限)」「maxPriorityFeePerGas(優先チップ)」を指定します。実際に支払う1ガスあたりの単価は概ね以下で決まります。
実効支払単価 = min(maxFeePerGas, baseFee + maxPriorityFeePerGas)
実際の支払総額 = 実効支払単価 × gasUsed
ここでbaseFeeはブロックごとに自動調整される最低料金、maxPriorityFeePerGasはバリデータへ渡すチップです。maxFeePerGasは「上限キャップ」であり、必ずしも全額が支払われるわけではありません。実効単価は常にbaseFee + priority
に収れんし、余剰分は返金されます。
ガスリミットとgasUsedの違い
gasLimitは「この取引で最大ここまで消費を許す天井」であり、実際に支払うのはgasUsed分だけです。DEXスワップなら10〜20万gas程度が目安ですが、プロトコルやルートで大きく変動します。ガスリミットを高めに取る=過払いではないことをまず押さえましょう。
具体例:Uniswap v3スワップの実コストを数値で把握する
条件:
・スワップ想定のgasUsed = 120,000
・その時点のbaseFee = 15 gwei
・あなたが指定するmaxPriorityFeePerGas = 2 gwei
・あなたが指定するmaxFeePerGas = 30 gwei
この場合、baseFee + priority = 17 gwei
なので、実効支払単価 = 17 gwei
です。よって支払総額は、120,000 × 17 gwei
です。ETH建てに直すにはgwei = 10^-9 ETH
を掛けます。例えばETH=¥500,000なら、概算手数料はおよそ数百円台後半になります(為替とETH価格に依存)。
重要:maxFeePerGas
はキャップにすぎないため、baseFee+priority
が下がれば自動的に安くなります。混雑時に余裕を見た高めのキャップを入れても、使われなければ返金されるのがEIP-1559の利点です。
スリッページとガスの関係を設計する
スワップは価格条件(スリッページ許容)と時間条件(期限)が噛み合わないと失敗します。混雑時にpriorityをケチると、確定が遅れ価格が動き、結果としてスリッページ制限に当たってリバート(失敗)し、ガスだけ失うことがあります。逆に、適切にpriorityを積むことで約定の確度を上げて総損失を最小化できます。
実務ルール(目安)
- 平常時:
priority = 1〜2 gwei
、maxFee = baseFee × 1.2〜1.5
- 混雑時:
priority = 3〜5 gwei
、maxFee = baseFee × 2.0 以上
- 価格が大きく動くイベント直前は、スリッページ許容を狭くするよりもpriorityで時価執行能力を確保した方が総合的に有利なことが多いです。
承認コストを削る:Permit2とバッチ化
ERC-20の初回スワップでは「承認(approve)」と「スワップ」の2本のトランザクションが必要になりがちです。承認は3〜5万gas、トークンや実装次第ではさらに増えます。これを削る選択肢として、UniswapのPermit2を使うと、署名ベースで承認し、オンチェーンのapproveをスキップできる場合があります。また、ルーターが対応していればバッチ実行で往復のガスを縮小できます。
効果の目安:承認をスキップできれば、ETH価格にもよりますが数百円〜千円超の節約になることがあります。頻繁に銘柄を入れ替えるトレーダーほど効きます。
ノンス(nonce)管理:詰まりの救済と置換送信
nonceはアカウントの送信順序番号です。小さいnonceの取引が未確定だと、その後のすべてが詰まります。混雑時に低priorityで送ってしまった場合は、同じnonceで置換(replacement)をかけるのが基本です。
- ウォレットの「スピードアップ」や「キャンセル」を使う(内部的に同nonceの新取引を送信)。
- 置換時は前回より高い
maxPriorityFee
と十分なmaxFee
を指定します。経験則として、priorityを+1〜2 gwei
上げ、maxFee
はbaseFee × 2
程度まで広げておくと通りやすいです。 - 何度も微増で置換せず、一発で抜ける水準を狙う方がトータル安く済むことが多いです。
注意:古い未確定トランザクションをキャンセルしたいときも、実態は「同nonceで自己送金 or 0ETH送金」を高priorityで投げて置換します。失敗すると二重に詰まるため、priorityは十分に設定しましょう。
混雑時間帯の回避とスケジューリング
ネットワークはUTC昼〜夕方や話題イベント前後に混みやすい傾向があります。日本時間(JST)では深夜帯に落ち着くことが多いです。短期トレードでも、リバランスや利確など急がないTxは混雑を避けるだけでガスが目に見えて下がります。
- 事前チェック:ウォレットやブロックエクスプローラが提供する推奨baseFee/priorityを確認。
- 目標型の入力:
maxFee = 目標baseFee × 1.5
、priority = 1〜2
を基本に、混雑なら迅速に引き上げる。
MEV回避とプライベート送信の使いどころ
公開メンンプールでは取引が観測され、サンドイッチ攻撃を受けることがあります。ウォレットや一部RPCが提供するプライベート送信(ブロックビルダーへ直接)を使うと、公開メンンプールに出ずに取り込まれるため、価格インパクトの読み違いを減らせます。代わりにpriorityをやや厚めに積む必要がある場合があります。
チェックリスト:送信前の5項目
- 目的は「速度」か「コスト」か(優先度を明確に)。
- 最新のbaseFeeと推奨priorityを確認。
maxFee
はキャップ。baseFee + priority
を十分に覆う値か。- 承認は本当に必要か(Permit2や既存承認、バッチ化)。
- 古い低priorityの取引が詰まっていないか(必要なら置換)。
よくある失敗と対処
- スリッページ過小で失敗:価格が速く動く銘柄は、スリッページとpriorityを同時に見直す。どちらか片方だけでは解決しないことが多いです。
- 何度も少額置換:手数料が積み上がります。最初の置換で抜ける水準に。
- approve無限許可の放置:便利ですが資産リスク。不要になった許可は取り消すか、上限額を限定する運用に。
- ガスリミット不足:余裕を持って設定。高めでも過払いにはなりません。
ミニ計算機(暗算の型)
手元でさっと見積もるには次の型が便利です。
概算手数料(ETH) ≒ gasUsed × (baseFee + priority)[gwei] × 1e-9
概算手数料(円) ≒ 上記 × ETH価格[円]
例えばgasUsed=120,000
、baseFee=12
、priority=2
なら、120,000×14×1e-9=0.00168 ETH
。ETH=¥500,000なら約¥840です。これが承認+スワップなら倍近くになります。Permit2やバッチで1本化できれば、その分がまるごと削減されます。
まとめ
EIP-1559の「maxFeeはキャップ
」「実効はbase+priority
」という骨格、そしてノンス置換の基本だけでも、DEX取引の失敗率と手数料は大きく改善します。小さな最適化の積み重ねが、トータルのリターンを底上げします。今日から、priorityの一段上げ・Permit2・詰まりの即置換の3点を徹底してみてください。
コメント