欧易下载

欧易交易所
欧易交易所APP官网下载

欧易交易所(OKX)是最老牌的比特、莱特、以太交易所,欧易交易平台支持OTC法币交易,支持微信、支付宝和银行卡转账,安全方便快捷,欧易下载官方APP链接。

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

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

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

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

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

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

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

数字艺术家Pak最新作品集Terminus竞拍结束,成交价创纪录达138.5ETH:区块链稀有艺术品交易市场MakersPlace宣布传奇数字艺术家Pak的最新作品集Terminus拍卖结束,此次拍卖由数字艺术品收藏者EricYoung和WhaleShark经过5个多小时的竞拍争夺,最终达到创纪录的成交价138.5ETH,约合5.3万美元。该作品集共包括5件作品,具有鲜明的形式、纹理和大胆的单色性。Pak是加密艺术领域中有名的数字艺术家之一,也是国际知名的Undream工作室和AI策展人Archillect的创始人和首席设计师,从事数字艺术创作已经超过25年,曾与数百个大品牌和工作室合作。自从今年2月其第一件作品CloudMonumentDark出售以来,Pak已通过数字作品赚取了30万美元。其中,最有价值的一件艺术品名为Alpha,在今年7月以55.555ETH的价格卖给了加密艺术博物馆,按当时价格约合15,370美元,现在已经超过21,000美元。[2020/9/21]

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

BTR(比特白银)开盘涨幅均超200%:据BiKi、ZT、雷顿LOEX、瓦特WBF、币赢Coinw、XT、ZBG、ZG、热币、CEO Global 行情数据显示。BTR开盘价格0.7U,目前均价稳定在1.4USDT。开盘涨幅均超200%,其中ZT开盘涨幅达1185.71%,雷顿开盘涨幅达1328.57%,BiKi开盘涨幅达254.19%。

 比特白银BTR流通平台为All,工作量证明机制采用SHA256算法、POW激励机制,并在技术上做了改良。具有匿名性和去中心化特性,以对标陆地上白银为目标理念,属于开源公链产品。[2020/8/27]

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

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个数。

确定了电路的实现,看看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的散列函数。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

欧易交易所

ICP揭开加密货币世界「Coinbase黑帮」的秘密

该文为「Proof of Value」区块链数据解读系列文章之一,用数据科学解读区块链。本文由「X-Order × 链闻」 联合呈现。 X-Order 是一家关注加密货币投资、开放金融和数据科学等领域的创新型研究机构,曾和链闻联合推出「Proof of Value 区块链风投基金排行榜」。

比特币交易所北京首张区块链电子普通发票在汉威国际广场停车场开出

3月3日,北京首张区块链电子普通发票在汉威国际广场停车场开出,意味着北京税收服务和管理踏入区块链时代。即日起,停车场可以实现收费、开票自动一体化,消费者扫码缴费后,无需等候索要发票,可以在线开具、保存区块链电子普通发票,无需保存纸质发票,用票体验更优。纳税人也无需再为收费开票而耗费人力,无需为购票而往返税务局。

ETH哪些数据是比特币反弹的信号?

机构比特币期货数据: 从机构的比特币筹码分布柱形图可以观察到,2020年以前, 机构筹码量能最高的区域在$6405附近,  形成长期重要的支撑位,去年的11月份就是在这个支撑位成了“头肩底”形态,随后触底反弹。

币安app下载金色观察 | 美联储降息在即 比特币如何押注?

疫情在全球范围内持续蔓延,投资者对全球经济衰退担忧加剧。 海外市场遭遇金融危机以来至暗一周。 上周,道指下跌超过12%,创下2008年以来最大单周百分比跌幅。以点数计算,道指下跌超过3500点,这是有史以来最大的单周点数跌幅。该指数上周收盘也出现回调,较2月12日创下的盘中纪录高点下跌14.1%。

[0:0ms0-0:812ms