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