作成者: 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とは何かを説明する必要があります。
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)によって整理されています。なぜこのようにできるのでしょうか?
MEVの働きを理解するためには、まずブロックチェーンがどのように情報を記録し更新するのかを理解する必要があります。
ブロックチェーンは、発生したすべての取引を記録する増大する帳簿と見なすことができます。この帳簿の状態は、各アカウントの残高やUniswapの取引プールにおけるさまざまなトークンの備蓄量など、すべて以前の取引によって決まります。
新しいブロックがブロックチェーンに追加されると、そのブロックに含まれるすべてのトランザクションは、ブロック内の配置順に従って順番に実行されます。各トランザクションが実行されるたびに、ブロックチェーンのグローバルな状態がそれに応じて変化します。
つまり、ブロックの順序だけでなく、ブロック内の取引の順序も重要です。それでは、ブロック内の取引の順序はどのように決まるのでしょうか?
ユーザーがブロックチェーンネットワーク上でトランザクションを開始すると、例えばこのUniswapを使用してUSDCをUSDTに変換するトランザクションの場合、最初にネットワーク内のノードにブロードキャストされます。初期検証の後、このトランザクションは「メモリプール」(mempool)と呼ばれる領域に入ります。メモリプールは、承認されておらず、次のブロックチェーンのブロックに追加されるのを待っているトランザクションの待機エリアのようなものです。
以前のマイナー(PoWシステム内)、現在のバリデーター(PoSシステム内)は、メモリプールからトランザクションを選択し、これらのトランザクションが次のブロック内での配置順序を決定する権利を持っています。
ブロック内のトランザクションの順序は非常に重要です。 ブロックがファイナライズされてブロックチェーンに追加される前に、そのブロック内のトランザクションはバリデーターによって決定された順序で実行されます(例:bobTheBuilder)。 つまり、ブロックに同じトランザクションプールと対話する複数のトランザクションが含まれている場合、それらのトランザクションが実行される順序は、各トランザクションの結果に直接影響します。
この能力により、バリデーターは特定のトランザクションを優先的に処理したり、他のトランザクションを遅延または除外したり、さらには自分のトランザクションを挿入して利益を最大化することができます。
今回の取引の順序も同様に重要で、少しでもミスがあれば攻撃は成功しない。
私たちはまず、今回の MEV 攻撃に関連する 3 つの取引について簡単に理解しましょう:
! dOFw7Sh0V9EIVxqeuCZIDFbCHSXZ7Sl9JXeXJUue.png
今回の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は分配された利益を収穫する役割を担っています。具体的には、全体のプロセスは次のようになります:
上の画像の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%にも満たないのです。彼はどうやってそれを実現したのでしょうか?攻撃の説明が終わったら、詳しくお話しします。
上の画像の取引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攻撃を利用してマネーロンダリングを行っている可能性があります。これについては後でお話しします。
! 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 万の攻撃を実現したのか。
攻撃者が109万USDCの元本だけで1800万ドル規模の攻撃を実現できたのは、ブロックチェーンの世界に存在する魔法のようで特別なメカニズム——Uniswap V3のフラッシュスワップ(Flash Swap)によるものです。
簡単に言うと:
ライトニング交換では、ユーザーが同じ取引内でまず Uniswap プールから資産を引き出し、その後別の資産(または同じ資産に手数料を加えたもの)で返済することができます。
Uniswapは、取引全体が同じ取引内で完了する限り、この「先に商品を受け取り、後で支払う」行為を許可しています。注意すべきは、必ず同じ取引内で完了する必要があるということです。このように設計されているのは、Uniswapプラットフォーム自体の安全性を保障するためです。
ライトニング交換の設計の目的は、より効果的にオンチェーンアービトラージ(Arbitrage)を行うことでしたが、不幸にもMEV攻撃者によって利用され、市場操作の手段となってしまいました。
次に、図を見ながら、ステップバイステップで今回の攻撃におけるフラッシュスワップがどのように実現されたかを理解していきましょう。下の図をご覧ください。
! S6eRIwZXTXtWBU7tUaAjr9bvAm2RIPpdoyjiHnhn.png
! o1LnGSaUlzRjt7vqs5YOy0wqTRznOxzRkjVHSdEw.png
この取引(トランザクション1)の後、Uniswapに返還された1,864万USDCのうち1,755万USDCのみがCurveに交換され、残りの109万USDCが攻撃者の自己資金であったため、攻撃者の口座残高は109万USDC減少しました。
あなたは気づいたでしょうが、この取引は実際に攻撃者に109万の損失をもたらしました。しかし、その後の取引3は、同じくフラッシュスワップの手法を使って、109万USDCを取り戻しただけでなく、さらに20万以上の利益を得ました。
! oKE3vvGoW8lIISTane5LmOrh3BrDYyLV5PxHLXkM.png
次に、取引3のデータに基づいて、一歩一歩分析してみましょう。
あなたは驚くかもしれませんが、なぜ攻撃者が検証者に最大20万ドルの利益を差し出すことをいとわないのでしょうか?
実際、これは寛大さではなく、サンドイッチ攻撃というMEV攻撃が成功するための必要条件です。
したがって、攻撃者は攻撃の成功を確保するために、ほとんどの利益を犠牲にしてでも、自分自身のために一定の利益を残すことを選ぶ。
特に説明しておく必要がありますが、MEV攻撃にもコストがかかります。Uniswapのフラッシュスワップにはコストがあり、Curveの取引にもコストがあります。ただし、手数料が比較的低いため、約0.01〜0.05%であるため、攻撃によって得られる利益と比べると、取るに足らないものとなります。
最後にもう一度お知らせしますが、MEV攻撃の防御は実は非常に簡単です。設定する必要があるのは、スリッページの許容度を1%以内に抑えることと、大きな取引を数回に分けて実行することです。ですので、あなたは決して恐れてDEX(分散型取引所)での取引をやめる必要はありません。
215,000ドルのMEV攻撃は、ブロックチェーンの世界における「闇の森」法のもう一つの残忍なデモンストレーションであることは間違いありません。 それは、メカニズムの抜け穴を悪用して利益を得る分散型のパーミッションレス環境に潜む複雑なゲームを鮮やかに明らかにします。
より高い視点から見ると、MEVの出現はブロックチェーンの透明性とプログラム可能性の両刃の剣効果を反映しています。
これは単なるハッキング行為ではなく、ブロックチェーンの基本的なメカニズムに対する深い理解と活用であり、プロトコル設計の堅牢性を試し、参加者のリスク意識に挑戦しています。
MEVとそのリスクを理解することは、機会と危険のデジタル世界をナビゲートするための鍵です。 ブロックチェーンの「暗い森」では、ルールを尊重し、認知力を向上させることによってのみ、次の食い物になるのを避けることができることを忘れないでください。
これも私がこの記事を通じて達成したい効果です。