サムネイルの引用元:CoW Swap
はじめに
こんにちは、デフィー伍拾伍号です。本記事ではDEX アグリゲーターとして、名高いCow Swapについてその理解を深めます。前半では、そもそもCow swapの登場の端緒であり、現在のEthereumエコシステムにおいて、大変な課題となっているMEVの問題について概観した後に、Cow swapの概要やその仕組みや課題などについても詳細に解説します。
まずCoW Swapとは、CoW Protocolに基づいて構築されたDEXアグリゲーターであり、ユーザーはEthereumやGnosisチェーン上で、トークンをスワップすることが出来ます。CoW swapはUniswapやCurveといった従来のDEXと比較して、圧倒的なMEV耐性と最適執行性能を保持していることで知られており、以下では、その詳しい内容を一歩、一歩、整理します。
Ethereumにおける大きな課題 : MEV
この章では、CoW swapの概要を理解する前に、CoW swap誕生の意義をより実感することのできるMEVの問題について簡単に解説します。MEVとは、最大抽出可能価値と呼ばれ、特定のブロックにおけるトランザクションの追加、削除、または順序変更により、ブロックの生成時において標準的なブロック報酬やガス代を超過して抽出できる最大の価値を指します。
つまり、直感的には、ガス代をより多く払ったユーザーのトランザクションをブロックに含めた方が、ブロック生成者の利益は大きくなりそうなものです。しかしMEVのコンセプトは、そのガス代順以外で、トランザクションを並べた場合に、実はより多くの利益を獲得できる場合があるということを述べているのです。
Ethereumにおけるブロック生成の流れ
引用元:Chainlink
Ethereumでは、ユーザーが、トランザクションを起こした場合に、すぐにブロックに取り込まれるのではなく、mempoolと呼ばれるトランザクションの待機場所のようなところに留め置かれます。そしてこのmempoolからsearcherと呼ばれるエンティティがトランザクションを選びだすことで、ブロックへの追加、第一歩です。実際にブロックにトランザクションが取り込まれるまでには、Searcher、Builder、Relyerなどさまざまなエンティティを経由することになりますが、本記事では、その本旨に逸れるため、これ以上の言及は控えます。
ブロックに詰められるトランザクションには当然、上限があります。よってブロックの生成者はなんらかの基準で、選ぶべきトランザクションから取捨選択する必要があるのです。その際に一般的に、より多くの報酬、つまりガス代がもらえるトランザクションを優先的に選びとるというのは先ほど、上段で述べた通りです。では、ガス代順にトランザクションを選択しない場合とは一体どんな場合なのかについて、以下では述べていきたいと思います。
一点だけ注意点がありますが、MEVというのは非常に抽象的な概念で、最大抽出可能価値を得る方法にはさまざまなものがある点は理解しておく必要があります。ここからはMEVの一種であるサンドイッチアタックについて解説しますが、それ以外にはCEX-DEXアービトラージや、清算オークション時のMEV、NFTのミント競争などにおいてもMEVは発生しうります。
サンドイッチアタック
引用元:CoW Swap
UniswapやCurveなどDEXで特に大きな額のスワップを執行する際には、サンドイッチアタックに注意が必要です。例えばUniswapで、そのレートが1ETH-1000USDCの場合、実際に1ETH-1000USDCで注文を執行できるという訳ではなく、スリッページと呼ばれるプライスインパクトの影響で、トークンの平均取得価格は、1ETH-999USDCや1ETH-1001USDCなどとなります。これはDEXが採用するx*y=kという式の特性上必ず発生するものです。この性質をある種利用して、利益を得ようとするのがサンドイッチアタックです。これは、トランザクションの直前と直後に自分のトランザクションを挿入して、その名の通り、サンドイッチする手法です。
例えばUniswapのETH-USDCのプールで、1ETH-1000USDCのレートで取引が行われていたとします。そこに、10万USDCを1ETHにスワップするトランザクションが生じたとします。この場合に、そのユーザーがそのままUniswapでトランザクションを執行しようとした場合に、先に述べた通り、別のユーザーがまずトランザクションの前に一定額の注文を差し込みます。1ETH-1001USDCで約定したとしましょう。その次に10万USDCという大量注文が来ます。
この場合、先の割り込みによる取引の結果から、1ETH-1000USDCではなく、1ETH-1001USDCのレートが提示されることとなり、またプライスインパクトにより、1ETH-1010USDCと取引レートが変化したとします。その後再び、割り込みをしたユーザーが割り込みとは逆のスワップ注文を執行することで、1ETH-1009USDCで約定したとしましょう。割り込みした取引のスワップ量により、差は生じますが、大雑把に述べて8USDCの利益を得ることができる訳です。
これがサンドイッチ攻撃の基本的な概念です。ブロック生成者は、他のユーザーのトランザクションの前後に自分のトランザクションを挿入し、価格を一時的に上昇させることで、利益を得ます。従って常にオープンなmempoolにおいてブロック生成者は最も優位的な位置に存在するのです。もちろん単純にアービトラージャーが、この機会を狙うことも可能です。
CoW swapの概要
引用元:CoW Swap
これまでは、MEV、特にサンドイッチアタックについてその理解を深めて来ましたが、そもそもスワップ金額の多寡はあるにせよ、全てのスワップトランザクションにこのようなリスクが存在しています。また利用者のなかなか目の届きづらいプロセスにおいて、上記のことが実行される点も利用者に負担を課す構造となっています。この点に一つの緩和策を提案するのがCow Swapです。
Cow SapではSolverと呼ばれるエンティティが肝となりながら、事前に定義されたルールに基づいて自動的に取引を実行し、そのプロセスがユーザーに可能な限り最高の価格を提供することを保証しています。具体的にはバッチオークションとRFQの仕組みを活用することで上記の内容を可能としています。本記事は、MEVの詳細がその内容の大半を占めましたが、後半では、より具体的にCow Swapの仕組み等々に詳しく解説を加えます。