企业培训资讯_企业培训干货

当前位置:首页 > 客户案例

亚博APp买球|电路及证明示例(libsnark)

发布时间:2021-01-26    来源:亚博APp买球首选31276

本文摘要:libsnark库代码层次十分明晰。

libsnark库代码层次十分明晰。libsnark也得出了SNARK涉及算法的全貌,各种Relation,Language,Proof System。为了更佳的分解R1CS电路,libsnark抽象化出有protoboard和gadget,便利开发者较慢搭起电路。在读者该示例代码前,请求仔细阅读libsnark的源代码分析:零科学知识证明 - libsnark源代码分析唯一有点失望的,libsnark没给个原始的电路结构实例,入门者想要搭起自己的电路,刚开始有点摸不着头脑。

亚博APp买球首选

为了便利入门者撰写自己的电路,同事写出了个基于libsnark结构电路,并分解并检验电路的实例:https://github.com/StarLI-Trapdoor/libsnark_sample入门者,可以基于这个示例研发自己的电路。自由选择默克尔树根作为电路的示例,因为在零科学知识证明的应用于中,大量的用于默克尔树根数据结构。1 代码结构该示例结构了一条merkle路径的检验电路,分解并检验证明。

merkle树根的深度为3,并且merkle树根的计算出来使用sha256散列函数。代码结构较为明晰,merkle目录中的main.cpp是主函数。circuit目录下的merklecircuit.h是电路的构建。整个项目用cmake展开编译器。

2 电路构建电路取名为MerkleCircuit,主要倚赖两个gadget:merkle_authentication_path_variable和merkle_tree_check_read_gadget。merkle_authentication_path_variable获取了merkle树根的一条路径。merkle_tree_check_read_gadget检查等价一个叶子节点,网卓新闻网,否能计算出来出有准确的root。

构建一个电路,主要构建两个接口函数:generate_r1cs_constraints - 分解R1CS,该电路比较简单,只要让倚赖的两个gadget,分解R1CS才可。generate_r1cs_witness - 给所有的变量展开赋值。该电路,必须赋值的变量有root,leaf(叶子节点),和叶子节点设施的默克尔路径,以及默克尔路径对应的地址信息(也就是每一层的节点的方位,左边还是右边)。

整个电路最简单的就是电路的构造函数,申请人变量,创立gadget。其中重点谈一谈,set_input_sizes函数。libsnark的框架中,用于非常简单的区分public和private变量的模型。

通过set_input_sizes函数,设置前几个变量为public变量。pb.set_input_sizes(root_digest-digest_size);也就是说,该电路的公开发表变量为root的bit个数。

3 分解和检验证明确认了电路的构建,想到main函数,如何分解和检验证明。在main函数中定义了merkle树计算出来必须的一些类型:typedef libff::default_ec_pp ppzksnark_ppT;typedef libff::Frppzksnark_ppT FieldT;typedef sha256_two_to_one_hash_gadgetFieldT HashT;FieldT配置文件是bn256椭圆曲线的的Fr,默克尔树根计算出来使用是sha256算法。

亚博APp买球首选

3.1 setup构建了generate_read_keypair函数,分解pk/vk。细心看一下generate_read_keypair函数,逻辑非常简单明晰:结构MerkleCircuit,在分解R1CS后,调用r1cs_gg_ppzksnark_generator分解pk/vk。protoboardFieldT pb; sample::MerkleCircuitFieldT, HashT mc(pb, tree_depth); mc.generate_r1cs_constraints(); r1cs_constraint_systemFieldT cs = pb.get_constraint_system(); return r1cs_gg_ppzksnark_generatorppzksnark_ppT(cs);pk存放在merkle_pk.raw文件中,vk存放在merkle_vk.raw中。

3.2 proveprove逻辑,首先从输出参数结构一个原始的merkle树,并根据输出指定了默克尔路径。通过generate_read_proof函数分解证明。该函数逻辑也较为明晰: protoboardFieldT pb; sample::MerkleCircuitFieldT, HashT mc(pb, tree_depth); mc.generate_r1cs_constraints(); mc.generate_r1cs_witness(pb, leaf, root, path, address, address_bits); return r1cs_gg_ppzksnark_proverppzksnark_ppT(proving_key, pb.primary_input(), pb.auxiliary_input());结构MerkleCircuit,在分解R1CS后,设置各个变量的值。

接着通过r1cs_gg_ppzksnark_prover分解证明。3.3 verify在得知vk,证明以及公开发表信息(root)的基础上,调用r1cs_gg_ppzksnark_verifier_strong_IC的模块已完成检验。

亚博APp买球

这也就是verify_read_proof函数的逻辑。4 编译器和运营在编译器之前,实时该项目倚赖的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的散列函数。


本文关键词:亚博APp买球,亚博APp买球首选

本文来源:亚博APp买球-www.0470ktv.com

分享到:
相关推荐MORE+
04-16 光荣特库摩公开发表历史仿真大作三国志14(Romance O-亚博APp买球首选

本文摘要:光荣特库摩公开发表了历史仿真大作《三国志14(RomanceOfThreeKingdom14)》,并公布了首个宣传视频。《三国志14》使用一张游戏地图展现出三国时代的中华大地,将内政、战斗、

04-16 长文论证:新英雄是诺克三巨头之一杜克卡奥_亚博APp买球

本文摘要:在几天之前,拳头放了2020年的英雄计划,其中提及了一个很关键的信息——今年的所有新的英雄都将与联盟宇宙的背景故事前进与发展息息相关。在几天之前,拳头放了2020年的英雄计划,其中提及了一个

04-16 孤影SOLO遇到的最狂玩家,主页里全是国服!直言你挑一个,弹幕炸了-亚博APp买球

本文摘要:众所周知,孤影每周都会举行一个SOLO活动,而且现在参与该活动的玩家也更加多,重点是质量也更加低了,都是享有国服称号的玩家来挑战,所以看点十足。众所周知,孤影每周都会举行一个SOLO活动,而

04-16 《海贼无双4》在线合作中文版预告 首批特典送汉考克王元姬服装:亚博APp买球首选

本文摘要:台湾万代近日公布了《海贼无双4》在线合作模式中文版宣传片,宣告本不作反对4人合作游玩,并收录于包括“极大头目战”在内的多种线上专用任务。本不作中将收录于多种线上专用任务,玩家可和伙伴一起享用

股市楼市适度降温对经济利大于弊 3月14日生猪价格行情:深度下跌,或再次跌至新低|亚博APp买球首选
热门文章
苹果为什么要知道MacBookPro的屏幕开合角度?iFixit:定责【亚博APp买球】
亚博APp买球首选-西安航天硬科技支撑我国自主研发的95%卫星数传系统的有效载荷
磁共振成像设备这群人的研发转化快、准、狠-亚博APp买球
亚博APp买球首选:如何编写智能合约,优化以太坊gas的消耗
专访OPPO Find X2产品经理:解决消费者痛点 屏幕全行业领先
2020年展望:思考区块链和加密货币
卢伟冰调研网友最喜欢快递:顺丰、京东远超EMS三通一达
亚博APp买球|中兴AXON 10s Pro即将发售:号称“全球最轻薄865旗舰”
如何使用Python为区块链编写智能合约|亚博APp买球
人工智能发展需要真正的开源开放,OpenI启智平台肩负使命正式启航
亚博APp买球首选-西方网络战将转守为攻 West eyes Dr Strangelove tactics in cyber wars
亚博APp买球|黑鲨3预告:2K OLED屏+120Hz刷新率 线上发布
早讯丨700家P2P存管名单公布,再增两家;张勇谈阿里组织架构调整-亚博APp买球
亚博APp买球首选:科学家利用激光驱动冲击压缩技术创造超离子水冰
“平安高校”建设中的需求分析_亚博APp买球首选
客户案例
×