ドット積チェックは、解ベクトルの6番目の要素を取り、最初の要素の5倍を加え(注意:最初の要素は1なので、これは事実上5を加えることを意味する)、3番目の要素と照合する。inputに応じてwitnessという値は変わる。含むすべての変数への代入は、x=3の場合下記のようになる。Program)形式に変換するzz。QAP形式は、ドット積の代わりに多項式を使う以外は、まったく同じロジックを実装している。c)からなる4つのグループがあったが、それを次数3の多項式からなる6つのグループにする。R1CSのベクトルを多項式に変換するということ。R1CSからQAPへの変換には、ラグランジュ補間を用いて多項式を生成する過程が含まれる。ラグランジュ補間は、与えられた点群を通る多項式を見つける方法。各点に対して、その点でのみ特定の値(y座標)を取り、他の点では0を取る多項式を生成し、最終的な多項式はこれらを全て足し合わせたものになる。通る多項式を見つけることを考える。実際に変換する手順は下記のようになる。この列の各要素は、4つの異なる制約(R1CS内の行)の最初の要素となっている。これらの要素を用いて、ラグランジュ補間を行い、対応する多項式を生成する。6番目の列も同様に計算すると下記のような結果となる。1係数として表すと下記のようになる。0.166]係数を逆順に並べると上記の多項式が出来上がる。Cベクトルと計算していくとQAPが完成する。それぞれの結果はこの通り。評価すると、R1CSの元のベクトルの値が得られる。x=1000100これらの多項式はこの図のような関係が成り立っている。Groth16」についてです。https://zenn.dev/mameta29/articles/5ce2fd4070e412「5.PLONK」についてはこちらです。Proよくある質問LinksX(Twitter)GitHubメディアキットLegal利用規約プライバシーポリシ。