サンドイッチ攻撃とは?MEVボットがDEX取引から利益を盗む方法

サンドイッチ攻撃はMEV(Maximal Extractable Value)悪用の一種で、ボットが保留中のスワップトランザクションを検出し、被害者の取引の前後に自分の取引を配置して、結果的な価格変動から利益を抽出するものです。

この攻撃はAMMベースの分散型取引所を持つすべてのブロックチェーンで発生します — Solana、Ethereum、BSC、Baseなど。DEXトレーダーが予期しない損失を被る最も頻繁な原因の1つであり、ほとんどの被害者は攻撃を受けたことに気づきません。

このガイドでは、サンドイッチ攻撃のメカニズム、収益性を高める条件、保護方法について説明します。

ブロックチェーントランザクションの処理方法

サンドイッチ攻撃がどのように機能するかを理解するには、Solana、Ethereum、BSCなどのブロックチェーンでトランザクションがどのように処理されるかを最初に理解することが役立ちます。

ブロックチェーンは「スワップ」をクリックした瞬間にトランザクションを1つずつ処理するのではありません。代わりにバッチで処理します。ブロックチェーンはすべての受信トランザクションを収集し、グループ化して、バッチ全体を一度に処理します。各バッチをブロックと呼び、1つのブロックを生成するのにかかる時間をブロックタイムと呼びます。

ブロックチェーンブロックタイム
Solana約0.4秒
Monad約0.4秒
Arbitrum約0.25秒
Base約2秒
Polygon約2秒
Optimism約2秒
Avalanche約2秒
BNB Chain約3秒
Ethereum約12秒

Ethereumでは約12秒ごとに新しいブロックが生成されます。以下の例は、同じ12秒の窓内に異なる時間に送信された5つのトランザクションがすべて一緒に確認されるが — 送信順序とは無関係な順序で実行されることを示しています:

トランザクション送信時刻確認時刻実行順序
トランザクション A午後3:00:01午後3:00:123番目
トランザクション B午後3:00:03午後3:00:121番目
トランザクション C午後3:00:05午後3:00:125番目
トランザクション D午後3:00:08午後3:00:122番目
トランザクション E午後3:00:11午後3:00:124番目

5つのトランザクションはすべてブロックが作成される午後3:00:12に確認されます。しかし実行順序 — 実際に誰が先に取引するかを決定する順序 — は、最初に送信した人ではなく、ブロックを生成するバリデータによって決定されます。

優先手数料、MEVチップ、またはバリデータとの直接的な関係などの要因が、トランザクションがシーケンスのどこに配置されるかに影響します。トランザクションBは2番目に送信されましたが1番目に実行されました。トランザクションAは1番目に送信されましたが3番目に実行されました。

これがサンドイッチ攻撃が可能な根本的な理由です。MEVボットはパイプラインで保留中のトランザクションを監視し、より高い手数料を支払うことで、ブロック内の実行順序を操作して自分のトランザクションをあなたの前後に配置できます。

サンドイッチ攻撃の仕組み

サンドイッチ攻撃はスワップが流動性プールのトークン価格を動かすという事実を悪用します。ステップバイステップで説明します。

  1. スワップを送信します:DEXでトークンXを購入するトランザクションを送信します。このトランザクションがブロックに含まれる前に、ネットワークのトランザクションパイプラインに入ります — Ethereumでは公開メンプール、Solanaではトランザクション転送レイヤー — ここで一時的に見えます。
  2. ボットがトランザクションを検出します:パイプラインを常にスキャンしているMEVボットが保留中のスワップを発見します。いくら購入するかを見て、取引が価格をどれだけ動かすかを計算します。プールの流動性に対して取引が大きいほど、価格がより動き — 攻撃がより収益的になります。
  3. ボットがフロントランします:ボットはより高い優先手数料で自分の買いトランザクションを送信し、同じブロックであなたの前に実行されるようにします。ボットの購入がトークン価格を押し上げます。
  4. あなたのトランザクションが実行されます:スワップは今より高い価格で実行されます。ボットの干渉がなければ受け取れたはずのトークンより少なくなります。
  5. ボットがバックランします:あなたのトランザクションの直後、ボットはステップ3で購入したトークンを売却します。あなたの購入が追加の上昇価格圧力を作り、ボットはそのより高い価格で売却します。

ボットの売却後、価格は下がります。あなたは支払った額より価値が低いトークンを保有することになります。ボットは買値と売値の間のスプレッドを獲得しました — あなたの取引から直接抽出された価値です。

この全シーケンスは単一ブロック内で発生します。

Ethereum DEXでの実際のサンドイッチ攻撃の例

上の画像はEthereum Uniswap V2 Poolで捕捉された実際のサンドイッチ攻撃を示しています。同じブロック内で正確に同じ時間(午前06:28:23)に3つのトランザクションが実行されました:

  1. **1FaE13(MEVボット)**が$616.13相当のDATトークンを購入 — フロントラン。
  2. **8a23ff(被害者)**が$1.9相当のDATトークンを購入 — 今より高い価格で実行。
  3. **1FaE13(MEVボット)**が$617.84相当のDATトークンを売却 — バックラン、約$1.71の利益を獲得。

被害者の$1.9の取引は小さかったですが、ボットが利益を抽出するには十分でした。攻撃全体 — 買い、被害者、売り — が単一ブロックで起こりました。

取引がサンドイッチ攻撃の対象になる場合

すべてのスワップがサンドイッチされるわけではありません。MEVボットは期待利益がコストを上回る場合にのみ攻撃します。以下の条件が取引を対象にします:

  • プールサイズに対して大きな取引。$500の流動性を持つプールでの$50のスワップは、価格を約10%以上動かします — サンドイッチボットの収益的な対象です。$5,000,000の流動性を持つプールでの同じ$50はほとんど価格を動かさず、攻撃する価値がありません。
  • **高いスリッページ許容。**スリッページを10%以上に設定すると、大幅に悪い価格を受け入れるという信号を送ります。これはボットがトランザクションがリバートする前に価格を押し上げる余地を与えます。
  • **低流動性トークン。**新しくローンチされたトークンやミームコインは小さなプールを持つ傾向があります。適度なスワップでもボットが悪用するのに十分な価格変動を作ります。

サンドイッチ攻撃からの保護方法

1. MEV保護トランザクションルーティングを使用

最も効果的な保護は、ボットが最初からトランザクションを見られないようにすることです。

  • SolanaでJitoバンドルは公開トランザクションパイプラインをバイパスし、スワップをJitoブロックエンジンに直接送信します。MEVボットは観察できません。ほとんどのSolana取引ツールはすでにこれをサポートしています — 「Jito Tip」フィールドが見えれば、トランザクションはJitoを通じてルーティングされています。Jitoはまたjitodontfrontメカニズムを提供し、トランザクションが含まれるすべてのバンドルで必ず最初に表示されるようにします。
  • EthereumおよびEVMチェーンで:Flashbots Protect、MEV Blocker、プライベートRPCなどのサービスが、公開メンプールの代わりにプライベートメンプールを通じてトランザクションをルーティングします。一部のウォレットやDEXフロントエンドではビルトインオプションとして提供しています。

2. スリッページをタイトに設定

スリッページ許容は受け入れる最悪の価格を定義します。スリッページを1%に設定すると、期待より1%以上悪い価格では実行されずトランザクションが失敗します。

これはボットの利益マージンを制限します。ボットがトランザクションがリバートする前にごくわずかしか抽出できなければ、ボット自体の手数料とチップコストを考慮すると攻撃は不採算になります。

ほとんどのスワップでは1–3%のスリッページで十分です。非常にボラタイルなトークンや、より悪い価格を受け入れる覚悟のあるローンチ時にのみ上げてください。

3. 大量取引を分割

1つのトランザクションで大量にスワップする代わりに、複数の小さなスワップに分割します。各小さな取引は価格インパクトが少なく、サンドイッチボットにとってそれぞれが魅力的でなくなります。

デメリットはトランザクションと手数料が増えることですが、サンドイッチ攻撃を避けることで節約できる金額は通常、追加コストを上回ります。

4. 極端に低い流動性のプールを避ける

プールの流動性が非常に低い場合、小さな取引でも巨大な価格インパクトを作ります。これらのプールはサンドイッチボットの最も簡単なターゲットです。スワップ前にDEXScreener、Birdeye、DexToolsでプールの流動性を確認してください。

5. 事後にトランザクションを確認

sandwiched.meのようなツールで、ウォレットがサンドイッチ攻撃の影響を受けたか確認できます。過去のトランザクションをレビューすることで、パターンを特定し戦略を調整するのに役立ちます — よりタイトなスリッページ、より小さな取引、またはMEV保護ルーティングへの切り替え。

サンドイッチ攻撃 vs. 他の価格下落

購入後のすべての損失がサンドイッチ攻撃ではありません。

  • サンドイッチ攻撃:トランザクションの直前に価格が急騰し、直後に下がります — 同じブロックまたは次のブロック内で。ブロックエクスプローラーで、同じウォレットやプログラムからあなたの直前の大量買いと直後の大量売りを確認できます。
  • 通常の売り圧力:購入後、数分から数時間かけて価格が緩やかに下落します。他のホルダーが売却しており、これは正常な市場行動です。
  • ラグプル:開発者がプールからすべての流動性を除去します。価格が即座にほぼゼロに下がり、トークンは取引不可能になります。

まとめ

サンドイッチ攻撃は、DEX価格がプール流動性に対する取引サイズに基づいて動き、ブロック内のトランザクション順序が最初に送信した人ではなくバリデータによって制御されるという事実を悪用します。

自分を守るために:MEV保護ルーティング(SolanaでJito、EthereumでFlashbots Protect)を使用し、タイトなスリッページを設定し、大量取引を分割し、スワップ前にプール流動性を確認してください。

FAQ

どのチェーンでもサンドイッチされる可能性はありますか?

はい。AMMベースのDEXを持つすべてのチェーンが影響を受けます — Solana、Ethereum、BSC、Base、Polygon、Arbitrumなど。脆弱性は特定のチェーンやDEXではなく、AMMが価格を計算する方法に起因します。

高いスリッページは必ずサンドイッチされるということですか?

自動的にはそうではありませんが、リスクが大幅に増加します。高いスリッページはネットワークに悪い価格を受け入れると伝え、ボットが利益を抽出する余地を与えます。スリッページはできるだけ低く保ってください。

サンドイッチ攻撃は違法ですか?

ほとんどの管轄区域で明確な法的フレームワークがありません。SolanaではSolana FoundationとJitoがサンドイッチ攻撃に参加するバリデータを委任プログラムから除外する措置を取っています。EthereumではFlashbotsやその他のインフラプロバイダーがMEV抽出を減らすために取り組んでいます。