MEVサンドイッチ攻撃の全解析:ソートからフラッシュスワップまでの致命的な連鎖

作成者: Daii ソース: ミラー

先週の水曜日(3月12日)、ある暗号トレーダーがMEV攻撃を受けて21.5万ドルを一度に失ったというニュースが広まりました。

! d40IzkNmiRRIQY5uP5wMz1zpFo0cMqNwhmogZmhk.png

簡単に言うと、このユーザーは Uniswap v3 の取引プールで 22.08 万ドルの USDC ステーブルコインを等価の USDT に交換しようとしたが、結果として 5,272 USDT しか得られず、わずか数秒で資産が 21.57 万ドル蒸発した。下の図を参照。

! yDgyTJBzWhnGWbbjWdCfwzNHy2RWfixeFPAhUl16.png

上の画像は、この取引のブロックチェーン上の記録のスクリーンショットです。このような悲劇が起こる根本的な原因は、ブロックチェーンの世界で悪名高い「サンドイッチ攻撃」(Sandwich Attack)に遭遇したことです。

! kf5CcjkRVjOcv2Tj5LM63tYSNd150MXNqxzlLXgj.png

このMEV攻撃を最初に明らかにしたのはマイケル(上の画像参照)で、彼は次のように説明しています:

MEVボットが全てのUSDC流動性を入れ替えてtxをフロントランしました。取引が実行された後、彼らは流動性を戻しました。攻撃者はブロックビルダー(bobTheBuilder)に$200kをチップし、この取引から$8kの利益を得ました。

翻訳:MEVロボットは、すべてのUSDC流動性を交換して先行txを行います。取引が実行された後、彼らは流動性を戻します。攻撃者はブロック構築者(bobTheBuilder)に20万ドルの報酬を送り、この取引から8000ドルの利益を得ました。

上記の内容には誤植があります。MEV攻撃ロボットが換金したのは大量のUSDTであり、USDCではありません。

しかし、彼の説明やニュース報道を見た後でも、あなたは依然として混乱しているかもしれません。なぜなら、サンドイッチ攻撃(Sandwich Attack)、先行(front-ran the tx)、流動性を戻す(put back the liquidity)、ブロックビルダーにチップを渡す(tipped a block builder)などの新しい用語があまりにも多いからです。

今日は、このMEV攻撃を例に、その全過程を分解し、MEVという暗い世界を探る旅にあなたを連れて行きます。

まず、MEVとは何かを説明する必要があります。

1. MEV とは何ですか?

MEVは最初、マイナーが抽出可能な価値(Miner Extractable Value)と呼ばれ、マイナーがブロックチェーンのブロック内で取引を再整理、挿入、または排除することによって得られる追加の利益を指します。この操作は、通常のユーザーにより高いコストを負わせたり、より不利な取引価格を得させたりする可能性があります。

イーサリアムなどのブロックチェーンネットワークがプルーフ・オブ・ワーク(Proof-of-Work、PoW)コンセンサス機構からプルーフ・オブ・ステーク(Proof-of-Stake、PoS)コンセンサス機構に移行するにつれて、取引の順序を制御する権限はマイナーからバリデーターの手に移りました。したがって、用語も「マイナーが抽出可能な価値」(Miner Extractable Value)から「最大抽出可能価値」(Maximal Extractable Value)に進化しました。

名前は変わったが、取引の順序を操作して価値を抽出するというコアコンセプトは変わらない。

上記の内容はまだ少し専門的ですが、覚えておいてください:MEVが存在する理由は、以前のマイナーと現在のバリデーターがメモリプール(mempool)内の取引を並べ替える権利を持っているからです。この並べ替えは1つのブロック内で行われ、現在イーサリアムでは約11秒ごとに1つのブロックが生成されます。つまり、11秒ごとにこのような権力の行使が行われるということです。同様に、今回のMEV攻撃もバリデーターの並べ替えによって実現されました。

このリンクをクリックすると、今回の攻撃に関連する番号22029771のブロックに含まれる取引内容が表示されます。以下の図のように。

! gOBtJtdKthPSTi4uxT3qT8ZxgrXMXxlFAbOEp7RC.png

上の図1、2、3の取引は、この記事の冒頭で述べたMEV攻撃であり、この順序は検証者(bobTheBuilder)によって整理されています。なぜこのようにできるのでしょうか?

2. MEVの原理

MEVの働きを理解するためには、まずブロックチェーンがどのように情報を記録し更新するのかを理解する必要があります。

2.1 ブロックチェーンの状態更新メカニズム

ブロックチェーンは、発生したすべての取引を記録する増大する帳簿と見なすことができます。この帳簿の状態は、各アカウントの残高やUniswapの取引プールにおけるさまざまなトークンの備蓄量など、すべて以前の取引によって決まります。

新しいブロックがブロックチェーンに追加されると、そのブロックに含まれるすべてのトランザクションは、ブロック内の配置順に従って順番に実行されます。各トランザクションが実行されるたびに、ブロックチェーンのグローバルな状態がそれに応じて変化します。

つまり、ブロックの順序だけでなく、ブロック内の取引の順序も重要です。それでは、ブロック内の取引の順序はどのように決まるのでしょうか?

2.2 バリデーターはトランザクションの順序を決定します

ユーザーがブロックチェーンネットワーク上でトランザクションを開始すると、例えばこのUniswapを使用してUSDCをUSDTに変換するトランザクションの場合、最初にネットワーク内のノードにブロードキャストされます。初期検証の後、このトランザクションは「メモリプール」(mempool)と呼ばれる領域に入ります。メモリプールは、承認されておらず、次のブロックチェーンのブロックに追加されるのを待っているトランザクションの待機エリアのようなものです。

以前のマイナー(PoWシステム内)、現在のバリデーター(PoSシステム内)は、メモリプールからトランザクションを選択し、これらのトランザクションが次のブロック内での配置順序を決定する権利を持っています。

ブロック内のトランザクションの順序は非常に重要です。 ブロックがファイナライズされてブロックチェーンに追加される前に、そのブロック内のトランザクションはバリデーターによって決定された順序で実行されます(例:bobTheBuilder)。 つまり、ブロックに同じトランザクションプールと対話する複数のトランザクションが含まれている場合、それらのトランザクションが実行される順序は、各トランザクションの結果に直接影響します。

この能力により、バリデーターは特定のトランザクションを優先的に処理したり、他のトランザクションを遅延または除外したり、さらには自分のトランザクションを挿入して利益を最大化することができます。

今回の取引の順序も同様に重要で、少しでもミスがあれば攻撃は成功しない。

2.3 このMEV攻撃におけるトランザクションシーケンス

私たちはまず、今回の MEV 攻撃に関連する 3 つの取引について簡単に理解しましょう:

! dOFw7Sh0V9EIVxqeuCZIDFbCHSXZ7Sl9JXeXJUue.png

  • 取引 1(攻撃者の最初の取引): 被害者の取引の前に実行されます。この取引の目的は通常、被害者が取引したいトークンの価格を押し上げることです。
  • 取引 2(被害者の取引): 攻撃者の最初の取引の後に実行される。攻撃者の以前の操作のため、この時点で取引プール内の価格は被害者に不利であり、彼は同等の USDT を得るためにより多くの USDC を支払う必要があるか、またはより少ない USDT しか得られない。
  • 取引 3(攻撃者の第二の取引): 被害者の取引の後に実行されます。この取引の目的は通常、被害者の取引によって引き起こされた新しい価格変動を利用して利益を得ることです。

今回のMEV攻撃のバリデーターはbob-The-Builder.ethで、彼が取引を1、2、3の順に並べる役割を担っていました。当然、bobTheBuilderは無報酬ではなく、この並べ替えにより100以上のETHの収入を得ました。対照的に、MEV攻撃の発起者は8000ドルの収入しか得られませんでした。彼らの収入の源は被害者の2回目の取引です。

一言で言えば、攻撃者(MEVロボット)とバリデーター(bobTheBuilder)が共謀し、2番目の取引の被害者は21.5万ドルの損失を被り、そのうち攻撃者は8000ドル、バリデーターは20万ドル(100以上のETH)を得ました。

彼らが採用している攻撃方法には、象徴的な名前があります——サンドイッチ攻撃。では、取引を一つずつ説明して、MEVの比較的複雑なサンドイッチ攻撃が一体どういうものなのかを徹底的に理解しましょう。

3. サンドイッチ攻撃の全解析

サンドイッチ攻撃と呼ばれる理由は、攻撃者の2つの取引(取引1と取引3)が被害者の取引(取引2)の前後に配置されるため、全体の取引順序がサンドイッチの構造のようになるからです(上の図を参照)。

取引1と取引3はそれぞれ異なる機能を担っています。簡単に言うと、取引1は犯行を担当し、取引3は分配された利益を収穫する役割を担っています。具体的には、全体のプロセスは次のようになります:

3.1 取引 1 ,USDT の価格を引き上げる責任がある

上の画像の1号取引のリンクをクリックすると、1号取引の詳細が表示されます。攻撃者がUSDTの価格を引き上げるのは非常に直接的で、1865万USDCを使ってその中の1758万USDTを全て交換しました。下の図を参照してください。

! vi4i8ramCtgyZuTSNZLLVLsqry8MONxhGPRUVOsC.png

この時、流動性プールには大量の USDC と少量の USDT が残っています。ニュース報道によれば、攻撃前に Uniswap の流動性にはそれぞれ約 1980 万の USDC と USDT があった場合、取引 1 の実行後、プール内にはわずか 222 万の USDT(=1980-1758)しか残らず、USDC の残高は約 3845 万に増加します(=1980+1865)。

この時、このプールの USDC と USDT の交換比率はもはや 1:1 ではなく、1:17 になりました。つまり、17 USDC を必要とすれば 1 USDT を交換できるということですが、この比率はあくまで概算です。このプールは V3 なので、内部の流動性は均等に分布していません。

もう一点、あなたに伝えたいことがあります。実際、攻撃者は1865万USDCを一度に使用したわけではなく、実際に使用されたUSDCは109万で、6%にも満たないのです。彼はどうやってそれを実現したのでしょうか?攻撃の説明が終わったら、詳しくお話しします。

3.2 取引2、220,000 USDCをUSDTに約定

上の画像の取引2のリンクをクリックすると、下の画像が表示されます。

! x3kBJKcYVyM44HJSUHuIxVQ1ScIutWsoZ6JuRvM7.png

上の図のように、被害者の取引2は取引1の影響で、22万USDCしか5272USDTを受け取れず、知らず知らずのうちに17万USDTを失ってしまいました。なぜ知らず知らずのうちにと言えるのでしょうか?それは、もし被害者がUniswapを通じて取引を行っていた場合、取引を提出する際に以下の画面を見ることになるからです。

! rqLjmsxfcI06dN56OvKVyTctzoiWpvUPvCyEWYom.png

上の図からわかるように、被害者は最低でも22万は保障されているべきです。被害者が最終的に5000 USDT程度しか得られなかったのは、90%以上の大きなスリッページが発生したからです。しかし、Uniswapにはデフォルトの最大スリッページ制限が5.5%あります。下の図を参照してください。

! Qlpu7GNLheCyBJtsy2LEgpo0vVP2oENI4sGcSiiW.png

つまり、被害者が Uniswap のフロントエンドを通じて取引を行った場合、彼は少なくとも 208381 USDT(= 220510 * 94.5%)を受け取るべきです。では、なぜ上記のブロックチェーン記録にこの取引が「Uniswap V3」で行われたと表示されているのでしょうか。

なぜなら、ブロックチェーン取引のフロントエンドとバックエンドは分かれているからです。上記の「Uniswap V3」とは、UniswapのUSDC-USDTの資金プールを指します。このプールは公開されており、どの取引のフロントエンドでもこのプールを通じて取引ができます。

そのため、被害者が単純ではなく、一般の人ではないのではないかという疑念が生まれています。そうでなければ、こんなに大きなスリッページが発生することはないでしょう。おそらく、MEV攻撃を利用してマネーロンダリングを行っている可能性があります。これについては後でお話しします。

3.3 取引3、収穫+戦利品

! hco4wljEJ9HngbaT8S3asZcEGGNpt9HjUPoAA1ka.png

リンクをクリックすると、取引3の詳細を見ることができます。上の図のように、A、B、Cの3つの取引についてそれぞれ説明します。

取引Aでは、プールの流動性を正常に戻し、1732万USDTを使って1860万USDCを換えました;

Bを取引し、戦利品を共有する準備をし、収益の一部(204,000 USDCを105 ETHに交換します)。

トランザクションC、戦利品を分割し、バリデーターbob-The-Builder.ethに100.558ETHを支払います。

これにて、サンドイッチ攻撃は終了です。

今、上記で言及された非常に重要な質問に答えます:攻撃者はどのようにして 109 万 USDC で 1800 万の攻撃を実現したのか。

4. 攻撃者はどのように1800万USDCのプール攻撃を実現したのか

攻撃者が109万USDCの元本だけで1800万ドル規模の攻撃を実現できたのは、ブロックチェーンの世界に存在する魔法のようで特別なメカニズム——Uniswap V3のフラッシュスワップ(Flash Swap)によるものです。

4.1 フラッシュスワップとは何ですか?

簡単に言うと:

ライトニング交換では、ユーザーが同じ取引内でまず Uniswap プールから資産を引き出し、その後別の資産(または同じ資産に手数料を加えたもの)で返済することができます。

Uniswapは、取引全体が同じ取引内で完了する限り、この「先に商品を受け取り、後で支払う」行為を許可しています。注意すべきは、必ず同じ取引内で完了する必要があるということです。このように設計されているのは、Uniswapプラットフォーム自体の安全性を保障するためです。

  • ゼロリスク貸出:Uniswapはユーザーが担保なしでプールから一時的に資金を引き出すことを許可しています(貸出に似ています)が、取引が終了した時点で直ちに返済する必要があります。
  • 原子性(Atomicity):全体操作は原子的でなければならず、完全に成功するか(資金が返還される)、完全に失敗するか(取引がロールバックされる)でなければならない。

ライトニング交換の設計の目的は、より効果的にオンチェーンアービトラージ(Arbitrage)を行うことでしたが、不幸にもMEV攻撃者によって利用され、市場操作の手段となってしまいました。

4.2 スピード交換はどのようにサポートしているのか?

次に、図を見ながら、ステップバイステップで今回の攻撃におけるフラッシュスワップがどのように実現されたかを理解していきましょう。下の図をご覧ください。

! S6eRIwZXTXtWBU7tUaAjr9bvAm2RIPpdoyjiHnhn.png

  • F1 攻撃者は独自の 701 WETH を使用して AAVE から 109 万 USDC を借り入れました。
  • F2 攻撃者はフラッシュスワップリクエストを開始し、最初に Uniswap プールから 1758 万 USDT を引き出します(この時点では先に支払う必要はありません)。攻撃者のアカウントは一時的に 1758 万 USDT が増加します;
  • F3 攻撃者は迅速にこの 1758 万 USDT を Curve プールに投入し、1755 万 USDC に交換しました。攻撃者のアカウントでは USDT が 1758 万減少し、USDC が 1755 万増加しました。下の図からわかるように、攻撃者が Curve を選んだ理由は、ここに流動性が非常に豊富で、USDT は 7054 万以上、USDC も 5071 万あり、スリッページが比較的低いためです。

! o1LnGSaUlzRjt7vqs5YOy0wqTRznOxzRkjVHSdEw.png

  • F4 攻撃者は、Curveから換金した1755万USDCに、もともと用意していた109万USDC(Aaveの借入金)を加え、合計1864万USDCを一度にUniswapに返済し、フラッシュスワップが完了しました;

この取引(トランザクション1)の後、Uniswapに返還された1,864万USDCのうち1,755万USDCのみがCurveに交換され、残りの109万USDCが攻撃者の自己資金であったため、攻撃者の口座残高は109万USDC減少しました。

あなたは気づいたでしょうが、この取引は実際に攻撃者に109万の損失をもたらしました。しかし、その後の取引3は、同じくフラッシュスワップの手法を使って、109万USDCを取り戻しただけでなく、さらに20万以上の利益を得ました。

! oKE3vvGoW8lIISTane5LmOrh3BrDYyLV5PxHLXkM.png

次に、取引3のデータに基づいて、一歩一歩分析してみましょう。

  • K1 攻撃者が Uniswap で 1860 万 USDC をフラッシュスワップで引き出しました;
  • K2の攻撃者は、1,732万USDTをUniswapから引き出したばかりのUSDCの一部と1,730万USDCで交換しました。
  • K1 攻撃者は、Curve から戻された 1732 万 USDT を Uniswap に返しました。フラッシュスワップが完了しました。注意すべき点は、攻撃者が K2 を通じて 1730 万 USDC を使って 1732 万 USDT を手に入れたことです。残りの 130 (= 1860-1730) 万 USDC の中には、109 万の自己資金があり、残りの 21 万 USDC が今回の攻撃の利益です。
  • K3 攻撃者は、元本を AAVE に返却し、701 WETH を取り戻し、同時に 20 万 USDC を 105 ETH に交換し、そのうちの 100.558 ETH を検証者にチップとして渡しました(約 20 万ドル)、自分は 1 万ドル未満の利益だけを残しました。

あなたは驚くかもしれませんが、なぜ攻撃者が検証者に最大20万ドルの利益を差し出すことをいとわないのでしょうか?

4.3 なぜ 20 万ドルの「チップ」を渡すのか?

実際、これは寛大さではなく、サンドイッチ攻撃というMEV攻撃が成功するための必要条件です。

  • 成功した攻撃の核心は、トランザクション順序の正確な制御であり、トランザクション順序を制御するのはバリデーター(bobTheBuilder)です。
  • バリデーターは、攻撃者が被害者のトランザクションが攻撃トランザクション間にあることを確認するのに役立つだけでなく、さらに重要なことに、バリデーターは、他の競合するMEVボットがキューをカットしたり、攻撃の正常な完了を妨害したりできないようにします。

したがって、攻撃者は攻撃の成功を確保するために、ほとんどの利益を犠牲にしてでも、自分自身のために一定の利益を残すことを選ぶ。

特に説明しておく必要がありますが、MEV攻撃にもコストがかかります。Uniswapのフラッシュスワップにはコストがあり、Curveの取引にもコストがあります。ただし、手数料が比較的低いため、約0.01〜0.05%であるため、攻撃によって得られる利益と比べると、取るに足らないものとなります。

最後にもう一度お知らせしますが、MEV攻撃の防御は実は非常に簡単です。設定する必要があるのは、スリッページの許容度を1%以内に抑えることと、大きな取引を数回に分けて実行することです。ですので、あなたは決して恐れてDEX(分散型取引所)での取引をやめる必要はありません。

エピローグ:暗黒の森の警告と啓示

215,000ドルのMEV攻撃は、ブロックチェーンの世界における「闇の森」法のもう一つの残忍なデモンストレーションであることは間違いありません。 それは、メカニズムの抜け穴を悪用して利益を得る分散型のパーミッションレス環境に潜む複雑なゲームを鮮やかに明らかにします。

より高い視点から見ると、MEVの出現はブロックチェーンの透明性とプログラム可能性の両刃の剣効果を反映しています。

  • 一方で、すべての取引記録が公開されており、攻撃行為を追跡して分析することが可能です;
  • 一方で、スマートコントラクトの複雑なロジックと取引実行の確実性は、賢い参加者に機会を提供します。

これは単なるハッキング行為ではなく、ブロックチェーンの基本的なメカニズムに対する深い理解と活用であり、プロトコル設計の堅牢性を試し、参加者のリスク意識に挑戦しています。

MEVとそのリスクを理解することは、機会と危険のデジタル世界をナビゲートするための鍵です。 ブロックチェーンの「暗い森」では、ルールを尊重し、認知力を向上させることによってのみ、次の食い物になるのを避けることができることを忘れないでください。

これも私がこの記事を通じて達成したい効果です。

原文表示
内容は参考用であり、勧誘やオファーではありません。 投資、税務、または法律に関するアドバイスは提供されません。 リスク開示の詳細については、免責事項 を参照してください。
  • 報酬
  • コメント
  • 共有
コメント
0/400
コメントなし
  • ピン
いつでもどこでも暗号資産取引
qrCode
スキャンしてGate.ioアプリをダウンロード
コミュニティ
日本語
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • ไทย
  • Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)