Flashbots Alpha ~Flashbots Bundleの作り方編~

Yuya Sugano
20 min readMay 27, 2021

MEV(Miner Extractable Value)をご存じでしょうか。Ethereumにおいて主としてマイナーがトランザクションを任意に含めたり、除外したり、並べ替えたりすることを通じて得られる利益のことで、Phil DaianさんがFlash Boys 2.0の論文で記述したことで有名になりました。 MEVにはトランザクション手数料とブロックリワードから成る「従来の」利益と、トランザクションの並べ替え、挿入、またはトランザクションの検閲からの「非従来の」利益の両方が含まれます。このことはマイナーや第三者がmempoolのトランザクションを監視して、アービトラージなどの利益の発生するトランザクションを先回り(フロントランニング)することで利益を横取りできる可能性を意味しています(Ordering Optimization)。Ethereum is a Dark Forestでは実際にそのようなトランザクションを監視して横取りするボットが存在することが確認されました。フロントランニングやバックランニングといった手法の興隆によってMEVが問題視されるようになってきました。MEVの危機を回避するために活動する研修開発組織がFlashbotsで、透明性がありフェアなエコシステムを形成するためFlashbots CoreやFlashbots Dataといった様々なツールの開発・提供をしています。

Flashbots: Frontrunning the MEV Crisis

本稿ではMEVとFlashbotsについての触り、また開発ツールのご紹介をしていきます。実際にFlashbots Coreを使用したFlashbots Bundleというトランザクションの作成を行います。※公式そのままです

目次です。

  • MEV(Miner Extractable Value)とは
  • Flashbotsについて
  • Flashbots Bundle作ってみる

MEV(Miner Extractable Value)とは

MEV(Miner Extractable Value)とは、Ethereumでマイナーがトランザクションを任意に含めたり、除外したり、並べ替えたりする機能を通じて得られる利益のことであるとされています。MEVにはトランザクション手数料とブロックリワードからの「従来の」利益と、トランザクションの並べ替え、挿入、またはトランザクションの検閲からの「非従来の」利益の両方が含まれます。マイナーは基本的にトランザクションをガス代の高い順に並べますが、このトランザクションを並べ替えることでより多くのガス代を受領したり、また自身が有利となるようなトランザクションを作成し挿入することもできてしまいます。

DeFiやDEXのプロトコル上では、裁定機会や清算の機会が常に発生しており、取引機会を発見してトランザクションを作成するボットが多く利用されています。ボットは自身のトランザクションを有利な条件とするために、mempoolにあるトランザクションのガス代より高い価格でトランザクションを作成することができます(Priority Gas Auction)。Ethereum is a Dark Forestでは、“generalized frontrunner”としてトランザクションをコピーしより有利な条件で執行させることでプロフィットを得るようなボットが存在することを確認されていました。このようなフロントランニング等の手法よって多くの問題が引き起こされています。[1]

フロントランニング・バックランニングはEtherem p2pネットワークの輻輳、ブロックチェーンのブロックスペースの輻輳など負の外部性に繋がります。MEVの機会をめぐるこの競争はEthereumブロックチェーンのセキュリティの不安定性を引き起こし、タイムバンディット攻撃やトレーダーとマイナーの間でのパーミッションドインフラ作成のインセンティブとなっています。タイムバンディット攻撃は論文でも解説されています。簡単にいうと過去のブロックでMEV抽出によるプロフィットがブロックリワードを超える機会が発見された場合に、マイナーはブロックを巻き戻して51%攻撃を行い得るというものです。論文で紹介された攻撃例を挙げます。

BancorなどのようなDEX上であるトークンの価格が1 USDから3 USDへ急上昇したときを考えます。マイナーはタイムバンディット攻撃を行うことで過去の履歴を書き換え、すべてのトレードをBidへ変更することが可能です。例えばある攻撃者が過去24時間に発生した 1M USDのトレードの書き換えを希望した場合、3M USD -1M USD=2M USDのMEVによる利益を得られる可能性があります。 2019年3月時のPoWに対する51%攻撃のコストをhttps://www.crypto51.app/のサイトで試算するとPoWのコストは1.78M USDであったことが分かっています。つまり一般的にこのような巻き戻し攻撃を行う経済的動機は十分に存在するということが分かります。

以下の記事で紹介されていますが、“generalized frontrunner”と”permissioned mempool”は特に興味深いトピックです。”generalized frontrunner”についてはこちらのYouTubeビデオの実演が、”permissioned mempool”については『Escaping the Dark Forest』が大変参考になります。[2]

Flashbotsについて

FlashbotsはMEVのネガティブな外部性やリスクを軽減するために組成された研究開発組織です。MEVの危機に対処するにあたりFlashbotsは3つのアプローチへ対応をブレイクダウンしています。

  1. Dark Forestを照射する
    MEVはほとんどのEthereumのDappsユーザにとって不透明で意識されていません。MEVを理解するにはデータ分析とスマートコントラクトの深い知識が必要です。セキュリティ上クリティカルなインフラがオフチェーンへ移動し、チェーンサイズが増加するにつれて透明性を担保することが難しくなります。具体的にはMEVによって引き起こされる負の外部性を客観的に評価し、MEVによるユーザ影響を定量化するツールを提供することです。MEV-inspectはEthereumのブロックデータをスキャンしてMEVメトリックを可視化するツールです。またflashbotsのブロックやトランザクションデータを探索するAPIとしてmev-blocks APIが提供されています。[6]
  2. MEVを民主化する
    MEV抽出は大規模なハッシュレートにアクセスできる一部のダークプールに限定されたり、大口トレーダーと一部マイナー間の一方的なオフチェーン取引を通じて、少数のプレーヤーに集中化される可能性があります。これらの可能性はEthereumのようなパブリックブロックチェーンのパーミッションレス・分散性という特性を侵害することになりセキュリティ上の弱点となってきます。パーミッションレスなMEV抽出のために、中立でパブリックなオープンソースインフラが必要です。MEV抽出を民主化することで、パーミッションレス・分散性という特性を侵害せずにすべてのプレイヤーは低レベルな金融プリミティブに平等にアクセスできるようになります。
    Flashbotsではgo-ethereumクライアントを改変したMEV-Gethを提供しています。MEV-Gethはトランザクションをブロックに含めるため、マイナーとトレーダーに効率的な通信チャネルを作成することができます。MEV-Gethを採用することで、フロントランニング・バックランニングによって引き起こされるp2pネットワークやチェーンの輻輳の多くが緩和されるはず、とのことです。MEV-GethはFlashbots Coreに含まれています。
  3. MEVを再配分する
    MEVはEthereumエコシステムの全てのプレイヤーに係ります。Flashbotsの予備調査によると、MEV抽出はマイナーとトレーダーに不釣り合いな利益をもたらしており、 MEV抽出の規模が拡大する場合には、ユーザとシステムの安定性に向けた「ある程度の」利益の再配布が必要になると予想されます。Ethereumエコシステム全体にとってEthereumのバリュープロポジションであるパーミッションレス・分散性を脅かすリスクを低減し、MEVを中心にインセンティブを調整することが全体的に不可欠です。

Why Flashbots?? 2020年から2021年にかけて、DEXの盛り上がりに伴いEthereumの利用が拡大しました。この利用拡大によってトランザクションの順序を優先するPrice Gas Auctionボットのオペレーターとマイナー間の非効率的な通信によって引き起こされたEtherem p2pネットワークの輻輳、ブロックチェーンのブロックスペースの輻輳などの負の外部性が露呈してしまいました。

前述のとおりMEV抽出に伴うインセンティブはEthereumのコンセンサスセキュリティへリスクをもたらす可能性があります。過去のMEV利益を抽出するためのタイムバンディット攻撃を通じたリオーグのインセンティブ、またプライベート・低遅延・オーダー順序コントロールのためのトランザクションルーティング集権化のインセンティブなどです。

現状ではEthereumの中立性、透明性、分散化、公平性を損なう可能性があるため、パーミッションドなトランザクションルーティングインフラストラクチャ(プライベートトランザクションサービス等)の開発が観察され懸念されています。 Flashbots Coreは、負の外部性と存在するリスクを軽減することを目的としたオープンソースで民主的な組織で、中立的な手段を提供しています。

タイムラインからFlashbots Core Alpha v0.1が1月にリリースされ、5月にv0.2が公開されたことが分かります。本稿ではFlashbots Coreを使用していきます。Flashbots Dataについては触れていません。

Flashbots Timeline

Flashbots Bundle作ってみる

まずはFlashbots Coreの基本的な部分を公式ページからかいつまんで要約してみました。Flashbots Coreでどのようにトランザクションが処理されるのか、MEV抽出が可能なのかの説明です。通常のEthereumトランザクションプールでは、ユーザはトランザクションをp2pネットワークにブロードキャストし、実行したいトランザクションに対して支払うガス価格を指定します。マイナーは受け取ったトランザクションを集め、ガス価格順などでオーダーを並び替え、トランザクション手数料を最大化しようとするブロックを作成します。このメカニズムは English auctionall-pay auction の中間であると説明されています。このメカニズムの問題点は次の3点です。

  1. 通常のトランザクションプールのオープンな性質は、トランザクションのオーダリングの入札バトルを引き起こし、p2pネットワークの輻輳やガス価格の変動の原因となります。これは洗練されていないネットワーク参加者に不利益をもたらす可能性があります。
  2. all-pay auction の性質から失敗したビッドはチェーン上でリバートされます。これは不必要なブロックスペースの消費を発生させ、実行リスクのため入札者が入札の価格を低くし、最終的には人為的なブロックスペースの不足とマイナーのリワードの減少につながります。
  3. ガス価格に依存しているため、入札者はブロックの最上位のオーダーに制限され、きめ細かい注文設定を実現できません。このことによって、入札に勝つ可能性を高めるためスパムなどの代替の戦略が行われ、deadweight lossがさらに増加し​​ます。

Flashbots Coreは、このメカニズムではなく first-price sealed-bid auction を使用しています。ユーザはビッドに失敗した場合に手数料を支払う必要がなく、入札内容と取引注文の詳細をプライベートな通信チャネルで伝えることができます。このメカニズムではマイナーのペイオフを最大化できると同時に、特定のMEVの価値に関する価格発見のための効率的な機会を提供することができるようになる、とのことです。

Flashbots CoreはSearchers、Relayers、Minersの登場人物によって前述の通信チャネルが処理されますが、アービトラージの機会を発見してRelayersへプライベートなトランザクションプールを使用する主体はSearchersとなります。Flashbots Coreはこの通信チャネルのためのメッセージフォーマットを作成し、 eth_sendBundle というRPCを使用します。このメッセージは”Flashbots Bundle”と呼ばれます。Searchersは、MEV-Gethを実行しているマイナーにRelayers経由でこのFlashbots Bundleのトランザクションを送信することで、公平なMEV抽出へ参加することができます。Flashbots BundleのトランザクションはMEV-Relayを通じてMEV-Gethを動かしているマイナーのノードへ送出されるようになっています。[7]

flashbots core searchers

Ethereum p2pネットワークの代わりにMEV-Relayへ直接トランザクションを送ることでSearchersは Pre-trade privacy を得ます。 Pre-trade privacy によってトランザクションは通常の他のネットワークからは見えないようになります。Seachersはトランザクションの入札をガス価格もしくは直接マイナーのコインベースアドレスへの支払いとして設定することができます。ガス価格ではなくマイナーへの直接支払いを選択した場合、ユーザはトランザクションの成功を条件として支払いを行うことができるため、入札の失敗に対する支払いを避けることができるようになります。

Relayersについての注意点です。Relayersは”Flashbots Bundle”を受け取り、検証した上でMEV-Gethのマイナーへ送出します。Relayersは”Flashbots Bundle”の内容への完全なアクセスがあるので、Searchersから送信されたBundleを任意に並べ替えたり、盗聴・検閲することができます。現状はFlashbotsの組織がMEV-Relayを運用していますが、すべてのRelayersが信用できるわけでないことに注意が必要です。システムが完全に分散化されるまでは、SearchersやマイナーはFlashbot以外のRelayersと統合することはお勧めされていません。[8]

前置きが長くなりましたが、公式ページのquick startのサンプルを使ってどのようにFlashbots Bundleを作成するか見てみます。MEV-Relayとやり取りするにはethers.jsかweb3.py(もしくはGo)を使用する必要があります。ここではethers.jsのサンプル使いました。またネットワークはメインネットではなくGoerliテストネットを使用しています。[9]

FlashbotsBundleProvider のライブラリはMEV-Relayへのハイレベルなアクセスを提供してくれます。まず ethersFlashbotsBundleProvider のパッケージをインストールする必要があります。 FlashbotsBundleProvider によってMEVで使用されているRPCエンドポイント( eth_sendBundle eth_callBundle )へのアクセスが可能になります。

$ npm init -y
$ npm install --save ethers
$ npm install --save @flashbots/ethers-provider-bundle
+ ethers@5.2.0
+ @flashbots/ethers-provider-bundle@0.3.1

こちらが実際に実行してみたコードです。 ethers.js のproviderとsignerを渡してFlashbotsのproviderを作成します。このプロバイダを使用して eth_callBundle (simulate関数)や eth_sendBundle (sendBundle関数)を呼び出せすことができるようになります。トランザクションバンドルを作成し、ブロック番号を指定してsendBundle関数でMEV-Relayへ作成したバンドルを送出しました。シミュレーションの結果と、バンドルを送ったブロック番号が表示されています。

simple-arbitrageというリポジトリは、アービトラージの機会を発見・評価して”Flashbots Bundle”を作成するサンプルコードです。具体的にはUniswapとSushiswapのマーケットペアの価格を走査して、アービトラージの機会を発見、MEV-Gethマイナーへブロックの先頭に含まれるような手数料を払う”Flashbots Bundle”を作成します。コードはこのままではプロフィッタブルなアービトラージを実行できないようですが、修正をすることで実用に耐えるボットになると思われます。詳細はこれから見てみます。

最新のレポートで現在のFlashbotsのメトリックについて触れられています。21個のマイニングプール(また上位5つのうち5つ全て)がEthereumハッシュレートの80%以上を占め、Flashbots Bundleを受け取っています。上位10個のマイニングプールアドレスのうち8個が現在MEV-Gethを実行しているとのことです。

マイナーがFlashbotsの利用から得た総利益は約1,000 Ethから約10,000 Ethとほぼ10倍に増加しており、ブロックあたりの平均利益は0.18から0.2 Ethで安定しています。Flashbotsの次のリリースでは、総利益とブロックあたりの平均利益の両方が増加すると予想されています。

その他のメトリックやグラフは以下の公式ページに掲載されています。

Flashbots Bundleの作成については以上です。続編ではより詳細なFlashbotsの使い方を調べてみたいと思います。

まとめ

  • MEV(Miner Extractable Value)とは、Ethereumにおいて主としてマイナーがトランザクションを任意に含めたり、除外したり、並べ替えたりすることを通じて得られる利益のことである
  • FlashbotsはMEVのネガティブな外部性やセキュリティリスクを軽減するために組成された研究開発組織で、Dark Forestの照射、MEVの民主化、MEVの再配分の3つのアプローチでMEVの危機へ対応している
  • SearchersはEthereum p2pネットワークではなく、MEV-relayへFlashbots Bundleを送り、トランザクションの入札をガス価格もしくは直接マイナーのコインベースアドレスへの支払いとして設定します
  • Flashbots BundleのトランザクションはMEV-Relayを通じてMEV-Gethを動かしているマイナーのノードへ送られ、MEV-Gethはバニラブロックよりバンドルを含むブロックの方が有益であればそれを優先します

--

--

Yuya Sugano

Cloud Architect and Blockchain Enthusiast, techflare.blog, Vinyl DJ, Backpacker. ブロックチェーン・クラウド(AWS/Azure)関連の記事をパブリッシュ。バックパッカーとしてユーラシア大陸を陸路横断するなど旅が趣味。