PLONK
Permutations over Lagrange-bases for Oecumenical Noninteractive arguments of Knowledge
多項式コミットメント
KZGコミットメントの最大の特徴は、初期設定で作られるパラメータが、特定のプログラムに依存しない「汎用的な構造」を持っている
これにより、Groth16が抱えていた「回路ごとの設定」という大きな問題を解決し、PLONKの2つの大きな革新を可能にした 革新点
1. ユニバーサルで更新可能なTrusted Setup
Groth16の「プログラムごとに初期設定が必要」という問題を解決した
普遍性 (Universal)
一度だけ初期設定を行えば、そのパラメータを様々な種類のプログラムで使い回すことができる
これにより、開発者は新しいプログラムを開発するたびに面倒なセットアップを行う必要がなくなり、開発スピードが劇的に向上
更新可能性 (Updatable)
初期設定のセキュリティは、後から参加者を追加することで継続的に強化できる
e.g. 最初に100人で設定を行った後、新たに101人目が参加してパラメータを「上書き」することで、セキュリティがさらに向上する
攻撃者は「すべての参加者の秘密」を手に入れない限り偽の証明を作れないため、参加者のうち一人でも正直者がいれば安全性が保たれる
2. カスタムゲートによる高い柔軟性
「ハッシュ関数」のような複雑な計算を考える
Groth16においては、回路の基本演算が「足し算」と「掛け算」に限定されているため、ハッシュ関数を表現するには数千個ものゲートが必要になることも
PLONKにおいては、 「ハッシュ計算専用のカスタムゲート」を定義できるため、わずか数十個のゲートで同じ計算を効率的に表現できる
これにより、より複雑なプログラムを効率的に表現できるようになり、例えば「Ethereumのすべてのプログラムをゼロ知識証明化する」という壮大な構想である "zkEVM" の実現に道を開いた