私は一般的にZoKratesとZKのものに不慣れです。証人がどのように機能するかについて混乱しています。無効な証人を計算しても、検証者は証明が正しいと検証します。たとえば(ZoKratesの「開始」に基づく)。
このプログラムを考えると:
def main(private field a, field b) -> bool:
return a * a == b
次に、以下を実行します。
zokrates compile -i root.zok
zokrates setup
zokrates compute-witness -a 337 113569
zokrates generate-proof
私が走るとき
zokrates verify
PASSED を返します。
ただし、悪い値を指定しcompute-witness
ても合格します。例えば:
zokrates compute-witness -a 1 113569
zokrates generate-proof
zokrates verify // PASSES
ここで何かを理解していないことは明らかですが、オンラインでさまざまなビットを数時間読んだ後でも、何がわからないのですか。