多項式コミットメントスキームの1つであるKZGコミットメントの仕組みについて調べた↓
techmedia-think.hatenablog.com
↑では、ベクトルを多項式に変換することでベクトルにコミットし、その多項式での評価値と単一の楕円曲線のグループ要素をプルーフとして提供することで、コミットしたベクトルの一部をデコミットしていた。
マルチプルーフ
今回は、マルチプルーフと呼ばれる複数の値をデコミットする際のプルーフの作成、検証の仕組みについて見ていこう。KZGコミットメントの場合、多項式補間を使ってマルチプルーフを構成する。
k個の評価値のリストをとすると、これらの値を使って、ラグランジュ補間によりk-1次の補間多項式を算出することができる。
元々のコミットされた多項式も、当然これらすべての点(
)を通り、
は各
においてゼロになる。これは、
で割り切れることを意味する。
これらの関係から、単一のプルーフを作成する際に用いた
は、マルチプルーフにおいては、とした場合、以下のように定義できると。
そして、マルチプルーフは、このに対して、単一のプルーフと同様に
を計算して算出する。つまり、マルチプルーフは単一のプルーフと同様、楕円曲線の単一のグループ要素になる。
検証
マルチプルーフと評価値のリスト
が与えられた検証者は、まず評価値のリストを使って補間多項式
と、
を計算する。
単一のプルーフにおいては、以下のペアリングの等価性を検証していたが、
マルチプルーフでは、以下のペアリングの等価性を検証するようになる。
この結果、マルチプルーフの場合、プルーフのサイズは単一のプルーフと変わらずO(1)で、検証コストは評価値のリスト分O(k)に増える。