文:ダイイ先週の水曜日(3月12日)、ある暗号トレーダーがMEV攻撃により一度に21.5万ドルの損失を被ったことが話題になりました。簡単に言うと、このユーザーは Uniswap v3 取引プールで 22.08 万ドル相当の USDC ステーブルコインを同等の USDT に交換しようとしましたが、結果として 5,272 USDT しか得られず、わずか数秒で資産が 21.57 万ドル蒸発しました。下の図を見てください。上の図は、この取引のブロックチェーン上の記録のスクリーンショットです。このような悲劇が起こる根本的な原因は、ブロックチェーンの世界で悪名高い「サンドイッチ攻撃」(Sandwich Attack)に遭遇したことです。今回の MEV 攻撃を最初に公表したのは Michael(上の画像を参照)で、彼は次のように説明しました: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)内のトランザクションを並べ替える権利を持っているからです。この並べ替えはブロック内で行われます。現在、イーサリアムはおおよそ11秒ごとに1つのブロックを生成します。つまり、11秒ごとにこのような権力の行使が行われるのです。同様に、今回のMEV攻撃もバリデーターの並べ替えによって実現されました。このリンクをクリックすると、今回の攻撃に関連する番号22029771のブロックに含まれる取引内容が表示されます。以下の図の通りです。上記のトランザクション 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 つの取引について簡単に理解しましょう:取引1(攻撃者の最初の取引):被害者の取引の前に実行されます。この取引の目的は通常、被害者が取引したいトークンの価格を押し上げることです。取引 2(被害者の取引):攻撃者の最初の取引の後に実行されます。攻撃者の以前の操作により、この時点で取引プール内の価格は被害者に不利であり、彼は同等の USDT を得るためにより多くの USDC を支払う必要があるか、またはより少ない USDT しか得られない。取引3(攻撃者の2番目の取引):被害者の取引の後に実行されます。この取引の目的は通常、被害者の取引によって引き起こされた新しい価格変動を利用して利益を得ることです。今回の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 の価格を上げる責任がある上の図のトランザクションNo.1のリンクをクリックすると、トランザクションNo.1の詳細が表示され、攻撃者はUSDTの価格を上げる、つまり1,865万USDCを使用してその中の1,758万USDTをすべて交換するという非常に直接的な方法もあります。この時、流動性プールには大量の 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のリンクをクリックすると、下の画像が表示されます。上の図のように、被害者の取引2は取引1の影響を受け、22万USDCが5272 USDTしか得られず、知らず知らずのうちに17万USDTを失ってしまいました。なぜ知らず知らずのうちにと言えるのでしょうか?それは、被害者がUniswapを通じて取引を行った場合、取引を提出する際に以下のインターフェースが表示されるからです。上の図からわかるように、被害者は少なくとも22万は保証されるべきです。被害者が最終的に5000 USDT以上しか得られなかったのは、90%以上の大きなスリッページが発生したためです。しかし、Uniswapにはデフォルトの最大スリッページ制限が5.5%あります。下の図を参照してください。つまり、被害者が Uniswap のフロントエンドを通じて取引を行った場合、彼は少なくとも 208381 USDT(= 220510 \* 94.5%)を受け取ることになるはずです。なぜ上記のブロックチェーン記録にこの取引が「 Uniswap V3」で行われたと表示されているのか疑問に思うかもしれません。なぜなら、ブロックチェーン取引のフロントエンドとバックエンドは分かれているからです。上で述べた「Uniswap V3」は、UniswapのUSDC-USDTの資金プールを指します。このプールは公開されており、どの取引のフロントエンドもこのプールを通じて取引を行うことができます。この点もあって、被害者が単純ではなく、一般の人ではないのではないかという疑いがある。そうでなければ、こんなに大きなスリッページが発生することはないかもしれず、MEV攻撃を利用してマネーロンダリングを行っている可能性がある。これについては後で話しましょう。3.3 取引3、収穫+戦利品リンクをクリックすると、取引 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 フラッシュ交換はどのようにサポートするのか?次に、図を見ながら、ステップバイステップで今回の攻撃におけるフラッシュエクスチェンジがどのように実現されているのかを理解していきましょう。下の図をご覧ください。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 万あり、スリッページが比較的低いからです。F4 攻撃者は、Curve で交換した 1755 万 USDC と、元々用意していた 109 万 USDC(Aave の借入による)を合わせて、合計 1864 万 USDC を一度に Uniswap に返済し、フラッシュスワップが完了した;この取引(取引 1)の後、攻撃者のアカウント残高は 109 万 USDC 減少しました。なぜなら、Uniswap に返還された 1864 万 USDC のうち、1755 万 USDC だけが Curve からのもので、残りの 109 万 USDC は攻撃者の自己資金だからです。あなたは気づいたはずです。この取引は実際には攻撃者に109万の損失をもたらしました。しかし、その後の取引3も同様にフラッシュ交換の手法を使い、109万USDCを取り戻しただけでなく、さらに20万以上を得ました。以下の取引3のデータに基づいて、一歩一歩分析していきます。K1 攻撃者は、Uniswap で1860万 USDCをフラッシュスワップで引き出しました;K2の攻撃者は、Uniswapから引き出されたばかりのUSDC1,730万USDCの一部を交換することで、1,732万USDTをスワップバックしました。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(分散型取引所)での取引を避ける必要はありません。結論:暗い森の警告と啓示この21万5000ドルのMEV攻撃事件は、間違いなくブロックチェーンの世界における「ダークフォレスト」法則の再び残酷な表れです。それは、非中央集権で許可不要な環境において、メカニズムの隙間を利用して利益を掠め取る複雑なゲームが潜んでいることを生き生きと示しています。より高い視点から見ると、MEVの出現はブロックチェーンの透明性とプログラム可能性の両刃の剣の効果を示しています。一方で、すべての取引記録が公開されており、攻撃行為を追跡し分析することが可能です;一方で、スマートコントラクトの複雑なロジックと取引実行の確実性は、賢い参加者にとってチャンスを提供します。これは単なるハッキング行為ではなく、ブロックチェーンの基盤となるメカニズムの深い理解と活用であり、プロトコル設計の堅牢性を試し、参加者のリスク意識に挑戦しています。MEVを理解し、そのリスクを認識することで、この機会に満ちた、しかし危機も潜むデジタル世界をより良く航行できるようになります。ブロックチェーンの「ダークフォレスト」では、ルールを尊重し、認識を高めることだけが、次に飲み込まれる獲物にならないための方法です。これも私がこの記事を通じて達成したい効果です。
MEVサンドイッチ攻撃の全解析:並び替えからフラッシュスワップまでの致命的な連鎖
文:ダイイ
先週の水曜日(3月12日)、ある暗号トレーダーがMEV攻撃により一度に21.5万ドルの損失を被ったことが話題になりました。
簡単に言うと、このユーザーは Uniswap v3 取引プールで 22.08 万ドル相当の USDC ステーブルコインを同等の USDT に交換しようとしましたが、結果として 5,272 USDT しか得られず、わずか数秒で資産が 21.57 万ドル蒸発しました。下の図を見てください。
上の図は、この取引のブロックチェーン上の記録のスクリーンショットです。このような悲劇が起こる根本的な原因は、ブロックチェーンの世界で悪名高い「サンドイッチ攻撃」(Sandwich Attack)に遭遇したことです。
今回の MEV 攻撃を最初に公表したのは Michael(上の画像を参照)で、彼は次のように説明しました:
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とは何かを説明する必要があります。
MEVは最初、マイナー抽出可能価値(Miner Extractable Value)と呼ばれ、マイナーがブロックチェーンのブロック内でトランザクションの順序を再配置したり、挿入したり、除外したりすることによって得られる追加の利益を指します。このような操作は、一般ユーザーがより高いコストを支払うか、より不利な取引価格を得る原因となる可能性があります。
イーサリアムなどのブロックチェーンネットワークがプルーフ・オブ・ワーク(Proof-of-Work、PoW)コンセンサスメカニズムからプルーフ・オブ・ステーク(Proof-of-Stake、PoS)コンセンサスメカニズムに移行するにつれて、取引の順序を制御する権力はマイナーからバリデーターに移りました。したがって、用語も「マイナーが抽出可能な価値」(Miner Extractable Value)から「最大抽出可能な価値」(Maximal Extractable Value)に進化しました。
名称は変わっても、取引の順序を操作して価値を引き出すという核心概念は変わらない。
上記の内容はやや専門的ですが、次のことを覚えておけば大丈夫です:MEVが存在する理由は、以前のマイナーや現在のバリデーターがメモリプール(mempool)内のトランザクションを並べ替える権利を持っているからです。この並べ替えはブロック内で行われます。現在、イーサリアムはおおよそ11秒ごとに1つのブロックを生成します。つまり、11秒ごとにこのような権力の行使が行われるのです。同様に、今回のMEV攻撃もバリデーターの並べ替えによって実現されました。
このリンクをクリックすると、今回の攻撃に関連する番号22029771のブロックに含まれる取引内容が表示されます。以下の図の通りです。
上記のトランザクション 1、2、3 は、この記事の冒頭で説明した MEV 攻撃であり、バリデーター (bobTheBuilder) の順番です。 なぜこのようなことが可能なのでしょうか?
MEVがどのように機能するかを理解するには、ブロックチェーンがどのように情報を記録および更新するかを理解する必要があります。
2.1 ブロックチェーンの状態更新メカニズム
ブロックチェーンは、発生したすべての取引を記録する成長し続ける台帳と見なすことができます。この台帳の状態、例えば各アカウントの残高やUniswapの取引プールにおけるさまざまなトークンの準備量などは、以前の取引によって決まります。
新しいブロックがブロックチェーンに追加されると、そのブロックに含まれるすべての取引は、ブロック内の配置順に従って順次実行されます。取引が実行されるたびに、ブロックチェーンのグローバルな状態はそれに応じて変化します。
つまり、ブロックの順序だけでなく、ブロック内の取引の順序も重要です。それでは、ブロック内の取引の順序はどのように決定されるのでしょうか?
2.2 バリデーターはトランザクションの順序を決定する
ユーザーがブロックチェーンネットワーク上で取引を開始すると、例えばUniswapを通じてUSDCをUSDTに変換するこの取引は、まずネットワーク内のノードにブロードキャストされます。初期検証を経て、この取引は「メモリプール」(mempool)と呼ばれる領域に入ります。メモリプールは待機エリアのようなもので、その中の取引はまだ確認されておらず、ブロックチェーンの次のブロックに追加されていません。
以前のマイナー(PoW システムで)、現在のバリデーター(PoS システムで)は、メモリプールからトランザクションを選択し、次のブロック内でのこれらのトランザクションの配置順序を決定する権限を持っています。
ブロック内の取引の順序は非常に重要です。ブロックが最終確認され、ブロックチェーンに追加される前に、このブロック内の取引は検証者(例えば、bobTheBuilder)が決定した順序で実行されます。これは、ブロックに同じ取引プールと相互作用する複数の取引が含まれている場合、これらの取引の実行順序が各取引の結果に直接影響を与えることを意味します。
この能力により、バリデーターは特定のトランザクションを優先的に処理し、他のトランザクションを遅延または除外し、さらには自らのトランザクションを挿入して利益を最大化することができます。
今回の取引の順序も同様に重要で、少しのミスがあれば攻撃は成功しません。
2.3 このMEV攻撃におけるトランザクションシーケンス
私たちはまず、今回の MEV 攻撃に関連する 3 つの取引について簡単に理解しましょう:
取引1(攻撃者の最初の取引):被害者の取引の前に実行されます。この取引の目的は通常、被害者が取引したいトークンの価格を押し上げることです。
取引 2(被害者の取引):攻撃者の最初の取引の後に実行されます。攻撃者の以前の操作により、この時点で取引プール内の価格は被害者に不利であり、彼は同等の USDT を得るためにより多くの USDC を支払う必要があるか、またはより少ない USDT しか得られない。
取引3(攻撃者の2番目の取引):被害者の取引の後に実行されます。この取引の目的は通常、被害者の取引によって引き起こされた新しい価格変動を利用して利益を得ることです。
今回のMEV攻撃のバリデーターはbob-The-Builder.ethで、彼がトランザクションを1、2、3のように順序付ける責任を負っています。もちろん、bobTheBuilderも無報酬ではなく、今回の並べ替えに参加して100以上のETHの収入を得ました。一方、MEV攻撃の発起者は8000ドルの収入しか得ていません。彼らの収入源は被害者の2回目のトランザクションから来ています。
一言で言うと、攻撃者(MEVボット)と検証者(bobTheBuilder)が共謀し、2番目の取引の被害者が21.5万ドルの損失を被り、そのうち攻撃者が8000ドル、検証者が20万ドル(100以上のETH)を得ました。
彼らが採用している攻撃方法には、わかりやすい名前があります——サンドイッチ攻撃。次に、取引を一つずつ解説して、MEVの比較的複雑なサンドイッチ攻撃が一体どういうものなのかを徹底的に理解できるようにしましょう。
サンドイッチ攻撃と呼ばれる理由は、攻撃者の2つの取引(取引1と取引3)が被害者の取引(取引2)の前と後に配置され、全体の取引順序がサンドイッチの構造のようになるためです(上の図を参照)。
取引1と取引3はそれぞれ異なる機能を担っています。簡単に言うと、取引1は犯罪を行う役割を果たし、取引3は分配を収穫する役割を果たします。具体的には、全体のプロセスは次のようになります:
3.1 取引 1 ,USDT の価格を上げる責任がある
上の図のトランザクションNo.1のリンクをクリックすると、トランザクションNo.1の詳細が表示され、攻撃者はUSDTの価格を上げる、つまり1,865万USDCを使用してその中の1,758万USDTをすべて交換するという非常に直接的な方法もあります。
この時、流動性プールには大量の 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のリンクをクリックすると、下の画像が表示されます。
上の図のように、被害者の取引2は取引1の影響を受け、22万USDCが5272 USDTしか得られず、知らず知らずのうちに17万USDTを失ってしまいました。なぜ知らず知らずのうちにと言えるのでしょうか?それは、被害者がUniswapを通じて取引を行った場合、取引を提出する際に以下のインターフェースが表示されるからです。
上の図からわかるように、被害者は少なくとも22万は保証されるべきです。被害者が最終的に5000 USDT以上しか得られなかったのは、90%以上の大きなスリッページが発生したためです。しかし、Uniswapにはデフォルトの最大スリッページ制限が5.5%あります。下の図を参照してください。
つまり、被害者が Uniswap のフロントエンドを通じて取引を行った場合、彼は少なくとも 208381 USDT(= 220510 * 94.5%)を受け取ることになるはずです。なぜ上記のブロックチェーン記録にこの取引が「 Uniswap V3」で行われたと表示されているのか疑問に思うかもしれません。
なぜなら、ブロックチェーン取引のフロントエンドとバックエンドは分かれているからです。上で述べた「Uniswap V3」は、UniswapのUSDC-USDTの資金プールを指します。このプールは公開されており、どの取引のフロントエンドもこのプールを通じて取引を行うことができます。
この点もあって、被害者が単純ではなく、一般の人ではないのではないかという疑いがある。そうでなければ、こんなに大きなスリッページが発生することはないかもしれず、MEV攻撃を利用してマネーロンダリングを行っている可能性がある。これについては後で話しましょう。
3.3 取引3、収穫+戦利品
リンクをクリックすると、取引 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万の攻撃を実現したのでしょうか。
攻撃者が109万USDCの元本だけで1800万ドル規模の攻撃を実現できたのは、ブロックチェーンの世界に存在する魔法のような特別なメカニズム——Uniswap V3のフラッシュスワップ(Flash Swap)のおかげです。
4.1 フラッシュスワップとは何ですか?
簡単に言うと:
ライトニング交換は、ユーザーが同じ取引の中でまずUniswapプールから資産を引き出し、その後別の資産(または同じ資産と手数料)で返済することを許可します。
Uniswapは、全ての操作が同じトランザクション内で完了する限り、この「先に受け取り、後に支払い」を許可しています。注意が必要なのは、同じトランザクション内で完了しなければならないということです。このように設計されているのは、Uniswapプラットフォーム自身の安全性を保障するためです:
ゼロリスクの貸出:Uniswapはユーザーが担保なしでプールから一時的に資金を引き出すことを許可します(貸出に似ています)が、取引が終了する際にはすぐに返済する必要があります。
原子性(Atomicity):操作全体は原子でなければならず、完全に成功する(資金が返還される)か、完全に失敗する(取引がロールバックされる)必要があります。
スナップ交換の設計の目的は、より効果的にチェーン上でのアービトラージ(Arbitrage)を行うことでしたが、残念ながらMEV攻撃者によって利用され、市場操作の道具となってしまいました。
4.2 フラッシュ交換はどのようにサポートするのか?
次に、図を見ながら、ステップバイステップで今回の攻撃におけるフラッシュエクスチェンジがどのように実現されているのかを理解していきましょう。下の図をご覧ください。
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 万あり、スリッページが比較的低いからです。
F4 攻撃者は、Curve で交換した 1755 万 USDC と、元々用意していた 109 万 USDC(Aave の借入による)を合わせて、合計 1864 万 USDC を一度に Uniswap に返済し、フラッシュスワップが完了した;
この取引(取引 1)の後、攻撃者のアカウント残高は 109 万 USDC 減少しました。なぜなら、Uniswap に返還された 1864 万 USDC のうち、1755 万 USDC だけが Curve からのもので、残りの 109 万 USDC は攻撃者の自己資金だからです。
あなたは気づいたはずです。この取引は実際には攻撃者に109万の損失をもたらしました。しかし、その後の取引3も同様にフラッシュ交換の手法を使い、109万USDCを取り戻しただけでなく、さらに20万以上を得ました。
以下の取引3のデータに基づいて、一歩一歩分析していきます。
K1 攻撃者は、Uniswap で1860万 USDCをフラッシュスワップで引き出しました;
K2の攻撃者は、Uniswapから引き出されたばかりのUSDC1,730万USDCの一部を交換することで、1,732万USDTをスワップバックしました。
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(分散型取引所)での取引を避ける必要はありません。
結論:暗い森の警告と啓示
この21万5000ドルのMEV攻撃事件は、間違いなくブロックチェーンの世界における「ダークフォレスト」法則の再び残酷な表れです。それは、非中央集権で許可不要な環境において、メカニズムの隙間を利用して利益を掠め取る複雑なゲームが潜んでいることを生き生きと示しています。
より高い視点から見ると、MEVの出現はブロックチェーンの透明性とプログラム可能性の両刃の剣の効果を示しています。
一方で、すべての取引記録が公開されており、攻撃行為を追跡し分析することが可能です;
一方で、スマートコントラクトの複雑なロジックと取引実行の確実性は、賢い参加者にとってチャンスを提供します。
これは単なるハッキング行為ではなく、ブロックチェーンの基盤となるメカニズムの深い理解と活用であり、プロトコル設計の堅牢性を試し、参加者のリスク意識に挑戦しています。
MEVを理解し、そのリスクを認識することで、この機会に満ちた、しかし危機も潜むデジタル世界をより良く航行できるようになります。ブロックチェーンの「ダークフォレスト」では、ルールを尊重し、認識を高めることだけが、次に飲み込まれる獲物にならないための方法です。
これも私がこの記事を通じて達成したい効果です。