ポイントプルーフ(Pointproofs):アルゴランド・チームがブロックチェーンのスケーラビリティを改善するための新しいコミットメント・スキームを設計

最終更新: 5月23日

ブロックチェーン・システムは本質的にステートフルです。たとえば、ユーザーの公開鍵、残高、スマートコントラクトのデータに関する情報を取得します。その後、バリデータは状態情報に依存してトランザクションを検証します。ただし、長期的には、この状態は管理できなくなり、複数のスケーラビリティの問題を引き起こします。さらに、大量のストレージを割り当てることができるバリデータのみがコンセンサスに参加できるため、ストレージ要件が高いと分散化に摩擦が生じます。 ステートレス・ブロックチェーン・モデルは、チェーン上のストレージを暗号化されたコミットメントに置き換えます。たとえば、ユーザーは自分のスマートコントラクト・データにコミットし、関連する暗号化プルーフで更新する値をトランザクションに追加できます。イーサリアムや他のブロックチェーンによって採用された一連のデータにコミットする従来の方法は、マークルツリーを使用することです。残念ながら、マークルツリーはプルーフが非常に長いことが知られています。たとえば、スマートコントラクトで1000個の値をコミットするユーザーは、これらの値の1つだけを変更するために、320バイトの追加データ(暗号化プルーフ)を伝達する必要があります。すべてのトランザクションがすべてのノードに伝播する分散ネットワークでは、これによりネットワーク帯域幅が大量に消費され、コンセンサスに参加するノードにかなりのコストがかかる可能性があります。 これらの問題を解決するために、新しいコミットメント方式であるポイントプルーフ(Pointproofs)[1]を設計しました。 ポイントプルーフは、複数のコミットメントにわたるプルーフの非インタラクティブな集約をサポートする新しいベクトル・コミットメント・スキームです。これにより、ユーザーは一連の値V1、…、V_nをコミットし、後で特定の位置にある1つ以上の値を明らかにすることができます。コミットメントとプルーフサイズはどちらも48バイトのみです。さらに、ポイントプルーフにより、サードパーティは、個別に計算されたさまざまなコミットメント(たとえば、異なるユーザーによって生成された)に関するプルーフのコレクションを48バイトの楕円曲線ポイントで表される単一のプルーフに集約できます。コミットメント集約は、これまでの構造では達成できなかったまったく新しい特性です。ポイントプルーフは隠蔽特性も満たします。一部の値に対するコミットメントとプルーフは、残りの値に関する情報を明らかにしません。


スマートコントラクトベースのトランザクションにポイントプルーフを使用

ブロックチェーン・スマートコントラクトに適用すると、ポイントプルーフは、トランザクションのブロックを伝播するための帯域幅オーバーヘッドを、以前の最新のベクター・コミットメントと比較して少なくとも60%削減できます(特定のインスタンス化で、節約はユースケースによって異なります)。 ポイントプルーフは以下でも効率的です:シングルスレッドでは、1つのコミットメントについて8つの値のプルーフを生成するのに0.08秒かかり、複数のコミットメント間で4000のプルーフを1つのプルーフに集約するには0.25秒、集合証明の検証に23秒(値あたり0.7 ms実証済み)です。 要約すると、ポイントプルーフを使用して、チェーン上のストレージを削減し、ネットワーク帯域幅の要件を最小限に抑え、より効率的な分散型ネットワークを実現できます。 ホワイトペーパーとアルゴランドのオープンソース実装をご覧ください。 [1]「Pointproofs:Aggregating Proofs for Multiple Vector Commitments」(Sergey Gorbunov、Leonid Reyzin、Hoeteck Wee、Zhenfei Zhang)。この論文は、コンピュータと通信のセキュリティに関する2020年のACM会議で発表されます。