BuilderNetの解説
2024年11月27日に発表されたFlashbotsの新ソリューション。
https://buildernet.org/
https://collective.flashbots.net/t/introducing-buildernet/4173
ざっくり
ビルダーの中央集権化を防ぐためのビルダー同士のネットワーク。
今までサーチャー-ビルダー間で横接続されて独占状態になっていたいたオーダーフローを解決するために作られている。
ビルダーネットというビルダーだけのネットワークに複数のビルダーを参加させ、このネットワーク全体で一つのブロックを毎スロット提案し、その生成されたブロックが通ったらその利益が分配される。
ブロックを作る過程はTEEによってプライバシーが保護、保証されている。
所感:なんかマイニングプールみたい。目的は違うけど結果として似たような構造になっている。ブロック生成において単独のマイナーとマイニングプールに参加するマイナーどっちもいるのと同じように、ビルダーネットに参加するビルダーがいれば参加しないビルダーもいて、おたがいに収益性を決める指標(マイナーなら持っている計算力、ビルダーなら持っているオーダーフロー)に応じてネットワークに参加するかしないか決める、みたいな。
オーダーフロー: トランザクションの流れ。多くオーダーフローを持つということは、多くの人がそこに向かってトランザクションを投げているということ。
現在の問題
下の図における青で表される「ビルダー」がかなり中央集権化していること。
90%のオーダーフローがたった2事業者のビルダーによって捌かれているらしい。これは色々とまずい。(イーサリアム全体のオーダーフローのほとんどはMev -boostを通してブロックになるので、そのうち90%ということはほぼ全部)
ざっくり図解、ビルダーネットあるなしのtxのフロー
https://scrapbox.io/files/67480884ac62b74c24551618.png
上の状態(現在)から下の状態へ移行していくのが目的。
Cのビルダーはビルダーネットに参加していないバリデーターを意味しているが、将来的にはビルダーネットがほぼ全ての「小さい」オーダーフローを持つビルダーを取り込むことになると思う。その方がいいはず。
つまりCは目単独でめっちゃでかいオーダーフローを持つビルダーだと思う。
https://scrapbox.io/files/6748095ad10c4977bf165105.png
これはビルダーネットのアーキテクチャ。
ビルダー・ネットワークには5つの主要アクターが存在する。
1. ビルダーノード: TEE サーバインスタンスであり、このネットワークのノード
2. ノードオペレータ: ビルダーネットのネットワークを構成するノード(ビルダーノード)を運営するエンティティ
3. フラッシュボット・インフラストラクチャ: BuilderHubと再配布アーカイブを管理する
4. MEV-Boostリレー: ブロックの投入先
5. オーダーフローソース: ユーザー、サーチャー、ウォレット、ボットなどtxを作る人々
ビルダーノードは、オーダーフローソースからtxを受け取り、他のビルダーノードとそれを共有する。
ネットワークで一つのブロックを作成し、MEV-boost relayのオークションに出す。
ブロックの送信等はフラッシュボット・インフラが担っている。
ビルダーノードがどんなオーダーフローをどれだけ提出したのか、はTEEによって秘匿されるので誰にもわからない。
またTEEは完全性を有しているので途中で本来の設定に反したオーダーの入れ替えなどもしない。(ちなみに、正しく設定された通りに動きましたよ、という証明書を書き出す機能もある)
つまり、今までブロックチェーン関連ネットワークに基本的に搭載されていた「情報がデフォルトで公開される」機能が全くない。(注:ビルダーネットはブロックチェーンではない。)
ノードは自分がどんなオーダーフローを受け取ったかはわかるが、他の参加者が何を受け取って何を送っているのかは一切わからない。
またブロックの内容も、MEV-boost Relayに提出されるまで誰も内容を知ることができなくなっている。
これでようやく「公平に」ブロックの構築ができるという。
現在はノードオペレーターはFlashbots, Beaverbuild, Nethermindの3つで運用されており、一般参加はできないが、今後数ヶ月でできるようになっていくとのこと。
気になった点
結局ブロックの構築アルゴリズムはどんな仕組みなんだろうか。
あとビルダーネット内がなんらかの仕組みによって寡占状態に陥ることはないのか?
Docsを読んだ感じブロックの生成は全部オーダーフロー基準っぽくて、例えば1つの事業者が全オーダーフローの80%を持っている状態でビルダーネットに参加したら結局ビルダーネットが吐き出すブロックの8割がその事業者のオーダーになるわけだけど、残りの2割のオーダーフローがもれなくブロックに取り込まれるようになる(今までの仕組みだったら2割の確率でしか取り込まれない)から大丈夫みたいな感じなんだろうか。