アカデミー

フロントランニングとは?|COTONOCA Academy

要約: フロントランニングは売買注文を事前に知る人物が、その注文の前に自分の注文を割り込ませて売買を有利に成立させる違法行為です。分散型取引所においては、取引が全ユーザに公開されるパブリックブロックチェーンの性質上、違法と見做して取り締まるのが難しいと言われています。

フロントランニングとは、証券会社やその職員などの顧客の注文を知る人物が、その注文の前に自分の注文を割り込ませて、顧客の注文よりも有利に有価証券の売買を成立させる違法行為です。

暗号資産取引においては、AMMで先に発生した注文よりも多くのガス代を支払うことで、後から発生した注文が先に処理される仕組みが利用されます。MEV(Miner/Maximal Extractable Value)と呼ばれる利益の最大化を、マイナーやバリデータが目指す過程で生じた問題です。フロントランニングは大半のDEXで起こり得ます。

CEXでフロントランニングを行うには証券会社の職員でなければ難しいのですが、パブリックブロックチェーンを用いたDEXでは、第三者が容易にフロントランニングを仕掛けることができてしまいます。有価証券では違法とされる禁止行為ですが、暗号資産では完全に取り締まることができません。パブリックブロックチェーンでは取引に関する情報がすべてのユーザに公開されていて、違法と見做すのが難しいためです。

フロントランニングの手口

では、防ぐのが難しいのは何故でしょうか。具体的にどのような手法かを見ていきます。

あるユーザがUniswap V3でETHの買い注文を出したとします。

このとき、その注文はすぐに処理されるわけではありません。プログラム内部(mempool)に一旦蓄えられ、検証者(マイナー)がトランザクション(取引データ)を承認し、ブロックチェーンに追加されるのを待つことになります。AMMではこのように、注文が実行されてから取引が完了するまでの間にタイムラグが生じます。

フロントランニングを行うプログラムは、その待機中のETHの買い注文、つまりブロックチェーン追加前の注文を検知します。そして、その待機中の注文よりも高い料金のガス代を設定して、ETHの買い注文を出します。

すると、フロントランニングを行うプログラムの出した注文が先に処理され、購入が完了します。その後、先に注文を出していたユーザの注文が処理されます。そうしてETHの市場価格が上がった時点で、フロントランニングを行なったプログラムが購入したETHを売却すれば、確実に利益を得ることができる、という寸法です。フロントランニングの攻撃対象となったユーザは、通常よりも高値でETHを購入することになります。

フロントランニングを防ぐのが難しいと言われるのは、ブロックチェーンの設計上、注文実行から取引完了までのタイムラグを完全に無くすことができないためです。ですが、対策は打てます。

フロントランニングの予防策

前述の例は、DEXユーザによるフロントランニングです。これを回避するための対策は、ユーザ自身で取ることができます。実際に何をすれば良いのかいうと、取引を行う際に売買注文を小分けしたり、スリッページ(注文価格と約定価格の差)を下げめに調整したり、ガス料金の上限を設定したりするのが有効です。

もしDEXユーザではなく、マイナーやバリデータによってフロントランニングが行われた場合は、設定されたガス料金と無関係に好きな順序でトランザクションを処理できてしまうため、別の対策が必要になります。開発者が、取引を追跡できなくしたり、プログラム内部を閲覧できなくしたりしなくてはなりません。つまり、早い者勝ちで利益を横取りできないソフトウェア設計のDEXなら、フロントランニングを防ぐことができます。

予防策として挙げられるのは、バッチオークション、ダッチオークション、秘密分散法などです。

バッチオークションは、取引時間ごとに注文を取りまとめ、優先度に従って注文を処理する方式です。これにより、他人よりも先にオーダーを通すことによって得られるメリットを無くすことができます。

ダッチオークションは、最初に設定した価格から売買が約定するまで、徐々に値下がりしていく方式です。これによって、ユーザは常におなじ価格で購入できるようになります。

秘密分散法は、プログラム内部(mempool)を閲覧できなくする設計です。外部から閲覧できなくなると、ユーザの注文実行からマイナーが承認するまでのラグタイム中に、データを覗き見られることがなくなります。

このほかにも、CLOBの仕組みをDEXに取り入れてMEV問題を解決する例があります。

バッチオークションを採用している例: Injective、CowSwap(Gnosis)
ダッチオークションを採用している例: Opium、DutchX(Gnosis ※現在機能停止中)
秘密分散法を採用している例: TaiChi Network(SparkPool)、ROOK(旧KeeperDAO)
分散型CLOBを導入している例: dYdX、Serum、MDEX

参考サイト: MEV-Explore (2022年1月1日以降の推定値を、グラフおよびチャートで閲覧できるダッシュボードです。Aave、Balancer、Bancor、Compound、Cream、Curve、Uniswappy V2/V3、0xなどに対応しています)

参考資料: “Trading in the DeFi era: automated market-maker” / BIS Quarterly Review 2021,Dec,06