Programに、この度参加しました。そこでZKPについて、どのような学びがあったかを書いていきます。全体感についてはこちらです。ついての1つ目の記事です。概要から数学的にどのような仕組みでゼロ知識証明を実現しているかまで体系的に記述していきたいと思います。このモジュールが一番学びごたえのある難しいものでした。Knowledge」の略です。Zero-Knowledge(ゼロ知識):証明者は、ある命題が真であることを証明するが、それ以外の情報(命題の内容など)を明らかにする必要はない。Succinct(簡潔):証明は非常に小さいサイズで、迅速に検証可能。Non-Interactive(非対話型):一度生成された証明は、証明者と検証者の間で対話なしに検証できる。非対話的にゼロ知識証明を構築でき、ブロックチェーンでのトランザクションの秘匿化やイーサリアムのスケーリング問題のソリューションとして応用することができます。このzkSNARKsの構築は複雑で以降下記のトピックにて3回に分けて説明します。算術回路からQAPへ」についてです。Program」に参加した人たちの発表内容を要約する形で書いていこうと思います。E(y)PSE発表者資料より準同型性:E(x)とE(y)からxとyの算術式のHHを求められる。算術回路からQAPへそもそも何がしたいかといえば、特定の計算が適切に実行されたことを証明すること。zk-SNARKはどんな計算問題にも直接適用することはできない。問題を適切な「形式」に変換して演算する必要がある。Program(四則演算プログラム)」と呼ばる。その変換の過程を説明していく。QAP以降Vitalikの記事も参照していく。算術回路まず、問題を算術回路と呼ばれるものに変換する必要がある。これにより、方程式を「Flatting(平坦化)」して、より単純な一連の方程式にすることができる。語弊を恐れずにいえば、複雑な計算を2つの計算に分けていく作業といえる。35を例題として進める。35を算術回路に変換すると下記のようになる。System)に変換する過程を説明していく。R1CSは、計算を行列とベクトルの形式で表現するためのシステムで単純な構成要素に分解していくことが目的である。