概要
zk-snarksがethreumに実装された。zk-snarksはゼロ知識証明という暗号理論を利用しており計算の正当性をその計算を実行することなしに検証することができる。またその計算についてそれが正しく実行されたということ以外何も知ることはできない。
以下の4つの点がzk-snarksを理解するために重要である。
多項式問題として定式化
検査されるプログラムはt(x) h(x) = w(x) v(x)にコンパイルされる。プログラムが正しく計算される場合にのみ等価となる。
ランダムサンプリングによる簡潔さ
検証者は問題を多項式の乗算と多項式関数の等価性から単純な乗算と等価性のチェックに削減するために秘密の評価点sを選択する。
つまりt(s)h(s) = w(s)v(s)の等価性をチェックする。
同型符号化、暗号化
準同型の性質を有する符号化・暗号化関数Eを使用する。これによって証明者がsを知ることなくE(t(s)), E(h(s)), E(w(s)), E(v(s)) を計算できるようになる(E(s)のみ知っている)。
ゼロ知識
検証者が実際の符号化された値を知ることなく正しさを確認できるように証明者はE(t(s)), E(h(s)), E(w(s)), E(v(s))に数をかけることで変更する。 t(s)h(s) = w(s)v(s)を検証するのと t(s)h(s)k = w(s)v(s)kを検証するのは等価である。
参考