【发布时间】:2021-05-28 18:19:01
【问题描述】:
总的来说,我是 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
我显然在这里误解了一些东西,但是在花了几个小时在线阅读不同的内容之后,我仍然不确定是什么。
【问题讨论】: