在 BSV 上基于 Zokrates 的 zkSNARKs 应用开发流程简介

Posted sCrypt 智能合约

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在 BSV 上基于 Zokrates 的 zkSNARKs 应用开发流程简介相关的知识,希望对你有一定的参考价值。

我们展示了如何使用 zk-SNARKs 来开发比特币的信息不完整的游戏

众所周知,ZoKrates 是 zkSNARKs 的工具箱。它可以帮助您在 DApp 中使用可验证的计算,从规范的基于高级语言的程序电路到生成计算证明,再到验证这些证明。

ZoKrates Fork 库 中,我们扩展了 ZoKrates 的功能。使其支持自动生成验证 zk-SNARKs 证明的sCrypt智能合约。

安装

下载并使用我们发布的二进制包:

https://github.com/sCrypt-Inc/zokrates/releases/tag/v0.8.1

开发流程

开发流程基本与原生的 ZoKrates 相同。在验证证明阶段会有不同。

  1. 编写电路程序,创建文本文件 root.zok 并实现一下的程序。在这个例子中,我们将证明知道数字 b 的平方根为 a
def main(private field a, field b) 
    assert(a * a == b);
    return;

  1. 编译电路
zokrates compile -i root.zok
  1. 执行设置
zokrates setup
  1. 计算见证人
zokrates compute-witness -a 337 113569
  1. 生成证明
zokrates generate-proof
  1. 导出验证者智能合约 verifier.scrypt, 同时会提供一个 verifier.js 文件
zokrates export-verifier-scrypt

可以运行以下命令在本地验证:

zokrates verify
  1. 部署验证者合约

可以利用 IDE 部署以下的验证者合约 ZKSNARKTest.scrypt 至测试网:

import "verifier.scrypt";

contract ZKSNARKTest 
    public function testVerify(int[ZKSNARK.N] inputs, Proof proof) 
        require(ZKSNARK.verify(inputs, proof));
    

  1. 调用验证者合约

接下来,您需要从 proof.json 中复制粘贴调用参数至合约的调用面板,然后点击 Call unlock()

如果一切正常,则可以看到验证交易也发送成功。

以上是关于在 BSV 上基于 Zokrates 的 zkSNARKs 应用开发流程简介的主要内容,如果未能解决你的问题,请参考以下文章

使用 Zokrates 在 BSV 上创建您的第一个 zkSNARK 证明

BSV 上基于智能合约的众筹

零知识证明实战在线旅游业ZoKrates

ZoKrates实战在线旅游业零知识证明

Babbage项目在BSV区块链上创建一个负责任的互联网

Babbage项目在BSV区块链上创建一个负责任的互联网