木星链 木星链
Ctrl+D收藏木星链

MER:零知识证明——基于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

Dora Grant DAO第二轮零知识投票环节结束:2月17日消息,Dora Grant DAO已于北京时间11月15日23:59在开发者激励平台DoraHacks.io关闭第二轮零知识投票通道。投票最终结果和对投票结果的零知识证明将于18日公布,第二期100,000美金资助的分配将由社区投票和入围项目尽职调查结果决定。

Dora Grant DAO计划旨在持续支持在以下三个领域的多链Web3开源极客团队: Dora Factory / DoraHacks生态延伸基础设施,多链Web3核心基础设施和工具, 加密-前沿科技交叉领域。[2023/2/17 12:12:38]

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

多链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]

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

Polygon联合创始人:承诺为零知识技术投资10亿美元:12月25日消息,Polygon联合创始人Sandeep Nailwal在接受采访时表示,根据PolygonScan浏览器,Polygon平均出块时间约为2.3秒,以太坊平均出块时间则是15秒。然后Gas费大概是0.001 MATIC。

关于投资零知识技术的目标,Nailwal回答称,“我们承诺为零知识技术投资10亿美元,我们认为这是区块链扩展的圣杯。隐私是第二个因素——这是每个人都会感到困惑的一个因素。因此,您可以使用ZK在以太坊上验证计算,而无需发回全部数据。相反,您只需证明在第二层上所有计算都是正确的,并将一个简洁的证明放回到以太坊。”

Nailwal还表示,“即使ETH 2.0升级已经实现,也不会提供足够的可扩展性。明年,PoS升级将保持一切不变;就像以太坊现在每秒有13笔交易(TPS),在PoS之后也许会达到20 TPS,但不会超过这个数字。所以这不会增加任何可扩展性。假设在三到五年内,即使实现分片,我们预测会有64个分片,每个分片每秒处理20笔交易,但总的来说还是每秒1280笔交易,对吗?这对整个世界来说还是不够的。”(Cointelegraph)[2021/12/25 8:03:07]

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

门罗币完成零知识证明系统Bulletproofs+代码审计:2月15日,门罗币官方发推称,完成零知识证明系统Bulletproofs+代码审计。此前消息,零知识证明系统Bulletproofs+代码获准可在门罗币协议中使用。随后官方计划筹集90.3 XMR以进行零知识证明系统Bulletproofs+审计。[2021/2/15 19:49:05]

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

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

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

Celsius将利用Horizen的零知识证明创建储备金证明系统:金色财经报道,Celsius正在与Horizen合作,以使用Horizen的零知识证明创建储备金证明系统。储备金证明试点将获取Celsius网站上显示的信息,并从Horizen侧链(而非Celsius内部服务器)获取信息。[2020/10/31 11:17:38]

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

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的散列函数。

标签:MERERKNBSBSPNumeraireCYBERKONGZnbs币最新消息BSPT

以太坊交易所热门资讯
NBS:指控XRP是未注册证券的诉讼胜诉了吗?

美国联邦地区法院应允了一项诉讼,该诉讼指控瑞波的XRP加密货币资产是一种未注册的证券。2月26日提交的法庭文件显示,加州北部地区法院的法官Phyllis Hamilton裁定仅部分同意瑞波驳回诉.

1900/1/1 0:00:00
区块链:金色前哨丨波卡将通过 Second State引入基于WebAssembly 的以太坊2.0虚拟机

金色财经报道,2020年2月末,区块链基础软件公司Second State获得了Web3基金会的资金支持,双方合作将把以太坊的WebAssembly虚拟机(Ewasm)引入波卡生态.

1900/1/1 0:00:00
TET:Tether稳定币即将登陆BCH区块链

Bitcoin.com首席执行官Roger Ver表示,全球市值最高的稳定币Tether(USDT)即将加入比特币现金(BCH)区块链网络.

1900/1/1 0:00:00
区块链:第10亿笔以太坊交易何时会发生?

(奥维的房子,梵高)前言:以太坊在2019年的交易数为2.428亿次。什么时候它会突破年度10亿笔交易?三年时间能不能达成这一目标?核心的关键在于供给侧的开发者,包括ETH2.0的发展,围绕ET.

1900/1/1 0:00:00
DNA:开年第一投 元界DNA获Nova Club投资机构联盟数十家机构联合加持

据元界官方及金色财经等媒体消息,元界基金会宣布元界DNA于近日获得了全球知名区块链投资机构生态联盟Nova Club的战略投资.

1900/1/1 0:00:00
比特币:金色观察 | 比特币减半倒计时:围观4种减半时间计算方案

时光如梭,距离比特币第三次产量减半的时间又近了一点。可以说这将是非常重要的一次减半,因为在这一次减半之后,比特币的通胀率将会从现在的3.8%降到1.8%,低于国际上货币通货膨胀的水平.

1900/1/1 0:00:00