ゼロ知識証明の活用でビットコインノードの爆速同期を目指すZeroSync
ビットコインノードの立ち上げで問題になるのは主にブロックチェーンの保管に必要なストレージと、その取得に必要な帯域幅です。前者はプルーニングを有効にすることで大幅に削減することもできますが、少なくとも全体を一度はダウンロードするため後者は解決不可能なように思えてきます。
そこでイーサリアム等で盛んに研究されているゼロ知識証明の技術を利用して、すべてのビットコインブロックを取得せずとも現在のUTXOセットが正常な状態遷移によって構成されたものであることを検証できるようにするプロジェクトが現れました。ZeroSyncです。

3段階に分けて開発予定
ZeroSyncはビットコインの最初のブロックから最新のブロックまでの状態遷移が最新のUTXOセットになることをゼロ知識証明するという構想ですが、これには様々な検証を組み合わせることが必要です。そのため、プロジェクトは3つの段階に分けて進められています:
1.ヘッダーのみの検証
この段階ではブロックヘッダーの内容とPoW・難易度の検証のみを行い、ブロックの中身についてはノータッチで、最近主流ではなくなっている印象のSPVウォレットと似たような機能を目指しているようです。
2.署名以外すべての検証
ブロックヘッダーのみとは異なり、トランザクションの金額等まで検証する段階です。ただし、トランザクション内の署名に関しては検証しない、Bitcoin CoreでいうAssumevalidモードを再現したような機能になるそうです。
ブロックチェーンの初回同期においてトランザクションにおける署名検証が最もリソースを消費するため、Bitcoin CoreではリリースごとにAssumevalidブロックが既定で定められ、それ以前のトランザクションはユーザーが指示しなければ署名が検証されません。Assumevalid=0にすると最初から全て検証しますが、その分時間がかかります。
3.フルノード同等の検証
上に加えてビットコインスクリプトの検証まで行い、フルノードのすべての機能を再現するという構想です。これは非常に複雑な証明になるため、作成できるようになるまでにかなり時間と費用がかかると考えられます。
現在は最初の3500ブロックほどについてのみ、1のヘッダーのみ検証するデモが公開されています。ゼロ知識証明なので作成に大きな時間と費用がかかるためスコープを限定していますが、検証はさすがに速いですね。

プライバシー、スケーラビリティ、インターオペラビリティに予想される効果
モバイルアプリやウェブアプリ内にZeroSyncを利用した軽量ビットコインノードを含めることで、リソースを確保してフルノードを建てることなく独自のビットコインノードを必要とするアプリを気軽に利用・導入できるようになります。
たとえばアドレス再利用よりプライバシーの高い固定アドレス・Silent Paymentsなどの利用が簡単になるかもしれません。また、ゼロ知識証明の利用によって行われていることの本質は取引情報の圧縮であるため、応用としてレイヤー2やレイヤー3プロトコルにおけるスケーラビリティの改善に活用される可能性が大いにあるでしょう。ゼロ知識証明の検証ができるブロックチェーンとのブリッジもより少ないトラストで実現できるかもしれません。

ネットワークへの影響
なお、ZeroSyncが完成すると以前はフルノードを運用していたが、自分の用途にはZeroSyncで十分という人たちが従来型のフルノードの運用をやめる可能性があります。そういう意味ではプルーニングがより一般的になったような影響が出るおそれはあります(初回同期に時間がかかるなど)。ただし、フルノードを新たに初回同期する人が減るなら、存続するノードが極端に減少しなければ問題にならないかもしれません。
また一方で、これまでフルノードを運用していなかったがアプリ内でZeroSyncを利用したり、新しいユースケースの普及に繋がる可能性があるなどネガティブな影響だけとは決して限りません。
あくまでZeroSyncはコンセンサスルールの変更でなく、ノードの同期方法やチェーンの検証方法としての提案なので、このままパーミッションレスに開発されてビットコインを使ったアプリケーションに新しい風を吹き込んでくれることに期待しています。
次の記事
読者になる
一緒に新しい世界を探求していきましょう。


ディスカッション