宇宙链 宇宙链
Ctrl+D收藏宇宙链
首页 > 币赢 > 正文

零知识证明——基于libsnark的电路构造及证明示例

作者:

时间:1900/1/1 0:00:00

libsnark库代码层次非常清晰。libsnark也给出了SNARK相关算法的全貌,各种Relation,Language,Proof System。为了更好的生成R1CS电路,libsnark抽象出protoboard和gadget,方便开发者快速搭建电路。在阅读该示例代码前,请仔细阅读libsnark的源代码分析:零知识证明 - libsnark源代码分析

唯一有点遗憾的,libsnark没有给个完整的电路构造实例,入门者想搭建自己的电路,刚开始有点摸不着头脑。

为了方便入门者编写自己的电路,同事写了个基于libsnark构造电路,并生成并验证电路的实例:

https://github.com/StarLI-Trapdoor/libsnark_sample

MolochDAO推出基于零知识证明的“隐私池”加密混合服务:3月7日消息,为以太坊基础设施项目提供资金支持的去中心化自治组织MolochDAO推出基于零知识证明的“隐私池”加密混合服务,旨在保护链上交易时的隐私,同时还允许用户证明他们遵守当地法规。

据悉,MolochDAO的隐私池(Privacy Pools)将利用零知识证明这一隐私保护技术,使用户能够证明他们正在将受制裁的钱包列入黑名单,同时无需透露他们是谁,也无需披露全部交易历史。(The Defiant)[2023/3/7 12:46:33]

入门者,可以基于这个示例开发自己的电路。选择默克尔树作为电路的示例,因为在零知识证明的应用中,大量的使用默克尔树数据结构。

该示例构造了一条merkle路径的验证电路,生成并验证证明。merkle树的深度为3,并且merkle树的计算采用sha256散列函数。代码结构比较清晰,merkle目录中的main.cpp是主函数。circuit目录下的merklecircuit.h是电路的实现。整个项目用cmake进行编译。

零知识证明技术开发公司StarkWare推出第一个公开版本Cairo 1.0:1月6日消息,零知识证明技术开发公司 StarkWare 宣布推出第一个公开版本的 Cairo 1.0,Cairo 于 2020 年作为图灵完备的编程语言首次推出,用于高效编写 STARK 可证明的程序。Cairo 1.0 中最重要的变化之一是语法,新版本的 Cairo 允许编写更安全的代码。Cairo 1.0 还引入了 Sierra,这是一种新的中间表示,可确保每次 Cairo 运行都可以得到证明。StarkWare 表示,预计在接下来的几周内,提供与旧版本相同的 Cairo 1.0 功能,对 StarkNet 合约的支持将在即将到来的 StarkNet Alpha 版本中加入。[2023/1/6 10:24:18]

电路名为MerkleCircuit,主要依赖两个gadget:merkle_authentication_path_variable和merkle_tree_check_read_gadget。merkle_authentication_path_variable提供了merkle树的一条路径。merkle_tree_check_read_gadget检查给定一个叶子节点,是否能计算出正确的root。

多链Web3生态Hacker资助计划Dora Grant DAO首轮零知识投票环节结束:11月14日消息,社区驱动的多链Web3生态开源极客资助计划Dora Grant DAO已于北京时间11月13日23:59在开发者激励平台DoraHacks.io关闭首轮投票通道。投票最终结果和零知识证明文件将于14日晚八时公布。首期20万美金Grant奖金将会根据投票结果的排序进行发放。

Dora Grant DAO计划旨在持续支持在以下三个领域的多链Web3开源极客团队:多链Web3核心基础设施和工具,加密原生应用,加密-前沿科技交叉领域。[2022/11/14 13:01:29]

实现一个电路,主要实现两个接口函数:

generate_r1cs_constraints - 生成R1CS,该电路比较简单,只要让依赖的两个gadget,生成R1CS即可。

加拿大央行研究人员:零知识证明目前不能用于CBDC系统:金色财经报道,加拿大央行的研究人员在一份新分析报告中表示,零知识证明和类似的面向区块链网络隐私的加密方法“尚处于起步阶段”,还没有准备好在中央银行数字货币(CBDC)系统中广泛部署。[2020/6/30]

generate_r1cs_witness - 给所有的变量进行赋值。该电路,需要赋值的变量有root,leaf(叶子节点),和叶子节点配套的默克尔路径,以及默克尔路径对应的地址信息(也就是每一层的节点的位置,左边还是右边)。

整个电路最复杂的就是电路的构造函数,申请变量,创建gadget。其中重点讲一讲,set_input_sizes函数。libsnark的框架中,使用简单的区分public和private变量的模型。通过set_input_sizes函数,设置前几个变量为public变量。

动态 | 0x 协议推出基于零知识证明技术的 StarkDEX 测试版,每秒可处理逾 550 笔交易:去中心化交易协议 0x 宣布推出去中心化交易基础设施 StarkDEX,并提供了 Alpha 测试版供模拟交易。StarkDEX 由 0x 与零知识证明技术开发公司 StarkWare 合作开发,目的是使用 STARKs 技术突破非监管交易的无形限制,使加密货币交易所为用户提供大规模而无对手风险的交易。0x 表示目前 StarkDEX 每区块最多可批量处理 8000 笔交易,每秒可处理逾 550 笔交易,手续费成本则降低 200 倍。[2019/6/4]

pb.set_input_sizes(root_digest->digest_size);也就是说,该电路的公开变量为root的bit个数。

确定了电路的实现,看看main函数,如何生成和验证证明。

在main函数中定义了merkle树计算需要的一些类型:

FieldT默认是bn256椭圆曲线的的Fr,默克尔树计算采用是sha256算法。

3.1 setup

实现了generate_read_keypair函数,生成pk/vk。仔细看一下generate_read_keypair函数,逻辑简单清晰:构造MerkleCircuit,在生成R1CS后,调用r1cs_gg_ppzksnark_generator生成pk/vk。

pk存放在merkle_pk.raw文件中,vk存放在merkle_vk.raw中。

3.2 prove

prove逻辑,首先从输入参数构造一个完整的merkle树,并根据输入选定了默克尔路径。通过generate_read_proof函数生成证明。该函数逻辑也比较清晰:

构造MerkleCircuit,在生成R1CS后,设置各个变量的值。接着通过r1cs_gg_ppzksnark_prover生成证明。

3.3 verify

在获知vk,证明以及公开信息(root)的基础上,调用r1cs_gg_ppzksnark_verifier_strong_IC的接口完成验证。这也就是verify_read_proof函数的逻辑。

在编译之前,同步该项目依赖的libsnark库:

git submodule update --init --recursive4.1 编译

mkdir build; cd build; cmake ..编译完成,merkle目录下会生成merkle的可执行文件。

4.2 可信设置(trusted setup)

./merkle setup4.3 生成证明

./merkle prove [data1] [data2] [data3] [data4] [data5] [data6] [data7] [data8] [index]prove命令,需要提供原始的3层merkle树的8个叶子节点,并指定需要证明的第几个叶子节点对应的路径(index指明)。

4.4 验证

./merkle verify [root]其中,root信息是在prove中生成过程中打印出来的root信息(也是公开信息)。如果验证通过,就说明存在一条能生成root的merkle路径,虽然没有公开路径的具体信息。

总结:

libsnark库代码层次非常清晰,并抽象出protoboard和gadget,方便开发者快速搭建电路。本文给出了一个基于libsnark库开发的完整电路示例。示例实现了3层默克尔树的一条默克尔路径的验证。其中默克尔树采用sha256的散列函数。

标签:ARKMERERKBSPGARK币MERLTERK币BSP价格

币赢热门资讯
情人节效应?历史数据显示比特币今天普遍上涨

过去曾有分析,一周中有特定的几天为投资者提供异常回报的机会。例如分析从2019年初到2020年1月13日的比特币收益率,数据显示,一周中星期五平均回报率最高,为1.1%.

1900/1/1 0:00:00
美财政部长:FinCEN将推出“重磅”加密法规

作者:Nikhilesh De   |   编译者:Maya姆努钦在参议院财政委员会的一次听证会上表示,美国金融犯罪监管机构FinCEN正计划推出针对加密货币的“新的重磅要求”.

1900/1/1 0:00:00
重要里程碑达成:Polkadot与Chainlink使用Substrate进行技术整合

Polkadot在平行链开发的关键步骤中加入了领先市场的去中心化预言机网络。 Chainlink已经完成了一个基于Substrate的区块链的初步整合过程,这标志着又一个重要的里程碑.

1900/1/1 0:00:00
建行首次入围福布斯全球区块链50强 已运营9个区块链项目

近日,福布斯官网公布全球区块链50强榜单,涉及中国企业有5家。具体来看,中国互联网科技巨头蚂蚁金服、百度、腾讯、富士康以及中国建设银行等均榜上有名,“金融 1号院”注意到,除蚂蚁金服及富士康非首次上榜外,中国建设银行、腾讯、百度均首次.

1900/1/1 0:00:00
金色硬核 | 尽管很有用 但是比特币拯救不了高通胀国家

金色财经近期推出金色硬核(Hardcore)栏目,为读者提供热门项目介绍或者深度解读。近日,因为担忧全球经济受到新冠疫情的冲击,比特币减半行情受到狙击掉头下跌至8500美元附近.

1900/1/1 0:00:00
金色观察 | 一招“攻击”15秒内获利超36万美元 多个DeFi明星项目卷入

也许这个世界终归是属于聪明人的。近日DeFi世界就遭到了聪明人的“攻击”(exploit)。 2月16日,DeFi项目bZx被某个人或者团队利用规则上的漏洞,在DeFi项目间腾挪套利,15秒内(一个以太坊区块时间)获得36万.

1900/1/1 0:00:00