首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ZoKrates无效证人出示有效证据

ZoKrates无效证人出示有效证据
EN

Stack Overflow用户
提问于 2021-05-28 18:19:01
回答 1查看 119关注 0票数 0

我对ZoKrates和ZK的东西一般都是新手。我对证人的工作方式感到困惑。如果我计算出一个无效的证人,验证者仍然会验证这个证据是正确的。例如(基于ZoKrates "get started")。

鉴于这一方案:

代码语言:javascript
复制
def main(private field a, field b) -> bool:
  return a * a == b

然后运行以下命令:

代码语言:javascript
复制
zokrates compile -i root.zok
zokrates setup
zokrates compute-witness -a 337 113569
zokrates generate-proof

当我跑的时候

代码语言:javascript
复制
zokrates verify

它会返回过去。

但是,如果我向compute-witness提供了一个坏值,它仍然会通过。例如:

代码语言:javascript
复制
zokrates compute-witness -a 1 113569
zokrates generate-proof
zokrates verify // PASSES

我显然是在想念--在这里理解了一些东西,但在花了几个小时在线阅读不同的信息之后,我仍然不确定是什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-28 21:39:44

我已经意识到我错过了,这是相当简单的。本例中的证明不是验证a * a是否等于b,而是证明我已经运行了计算。

例如,下面将生成一个证据,证明我已经使用a = 337b = 113569运行了这个程序,并且返回值是true

代码语言:javascript
复制
zokrates compute-witness -a 337 113569
zokrates generate-proof

如果更改输入以使计算返回false;例如,a = 1b = 113569。下面将生成一个证据,证明我已经使用ab的这些值运行了这个程序,并且返回的是false

代码语言:javascript
复制
zokrates compute-witness -a 1 113569
zokrates generate-proof

感谢ZoKrates Gitter上的Darko帮助我理解这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67743830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档