Utreexoは中央集権的にならないか?
ビットコインの分散性を維持するためには、取引データを最小限に維持することが重要です。現在ビットコインの取引データは400GBを越え、UTXOだけでも4GBあります。
ビットコインにはフルノードとSPVと呼ばれる軽量クライアントがあります。フルノードは、さらにPrunedモードと呼ばれるUTXOだけを保持する運用も可能です。また軽量クライアントでは、フルノードと違い、全データを検証せずにブロックヘッダーのみをダウンロードし、自身に必要な取引データだけを検証することでストレージ容量を節約しています。
これまで軽量クライアントはBIP37で定義されているBloom Filterを使って各ウォレットを実装してきましたが、プライバシーが損なわれることからBitcoin Core v0.19.0以降ではBloom Filterはデフォルトでは無効となっています。Bloom Filterのデメリットは、クライアントごとにフィルターが異なるので検閲が可能となる点です。これを解決するために登場したのがBIP157,BIP158のCompact Block Filterで、これはBloom Filterとは異なり、フィルターがブロックごとに作成されるためビットコイン・ネットワークで全て同じものとなります。ただし、どちらにしても軽量クライアントはあくまでブロックヘッダーのみを保持し自身に必要な取引データのみを検証するので、全データを検証するフルノード/Prunedノードほどトラストレスではありません。
さて、ビットコインのフルノードは全データを保持するフルノードと検証したデータは捨てUTXOのみを保持するPrunedノードの2種類がありますが、これとは別なアプローチをするフルノードの提案としてUtreexoがあります。技術的な説明は割愛しますが、UtreexoはUTXOの管理・保持をマークル木ハッシュを使ったアキュムレーターで行います。これにより保持するデータ容量の大幅な削減だけでなくいくつかのメリットが生まれます。
メリット
- Utreexoノードは数キロバイトのデータ保持のみでよい
- IBDの並列処理が可能
- コンセンサスアルゴリズムをデーターベースから独立できる
- ソフトフォークなしで実現できる
デメリット
- IBDではネットワーク帯域が20%増加
- Utreexoアーカイブノードは通常のフルノード以上のストレージが必要
※IBDとはInitial Block Downloadの略で、最初の同期処理で行うブロックデータのダウンロードのこと
Utreexoはソフトフォークなしで実現可能ですが、そのトリックはブリッジノードとよばれるノードの存在です。このブリッジノード(上記デメリットのUtreexoアーカイブノードと同義)は、フルノードと同じく全取引データの保持はもちろん、Proofと呼ばれるUtreexoノード(別名、Compact State Node)が検証するための証明を保持しないといけません。
以下の図はUtreexoのホワイトペーパーからの抜粋ですが、右側のFull nodeが既存のビットコイン・ネットワークで、左側のCompact State NodeがUtreexoノードのネットワークです。その間にブリッジノードが介在することで、Utreexoネットワークが形成できるわけですが、これはUtreexoノードはブリッジノードに依存することを意味しており、ここが単一障害点や中央集権的なポイントにならないのか?というのが問題となりそうです。
ビットコインでは、フルノードの存在は必須ですが、全てのユーザーが必ずしも全データを保持する必要はなく、そのためにPrunedノードが存在します。UtreexoノードをPrunedノードに対する「代替案・選択肢」として見ることができるかもしれませんが、それでもPrunedノードに比べるとトラストレベルが出てくるので、「トレードオフ」という言葉を持ち出さないといけないような気がします。
以上を考えると、Utreexoはビットコインの分散型ネットワークを維持していくために必要なものなのか疑問が残ります。この投稿を読んでいる方で何か思うところがあればコメントお願いします。
[追記]
Utreexoの発案者のインタビューを聴きました。とても面白い内容で、Utreexoが生まれたきっかけは論文を書かないといけないから仕方なく書いた話であったり、数学や暗号学は発明するものではなく、見つけ出すものであるからこそシュノア署名みたいに特許が適応されるべきではないという考えが展開されています。また、本稿の疑問であった、ブリッジノードに関しても言及されており、やはりそこが攻撃ベクターになると話していました。タッジの話はいつも面白いのでオススメです!
***
以下はLightning NetworkやUtreexoにまつわるちょっとしたおまけを書きました。
Bitcoin: A Work in Progressのチャプター6に記載されている内容で、proofをブロックに含ませるようソフトフォークすれば、bridge nodesは不要になるかもしれない。