ブロックチェーン/レベル IX · スピードとスペクタクル/9.2 公正な市場/レッスン 3
トランザクション順序攻撃とその対策
フロントランニングとサンドイッチ攻撃、バッチオークション、暗号化メンプール
用意するものブロックエクスプローラー(例:Etherscan)公開のMEVダッシュボード(読み取り専用)価格インパクトに対するスリッページを追跡するためのスプレッドシートトランザクションフィルタリング機能を備えたブロックエクスプローラー
問い
- 確定前にトランザクションが見えることは、なぜブロック内の順序を入れ替える経済的インセンティブを生むのか?
- 技術的には健全な市場メカニズムが、どうして順序付けを通じて自らのユーザーから価値を抜き取ることができるのか?
- 損失に上限を設けるスリッページ制限と、攻撃を完全に防ぐスリッページ制限の正確な違いは何か?
探究
- Ethereumでは、保留中のトランザクションはすべてのノードから見える公開のメンプールで待機する。Solanaには公開のメンプールはないが、トランザクションをリレーする者やブロックを生成するリーダーには、やはり保留中のトランザクションが見える。ブロックの構築を支配する者は、確定前にこのキューを調べることができる。この可視性がレースコンディションを生み、スピードと情報の非対称性が経済的な結果を左右する。実行順序は中立ではなく、サーチャーが最適化する主要な変数である。最初に取り込まれたトランザクションは、本来なら後の参加者が利用できたはずの流動性を手に入れる。
- フロントランニングとは、保留中の取引を観察し、より高い優先手数料を付けて同一または補完的な取引を自ら送信し、元の取引より先に取り込まれるようにすることである。観察した取引がフロントランナーに有利な方向へ価格を動かせば、その差分から利益を得る。バックランニングはその逆で、オラクルの更新や清算のトリガーといった既知の状態変化の後に実行し、新しい状態になって初めて得られる価値を獲得する。
- サンドイッチ攻撃は、スリッページ許容度を悪用する。サーチャーは被害者の大口スワップの直前に資産を購入し、価格を押し上げる。被害者は、この吊り上げられた価格で取引を実行する。その直後、サーチャーは被害者の買いによって生じた高値で売却する。被害者は想定より少ないトークンしか受け取れず、その差額をサーチャーが手にする。これは、ユーザー自身の許容設定を逆手に取ったアービトラージである。
- P. Daianらは『Flash Boys 2.0』(arXiv 2019)でこの力学を定式化し、miner extractable value(MEV)という用語を生み出した。この用語は後にmaximal extractable valueと改められた。彼らは、MEVが異常ではなく、パーミッションレスで逐次的な実行に内在する構造的特徴であることを示した。MEVの多くはアービトラージと清算によるものだが、サンドイッチのように一般のトレーダーが直接支払っているものもある。
- Flashbots(2020年設立)は、Ethereum上でプライベートなバンドルリレー(2021年)を導入し、マージ後にはMEV-Boostによるビルダーオークション(2022年)を導入した。これによりMEVの抽出は公開メンプールから競争的なオークションへと移り、秩序立ったものにはなったが、なくなったわけではない。Solanaでは、Jitoバンドル(2022年以降)が同様の市場を生み出し、バリデーターはチップ付きのバンドルされたトランザクションを優先する。インフラは変わったが、順序攻撃を行う根本的なインセンティブは残った。
- スリッページ制限は1件のトランザクションあたりの最大損失に上限を設けるが、サンドイッチ攻撃を防ぐわけではない。ユーザーがスリッページを1%に設定しても、サーチャーはその上限まで価格を押し上げてサンドイッチ攻撃を仕掛けられる。根本原因は、丸見えのキューに対して、順序に依存した逐次実行が行われることにある。これを取り除くには、順序が確定するまで注文を隠すか、ブロック内の順序を無関係にするかのどちらかが必要であり、どちらも後のレッスンで扱う。
- 連続取引市場では、執行速度が結果を左右する。価格の変化を察知し、他者より先に注文を出したトレーダーは、本来なら共有されるか、マーケットメイカーに奪われていたはずの価値を手にする。この力学は分析よりもインフラを優遇する。取引所のサーバー近くに敷設された光ファイバーケーブル、コロケーションされたハードウェア、低遅延ネットワークが主な競争優位となるのだ。その結果、ごくわずかな速度差が大きな経済的利益に直結する市場が生まれ、技術面での軍拡競争を促すが、その恩恵を受けるのはそうしたアップグレードに投じる資本を持つ者だけである。
- Budish、Cramton、Shimは、2015年に『Quarterly Journal of Economics』に発表した論文で、代替案として頻繁バッチオークション(frequent batch auction)を提案した。注文が届くたびに連続的にマッチングするのではなく、短い間隔(彼らは100ミリ秒など1秒未満の間隔を提案した)の間に寄せられたすべての買い注文と売り注文を集め、単一の統一価格で同時に清算する。この時間枠内に出されたすべての注文が同じ清算価格で約定するため、この設計ではブロック内の優先順位がなくなる。間隔の最初の1ミリ秒は最後の1ミリ秒に対して何の優位性も持たず、速度は約定と無関係になり、競争は情報と価値評価へと戻っていく。
- この原理をブロックチェーン上のトークン市場に適用すると、スナイプとサンドイッチ攻撃という2つの一般的な手口が無力化される。通常のメンプールでは、ボットが保留中のトランザクションを監視して大口のスワップを検出し、その前後に自らのトランザクションを挿入して価格を操作できる。バッチ清算では、ブロック全体の注文フローが一つの制約の集合として扱われる。プロトコルは、すべての注文を通じて取引量または効用を同時に最大化する単一の価格を求める。攻撃者は被害者と切り離して約定させることができないため、サンドイッチ攻撃は失敗する。両者は同じ清算解の一部だからだ。
- 2021年にイーサリアム上でローンチしたCoW Protocolは、バッチオークションによってこれを実装している。ユーザーは取引所に直接注文を送るのではなく、署名済みの注文インテントをソルバーネットワークに提出する。ソルバーはブロック内でこれらの注文を約定させるために競い合い、プロトコルは、勝者となった解の中で同じペアかつ同じ方向の取引を一つの価格で決済することを求める。2024年にメインネットをローンチしたPenumbra(取引所機能は後のフェーズで有効化された)は、ブロックごとにスワップをバッチ処理する。どちらもバッチ清算が本番環境で機能することを示しているが、具体的なソルバーのアーキテクチャやプライバシー保証は異なる。
- この設計の主なコストは遅延である。価格は連続的にではなく、新しいバッチが清算されたときにのみ更新される。間隔の途中で市場環境が急変した場合、清算価格はリアルタイムのスポット価格から遅れることがあり、一時的な非効率が生じる。さらに、ブロック内の優先順位はなくなるものの、ブロック間の優先順位は残る。ブロック間で流動性が変化する場合、より早いブロックに入ることは依然として有利になり得る。これは速度競争の名残だが、ミリ秒ではなくブロック間隔という、より遅い時間軸で作用するため、インフラの軍拡競争を和らげ、機関投資家以外のトレーダーにも参加しやすくしている。
- これを検証するには、EtherscanまたはCoW ExplorerでCoW Protocolの決済トランザクションを探してみよう。1つのトランザクションで複数のユーザーの取引が決済され、解の中で同じペアかつ同じ方向の取引は、同じ実効価格で約定している。同じバッチ内の異なる注文の間で価格が均一であることこそ、清算アルゴリズムが機能していることを示す目に見える証拠である。
- パブリックなメンプールでは、保留中のすべてのトランザクションが即座にすべてのノードから見える。サーチャーはその内容を読み取って結果をシミュレーションし、より高いガス代を付けた自らの競合トランザクションを送信して先回りできる。このフロントランニングは、他のユーザーから同意なく価値を抜き取る。未承認の注文が見えることで、速度の優位性がそのまま金銭的利益に変わる、本質的な競争状態が生まれる。
- コミット・リビール方式は、送信を2つの段階に分けることでこの問題に対処する。まず、ユーザーは送信予定のトランザクションの暗号学的ハッシュをブロードキャストする。その後、実際のトランザクションを公開(リビール)する。リビール段階まで、何がコミットされたのかは誰にも分からない。コミットの時点で実行順序が確定するのであれば、注文が待機している間に誰もその内容を知ることができないため、フロントランニングは防がれる。代償は2つ目のステップである。ユーザーはリビールのために再度戻ってこなければならず、プロトコルは最後までリビールされないコミットメントをどう扱うかを決めなければならない。
- スレッショルド暗号化メンプールは、異なるアプローチをとる。トランザクションはある公開鍵で暗号化され、その復号鍵は委員会のメンバーの間で分割されている(Shutterはこのメンバーを「Keypers」と呼ぶ)。完全な復号鍵を持つメンバーは一人もおらず、閾値以上の数のノードが協力した場合にのみトランザクションを復号できる。どの当事者も内容を見る前に順序が確定するため、操作の余地がなくなる。信頼はその委員会へと移る。十分な数のメンバーが共謀すれば、早期に復号できてしまう。
- Shutter Networkは2024年からGnosis Chain上でこれを実装している。委員会が鍵シェアを管理し、ユーザーは暗号化されたトランザクションを送信できる。そのトランザクションは、ブロック内での位置が確定した後にのみ復号される。同様に、Flashbots Protectはプライベートなオーダーフローチャネルを提供しており、トランザクションはパブリックなメンプールを完全に迂回して、ブロックビルダーへ非公開で送られる。どちらの方法もサーチャーからトランザクションデータを隠すが、新たな依存関係を生む。
- プライベートチャネルは、信頼を分散型コンセンサスからブロックビルダーや委員会へと移す。ビルダーが悪意を持ったり侵害されたりすれば、ブロックへの取り込み前に注文を覗き見ることができる。スレッショルド方式は、複数の独立した当事者による共謀を必要とすることでこのリスクを低減するが、委員会のガバナンスと鍵管理が重大な障害点となる。ユーザーは、単独でトランザクションを復号できるだけの鍵シェアを単一の主体が握っていないことを確認しなければならない。
- トレードオフは明確である。暗号化メンプールは、暗号化・復号のオーバーヘッドによって遅延を増やし、委員会やビルダーへの信頼を必要とする。パブリックなメンプールは透明性を保つ一方で、MEVの抽出に対して脆弱である。トークン市場にとって、これらの仕組みを採用することは、略奪的な取引戦略からの保護と引き換えに、より遅い価格発見と複雑なインフラを受け入れることを意味する。選択は、執行の公平性が複雑さの増加というコストを上回るかどうかにかかっている。
パート I順序攻撃:フロントランニング、サンドイッチ、MEV
パート IIバッチオークションと統一価格での清算
パート III暗号化メンプールとコミット・リビール
重要な事実
- MEV(miner extractable value、後に「maximal」extractable value)は、2019年にDaianらによって命名された。
- Flashbotsは、Ethereum上のMEV抽出をプライベートオークションへ移すために2020年に立ち上げられた。
- Solana上のJitoバンドルにより、2022年以降、バリデーターはチップ付きのトランザクションを優先できるようになった。
- サンドイッチ攻撃は、被害者のトランザクションに設定されたスリッページ許容度から利益を得る。
- スリッページ制限は金銭的な損失に上限を設けるが、サンドイッチ取引の実行を防ぐものではない。
- 順序攻撃の根本原因は、丸見えのトランザクションキューに対する逐次実行にある。
- Budish、Cramton、Shimは2015年、『Quarterly Journal of Economics』で頻繁バッチオークションの提案を発表した。
- CoW Protocolは、2021年のローンチ以来、イーサリアム上でバッチオークションを用いている。
- 2024年にローンチしたPenumbraは、ブロックごとにスワップをバッチ処理する。
- バッチ清算は、一定の間隔内のすべての注文を単一の統一価格で約定させ、ブロック内の優先順位をなくす。
- この設計は、攻撃者と被害者の注文を同じ清算解に含めることで、サンドイッチ攻撃を無力化する。
- トレードオフは、連続市場に比べて価格の更新が遅くなることである。ただし、ブロック間での速度の優位性は残る。
- パブリックなメンプールは、保留中のすべてのトランザクションを、フロントランニングを行うサーチャーにさらしてしまう。
- コミット・リビール方式は、内容を隠すために、ハッシュの提出とトランザクションの公開を分離する。
- スレッショルド暗号化メンプールは、注文の順序が確定した後の復号に、委員会が保有する鍵シェアを用いる。
- Shutter Networkは2024年、スレッショルド暗号化を用いてGnosis Chain上でローンチした。
- プライベートなオーダーフローチャネルはパブリックなメンプールを迂回し、信頼をブロックビルダーに集中させる。
- 暗号化メンプールは、パブリックチェーンと比べて、遅延と信頼の前提を追加する。
演習 九・六・三・一
9集める2023〜2024年にEthereumまたはSolanaで観測されたMEV抽出の具体的な事例または種類を9つ挙げてください。それぞれ、どのレイヤー(ビルダー、サーチャー、ユーザー)がその価値を得たかを記してください。
6まとめる9つを、損失を負うのが誰かによって6つのグループに分けてください。
3絞り込む6つを、順序の優位性が利益に変わる3つのメカニズムに絞り込んでください。
1結晶化するMEVはコントラクトのコードの欠陥なのか、それともトランザクションの順序付けの欠陥なのか、その理由とともに1文で書いてください。
事実確認
日付、数字、主張は、下記に記載された公表資料と照合して確認しました。
- P. Daian et al., 'Flash Boys 2.0' (IEEE S&P 2020, arXiv 2019)
- Flashbots documentation on private transaction relays
- Jito documentation on bundles and tips
- E. Budish, P. Cramton & J. Shim, 'The High-Frequency Trading Arms Race: Frequent Batch Auctions as a Market Design Response', Quarterly Journal of Economics (2015)
- CoW Protocol Documentation, 'Batch Auctions'
- Penumbra protocol specification: DEX (batch swaps)
- Shutter Network documentation
- Flashbots Protect documentation
- S. Yang et al., 'SoK: MEV Countermeasures: Theory and Practice' (2022)