首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建R1CS的扁平化代码示例

创建R1CS的扁平化代码示例
EN

Cryptography用户
提问于 2020-04-16 16:43:23
回答 1查看 474关注 0票数 2

在准备在zkSnark中使用的逻辑时,首先需要将代码“扁平化”,以便将其编写为一系列约束。

我发现很难找到这样做的例子。例如,如何将以下逻辑转换为一系列约束:

代码语言:javascript
复制
if ((input_1 && input_2) || input_3) {
  result = input_1 + input_2
} else {
  result = input_3
}

您将如何将其转换为一个算术语句,然后再将其重写为一系列约束?或者,是否有这样的过程的例子,有人可以借鉴?

EN

回答 1

Cryptography用户

回答已采纳

发布于 2020-05-15 09:01:24

这类用于zkSNARKs系统的编程逻辑可以用佐克拉底开发成算术电路,这是一种在Ethereum上开发zkSNARKs的工具箱。它帮助您在分散的应用程序中使用可验证的计算,从高级语言中的程序规范到生成计算证明,到验证那些可靠的证明,这就是智能合同Langauge for Ethereum。请在下面找到为Zokrate编写的示例编程逻辑。

一旦编译了代码,就可以继续进行电路设置。它创建一个证明密钥和验证密钥。这些密钥来源于随机性,通常被称为“有毒废物”。一旦生成它,您就可以继续生成一个包含生成的验证键和一个公共函数来验证已编译程序的解决方案的实体契约。然后,您可以为编译的程序计算一个见证。见证是变量的有效分配,包括计算结果。

代码语言:javascript
复制
def main(field a, field b, field c) -> (field):
    field result = 0
    result = if a + b > c  then a + b else 1 fi
    result = if a + b < c  then c else 1 fi
  return result
票数 1
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/80017

复制
相关文章

相似问题

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