BitVMXとPoWにより正規チェーンを決めるRootstockブリッジUnionの仕組み

お知らせ
Table of Contents

はじめに

Rootstock は「ビットコインのスマートコントラクト・サイドチェーン」として、BTC を rBTC にブリッジして EVM 上で DeFi などを動かすためのネットワークです。PowPeg と呼ばれる 2-way peg を2018年から運用していて、ビットコインの PoW と HSM を組み合わせたブリッジとして知られています。(dev.rootstock.io)

その Rootstock に対して、「もっと Drivechain っぽいブリッジを作ろう」として提案されているのが Union です。Union は新しい チェーンではなく、「Bitcoin ↔ Rootstock の BTC ブリッジ層(Rootstock のコンセンサスの見え方)を作り直す L2 の仕組み」です。ブリッジのルールの中に Rootstock のコンセンサスルールを埋め込み、最終的には Bitcoin / Rootstock マイナーの 51% ハッシュパワーで「どの Rootstock チェーンが正しいか」を決める設計になっています。(arXiv)

この記事では、Union がどのあたりで Drivechain と似ているのか、そしてどこが違うのかを整理してみます。

NotebookLMによる 勉強会資料: Union_Bitcoin_s_L2_Drivechain

Rootstock と Unionの整理

Rootstock の前提:

  • Rootstock は Bitcoin とマージマイニングされる PoW チェーン
  • BTC ↔ rBTC のブリッジには PowPeg が使われており、PowPeg では、マイナー + PowPeg ファンクショナリー + HSM という多層構造でブリッジを守っている(dev.rootstock.io)。ただし、PowPegが本当にHSM内で実行されていることを確認する方法がないため、一般ユーザーから見たら Blockstream Liquidのようなマルチシグと変わらない。もしかしたら、マイナーはHSMの中の署名用鍵を無条件に取り出して出金トランザクションに署名できてしまうかもしれない。

Union はビットコインのコンセンサス変更(ソフトフォーク)不要で、この PowPeg を利用しつつ「ブリッジのコンセンサスの決め方を、より Drivechain に近い形にする」ための仕組みです。(arXiv)

  • ビットコイン側での BTC ロック UTXO(VMXO)を BitVMX(bitvmx) で守り直す
  • Rootstock 側の「どのチェーンが正しいか」を SPV検証 + STARK/SNARK で証明生成し、正しいチェーンかどうかを Bitcoin 上でBitVMXを使い検証し、ブリッジ上で決まったルールに従って BTC を解放する

なので、レイヤー構造としては「Bitcoin(L1)」「Rootstock(Bitcoin にマージドマイニングされた L2)」「Rootstock-L2 に付属するUnion ブリッジ」のようになります。

Drivechain/Unionで マイナーの 51%ハッシュパワー がサイドチェーンを決める仕組み

Drivechain (BIP300/301) を大まかに説明すると

  • サイドチェーン上での出金(withdrawal)提案が L1 に載る
  • 数ヶ月かけてマイナーがコインベースに埋め込んだシグナルで「賛成/反対」を投票
  • 51% 以上のハッシュパワーが OK を出した提案だけが、最終的な出金として確定する(bips.xyz)

という「外部コンセンサス(サイドチェーン状態)を、マイナー投票で決める仕組み」です。

Union の場合は、マイナーが投票するわけではありませんが、次のようなゲーム構造になっています。

  1. Rootstock 側では、マージマイニングによるPoW コンセンサスで「累積難易度最大のチェーン」が 正規チェーン(canonical chain) になる
  2. Bitcoin 側では、「Union の SPV検証証明(checkChain)」に対して「与えられた Rootstock ヘッダ列が 正規 かどうか」を SNARK + BitVMX で検証する
  3. 誰かが「変なチェーン」を出してきたら、別の誰かが「もっと累積難易度の大きい正しいチェーン」を checkAltChain においてカウンターとして出すことで、それを潰せる

つまり、最終的には

Rootstock の 正規チェーン = 累積 PoW 最大のチェーン
→ それだけが checkChain / checkAltChain のゲームを生き残る
→ そのチェーン上の peg-out だけが 正しい BTC 出金として通る

という形になります。「長期的に 51% 以上のマイナーがルール通りのブロックを掘り続け、かつそのチェーンが公開される」という PoW の前提に依存しており、これは Drivechain と似ている仮定です。(arXiv)

Union の中身: 運用者(functionary) と マルチパーティ BitVMX

Union のブリッジは大きく以下の要素でできています。(arXiv)

運用者 セット

ブリッジ運用者の集合。(理想的にはコンセンサス依存の)登録メカニズムで登録・更新される。前提は「1-of-N honest」、つまり N 人のうち 1 人でも正直なら安全というモデル。BitVM2でも同様に1-of-Nの仮定が使用されていた(bitvmbridge)。

マルチパーティ BitVMX

元々 2 者用だった BitVMX を多人数に拡張したもの。全員で巨大な presigned Tx DAG に署名し、その後鍵を削除することで、「BitVMX のゲームを通らない限り BTC が出てこない」VMXO を作る。

オペレータ / 検証者

peg-out 時に先に BTC を立て替えるのが オペレータ。それ以外の 運用者 は 検証者 として、オペレータ が出した証明に反証を与えられる。

保証金(security deposit)と packet / enabler

運用者 は保証金をロックし、不正が証明されたらスラッシュされる。packet という単位で複数の VMXO が同じ保証金を共有し、資金効率 を高める。enabler というトークンで「誰がどの役割で参加できるか」を制御し、不正者は自動的に追放される。

※このあたりが具体的にどう設計・実装されるのかは要注意。サイドチェーンのコンセンサスの健全性を担保する仕組みが ブリッジなのに、逆にそのブリッジの健全性がサイドチェーンのコンセンサスに依存して問題ないのだろうか。サイドチェーンのコンセンサスとは独立したネットワークで運用者のコミュニケーションができれば問題ないとは思われる。

Peg-in / Peg-out の大まかなフロー

Peg-in(Bitcoin → Rootstock)

  1. ユーザーが「X BTC 入金したい」と 運用者 に依頼
  2. 運用者 セットが、その金額に対応する Deposit アドレス(VMXO 用)を返す
  3. ユーザーがそこに BTC を送る
  4. 全 運用者 が署名
  5. Bitcoin 上で確定したら、Rootstock がその Tx を SPV 検証し、対応する rBTC をミント

ここは 全員署名が必要な 許可制 プロセスですが、入金拒否された場合にユーザーが自力でBTCを回収できるかは不明です。(arXiv)

Peg-out(Rootstock → Bitcoin)

  1. ユーザーが Rootstock で peg-out Tx を作成し、専用アドレスに rBTC を送る
  2. その Tx がどの VMXO に紐づくかを決める
  3. ある 運用者 が オペレータ として、先に Bitcoin でユーザーに BTC を立て替え
  4. その後、Rootstock 上の peg-out と Bitcoin 上の支払いをまとめた証拠を作り、
    checkChain の結果を SNARK で包んで BitVMX の Kick-off Tx を投げる
  5. 他の 運用者 が 検証者 として証拠をチェックし、不正なら 反証を提出
  6. 誰もチャレンジしなければ、タイムロック後に オペレータ が VMXO から BTC を回収

ここで「checkChain / checkAltChain」と「最大チェーンしか生き残れない」仕組みが意味を持ちます。

checkChain / checkAltChain と「最大チェーンだけが生き残る」仕組み

Union のクロスチェーン検証のキーは次の 2 つの関数です。(arXiv)

checkChain

checkChainは

  • Rootstock のブロックヘッダ列
  • peg-in の inclusion proof(Bitcoin)
  • peg-out の inclusion proof(Rootstock)
  • 累積 difficulty

を入力に取り、「このヘッダ列が Rootstock のルールを満たしていて、peg-in と対応する peg-out が正しく乗っているか」を判定する SPV検証 関数です。

checkAltChain

checkAltChainは

  • 別のブロックヘッダ列
  • より大きな累積 difficulty
  • peg-in は含むが、問題の peg-out ブロックは含まない

という代替チェーンを入力に取り、「こちらの方が強いチェーンで、かつ peg-out が無効である」ことを証明する関数です。

悪意ある オペレータ が、例えば「自分でひっそり採掘した fork チェーン A を持ってきて、そこにだけ存在する peg-out を使って VMXO から BTC を抜き取ろう」と考えたとします。

このとき、正直な 運用者 は

  1. Rootstock の 正規チェーン B(累積 PoW 最大)を集める
  2. 「B は A より難易度が大きく、peg-in は含むが問題の peg-out は含まない」という checkAltChain の証明を用意する
  3. それを BitVMX の 反証として出す

ことで、A に基づく peg-out を無効化できます。(arXiv)
この設計により、「累積 PoW 最大のチェーン上にない peg-out は、誰かが本物チェーンを提示すれば反証される可能性が高い」という性質が得られます。ここが、「最大チェーンではないものが提出された場合には、最大チェーンの証明を誰かがチャレンジャーとして出すことで無効化できる」というポイントであり、「外部コンセンサスを 51% ハッシュパワーで決めている」という点で、Drivechain と似ています。

Union の限界と現状の問題点

魅力的な設計ではありますが、現時点で見えている限界や課題もあります。(arXiv)

1. 有限の 運用者 集合とセットアップの重さ

BitVMX の都合上、参加者全員で大量の presigned Tx に署名する必要があり、運用者 の数を増やしすぎると現実的に回りません。そのため、

  • 運用者 集合は「有限でそこそこ小さい」前提
  • 運用者 の入れ替えも、簡単ではない(セットアップをやり直すコスト)

という制約があります。Drivechain のように「全マイナーが自動的に参加」とはいきません。

2. Peg-in が 許可制

Peg-in には 運用者 全員の署名が必要で、金額も事前に決めた離散的な値に制限される設計になっています。ユーザー側でうまくラップすれば隠せますが、以下のような課題があります。

  • 任意額を簡単に送れる既存ブリッジと比べると、素朴な UX は少し劣る
  • ウォレット / SDK でどこまで抽象化できるかが鍵

感想

まとめると、Union は以下のような位置づけになります。

  • マルチパーティ BitVMX と 1-of-N honest な 運用者 モデルで、「誰か 1 人でも正直なら BTC は盗まれない」構造にしている
  • checkChain / checkAltChain によって、「累積 PoW 最大のチェーンだけが生き残る」ことを Bitcoin 上で強制し、 「外部コンセンサスを実質的に 51% ハッシュパワーで決めている」という意味で Drivechain に近い
  • 一方で、有限 運用者 集合 / 重いセットアップ / 許可制 peg-in / 検閲耐性など、別のトレードオフもある

Drivechain を L1 に入れるかどうかの議論とは別に、「同じような仮定を L2 側でどこまでエミュレートできるのか?」を実験できる限界に Rootstock + Union は挑戦していると言えるでしょう。

通常のサイドチェーン、ブリッジだと入金が簡単で出金が難しいということが多いですが、Unionでは逆に入金に全員の合意が必要で難しく、出金は簡単という構成になっているのが興味深いです。

Unionはソフトフォークを必要としませんが、この仕組みをビットコインに導入するためにマイナー以外の個人ユーザーにできることはほとんど無いと言えます。これは「Blockstream Liquid」のように、「気軽に同じようなサイドチェーンを作ってみよう」とチャレンジできるようなプロジェクトとの違いであり、もしUnionと同様のブリッジを導入したい場合には、個々のマイナーやマイニングプールを説得する必要があります。マイナーが実際どのくらいマージマイニングを行っているのかについては、一般ユーザーでも検証が可能であり、十分なマージマイニングが行われている場合のみ信頼し利用するという選択ができます。

懸念としては、BitVM系のプロトコルは改善のスピードが非常に早いので、せっかくリリースしてもすぐに陳腐化してしまう可能性があるかもしれません。

file

記事執筆時点ではソフトウェアのリリースはされていないようですが、実際に検証可能な実装が出てきたら検証してみたいと思いました。


タイトルとURLをコピーしました