MEV保護:DEXでのサンドイッチ攻撃を回避する方法
— By Tony Rabbit in Tutorials

サンドイッチ攻撃に対するMEV保護の実践的な防御ガイド:スリッページを適切に厳しく設定し、プライベートRPCを介してルーティングし、大きな注文を分割し、サンドイッチされたかどうかを確認します。
サンドイッチ攻撃に対するMEV保護とは、ボットがあなたのスワップの直前に買い、直後に売ることで、あなたの取引が作り出す価格変動を利益として手に入れるのを防ぐことを意味します。サンドイッチ攻撃は、最大抽出可能価値(MEV)の一種であり、ボットが公開メンプールであなたの保留中のトランザクションを検出し、それをフロントランして価格を押し上げ、あなたの取引をその不利な価格で成立させ、その後利益のために売却します。良いニュースは、これは解決可能な問題であるということです。適切なスリッページ設定、プライベートトランザクションルート、そしてより賢い注文サイズ設定により、あなたのスワップを攻撃に対して不採算にすることができます。このガイドは、単なる定義ではなく、実践的な方法なので、すぐに防御策に入りましょう。
主要なポイント
- サンドイッチボットが必要とするのは2つ:公開メンプールであなたのトランザクションが見えること、そして価値を抽出するのに十分なスリッページ幅。
- 取引が許す限りスリッページを厳しく設定する。高いスリッページは安全マージンではなく、公然の招待状である。
- 保護された、またはプライベートなRPCは、あなたの保留中のスワップを隠すため、ボットはそれを見てサンドイッチすることができない。
- 大きな注文を分割し、ガス料金がピークの薄いプールを避けることで、ボットが餌とする価格影響を取り除く。
- 過去のサンドイッチ攻撃は、あなたのトランザクションを同じブロックで挟む買いと売りを検査することで確認できる。
1つの図で見る、サンドイッチ攻撃の仕組み
サンドイッチ攻撃は、単一のブロック内で、3つの順序付けられたトランザクションで発生します。ボットは公開メンプールを監視し、あなたの買い注文がマイニングされるのを待ち、あなたのトランザクションの両側に自身のトランザクションを挿入します。下の図は正確なシーケンスを示しています。
この攻撃は、2つのドアが同時に開いているためにのみ機能します。あなたのトランザクションは、どのボットでも読み取れる公開メンプールにブロードキャストされ、あなたのスリッページ許容範囲は、ボットが押し上げる価格を吸収するのに十分な広さがあるためです。どちらかのドアを閉じれば、攻撃者にとっての計算は成り立たなくなります。完全なメカニズムについては、仮想通貨におけるサンドイッチ攻撃とは何か、およびより広範なDEX取引におけるMEVリスクを参照してください。
スリッページを正しく厳しく設定する(そして、なぜ高すぎるスリッページが攻撃を招くのか)
スリッページ許容範囲とは、確認ボタンを押してからスワップが決済されるまでの間に許容する最大価格変動です。これは、ボラティリティの高い取引が失敗しないように存在しますが、あなたが許容するすべてのパーセンテージポイントは、サンドイッチボットが盗むことができる余地となります。流動性の高いペアで10%のスリッページを設定した場合、あなたはネットワークに対して最大10%不利な約定を受け入れることを伝えていることになり、ボットは利益になる限り正確にその分を奪い取ります。
丸くて快適な数値にデフォルト設定するのではなく、取引が許す限りスリッページを厳しく設定してください。流動性の高い深いプールでは、0.1%から0.5%で十分な場合が多いです。ボラティリティの高いトークンや新しくローンチされたトークンは、実際の価格変動のために本当に多く必要とするかもしれませんが、追加のポイントはすべて安全ではなく、露出として扱ってください。低いスリッページでスワップが失敗し続ける場合、正直な解決策は通常、薄いプールまたは大きすぎる注文であり、許容範囲を15%に引き上げることではありません。約定が悪くなる理由を理解するには、スリッページ、価格影響、プール深度がどのように悪い約定を引き起こすかを読んでください。
保護された、またはプライベートなRPCを使用して、公開メンプールから離れる
最も効果的な防御策は、ボットが監視している場所にあなたの取引をブロードキャストするのをやめることです。通常のスワップはまず公開メンプールに送られ、そこで数秒間待機し、待機中は完全に読み取り可能です。保護された、またはプライベートなRPCは、あなたのトランザクションをリレーを介してブロックビルダーに直接送信するため、MEVボットがフロントランニングやサンドイッチ攻撃を行うことができる公開プールに留まることはありません。
実際には、設定を1つ変更するだけです。ウォレットのネットワーク設定で、デフォルトのRPCエンドポイントを、この目的のために構築されたサービスが提供するサンドイッチ耐性のあるものに置き換え、その後は通常通りスワップします。多くのウォレットやフロントエンドは現在、MEV保護をデフォルトで有効にしていますが、あなたが保護されていると仮定する前に、実際にそうであるかを確認してください。プライベートなルートは、ボットがそもそも取引を挟み込むことができないため、失敗した攻撃や元に戻された攻撃の試みがあなたにコストをかけないことも意味します。
大きな注文を分割し、MEV対応アグリゲーターを使用する。ガス料金がピークの薄いプールは避ける
ターゲットになるのはサイズです。深いプールでの小さなスワップは価格をほとんど動かさないため、抽出できるものはほとんどありません。浅いプールでの大きなスワップは価格を大きく動かし、その動きこそがサンドイッチボットが捉える利益です。このリスクを減らすには2つの習慣があります。
まず、大きな注文を小さなピースに分割し、単一のトランザクションが攻撃に値するほどの大きな価格変動を引き起こさないようにします。次に、複数のプールにわたって取引を分散させ、プライベートな注文フローを介して送信できるMEV対応アグリゲーターを介してルーティングします。1inchのようなDEXアグリゲーターは、単一のプールよりも深い結合流動性を見つけ、多くの場合、ルートに保護を含んでいます。最後に、混雑がボットに最も時間と行動のインセンティブを与えるガス料金がピークの時に、薄いプールで大きな取引を実行することは避けてください。静かな時間に取引すれば、DEXでガス料金を下げる方法で説明されているように、支払う費用も少なくなります。
取引履歴でサンドイッチ攻撃を受けたことを確認する方法
約定がおかしいと感じた場合、後からサンドイッチ攻撃を受けたかどうかを確認できます。ブロックエクスプローラーであなたのスワップを開き、そのブロック番号と位置をメモしてください。サンドイッチ攻撃は明確な痕跡を残します。同じブロック内で、同じボットアドレスがあなたのトランザクションの直前にあなたのトークンを買い、直後に売っているはずです。
3つのチェックで確認してください。まず、そのブロック内のあなたのトランザクションを囲むトランザクションを見て、1つのアドレスによる同じトークンの買いと売りがあなたのスワップを挟んでいるかを確認します。次に、あなたが受け取った価格をブロック直前のプール価格と比較します。明らかに悪い約定で、直後に価格が戻っている場合はそれが兆候です。第三に、挟み込み取引が同じ送信者を共有しているか、または明確に連携していることを確認します。これら3つすべてが一致すれば、あなたはサンドイッチ攻撃を受けました。そして、上記の主要なポイント(厳密なスリッページとプライベートRPC)が次回それを防ぐものとなります。
この記事は教育目的のみであり、金融アドバイスではありません。