![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
零知识证明
文章平均质量分 90
StarLi_2020
这个作者很懒,什么都没留下…
展开
-
Filecoin - Precommit2计算介绍
Sector计算的部分分为Precommit1和Precommit2两部分。两部分合在一起,称为SDR算法。整个SDR算法的相关计算在之前的文章介绍过。本文着重介绍一下Precommit2的计算逻辑。Precommit2计算分为两部分:1/ Column Hash计算以及Merkle树构造 2/ Replica计算以及Merkle树的构造。相关的逻辑请查看rust-fil-proofs/storage-proofs/porep/src/stacked/vanilla/proof.rs中的transform原创 2021-05-16 16:28:28 · 842 阅读 · 0 评论 -
Filecoin - Trapdoor团队发现PoREP漏洞
Trapdoor团队发现PoREP电路V25版本存在严重漏洞。利用该漏洞,SDR(Precommit1)的计算可以直接省略。所有Sector的Replica的数据也只要存储一份。Trapdoor团队在第一时间和官方沟通后,官方已经快速提交补丁:PoREP电路也从V25版本,升级到V26。本文仔细讲讲该严重漏洞的攻击原理。众所周知,Sector数据会经过Labeling, Column Hash以及Encoding计算生成最后的Replica数据(Precommit1和Precommit2阶段)。整个计原创 2021-05-16 16:12:43 · 361 阅读 · 0 评论 -
Filecoin - 深入理解WindowPoSt
Lotus的PoSt算法,分成两个场景:Winning PoSt和Window PoSt。Winning PoSt是在出块时,对已经提交的Sector数据进行证明。Window PoSt,每隔一段时间对提交的Sector的数据进行证明,证明Sector数据依然正确保存。Winning PoSt的逻辑,可以查看之前文章:https://blog.csdn.net/StarLi2020/article/details/108816235?spm=1001.2014.3001.5502本文详细介绍Window原创 2021-04-18 10:37:23 · 2877 阅读 · 0 评论 -
零知识证明 - 深入理解ZoKrates
2018年 Jacob Eberhardt和Stefan Tai两位德国柏林工业大学博士生,提出了链下计算/链上验证的处理框架,并提供了在以太坊上的整个框架的工具链。链下计算/链上验证的思想很早就有,但是能提供比较完善的工具链的实属难得。目前ZoKrates使用zk-SNARK算法实现零知识证明。https://www.ise.tu-berlin.de/fileadmin/fg308/publications/2018/2018_eberhardt_ZoKrates.pdf本文介绍ZoKrates的思想原创 2020-07-25 12:05:33 · 1328 阅读 · 0 评论 -
零知识证明 - ethsnarks源代码导读
ethsnarks在libsnark的基础上,实现了以太坊上与zkSNARK相关的智能合约和电路。ethsnarks本身也是libsnark应用很好的学习示例。ethsnarks的源代码地址:https://github.com/HarryR/ethsnarks.git本文中使用的ethsnarks源代码的最后一个commit如下:commit 9adc64355adb9154ba5042c0fadf84c438b8a08aAuthor: Wanseob Lim <email@wanseob原创 2020-07-15 00:09:08 · 1065 阅读 · 0 评论 -
零知识证明 - bellman源码分析
bellman是Zcash团队用Rust语言开发的一个zk-SNARK软件库,实现了Groth16算法。项目地址:https://github.com/zcash/librustzcash/tree/master/bellman1. 总体流程总体流程大致可以分为以下几个步骤:1.将问题多项式拍平(flatten),构建对应的电路(Circuit)。这一步是由上层应用程序配置的。2.根据电路生成R1CS(Rank 1 Constraint System)3.将R1CS转化为QAP(Quadrat原创 2020-07-15 00:03:43 · 2104 阅读 · 3 评论 -
零知识证明 - libsnark源代码分析
libsnark源代码,建议想深入零知识证明的小伙伴都读一读。Bellman库主要围绕Groth16算法,libsnark给出了SNARK相关算法的全貌,各种Relation,Language,Proof System。为了更好的生成R1CS电路,libsnark抽象出protoboard和gadget,方便开发者快速搭建电路。本文中使用的libsnark源代码的最后一个commit如下:commit 477c9dfd07b280e42369f82f89c08416319e24aeAuthor: Ma原创 2020-05-31 17:48:29 · 2426 阅读 · 3 评论 -
零知识证明 - zkSNARK的Nullifier攻击
早上很多朋友@我,安比实验室公众号发表了一篇文章zkSNARK的“输入假名”的攻击。迅速看了看,很赞。这个攻击原理其实比较简单,但是,不深入理解zkSNARK以及使用场景的朋友确实很难发现和理解。本文讲讲我对这个攻击的分析和理解。源于三天前这种攻击方式一直潜伏着,没被发现。直到三天前:俄罗斯开发者poma,在项目semaphore提交了一个issue,公开了这个攻击方法。poma同时也在kovan测试网络验证了这种攻击方式。先从semaphore项目的代码开始:话说,semaphore是个很有原创 2020-05-23 22:40:51 · 609 阅读 · 0 评论 -
零知识证明 - Groth16计算详解
Groth16算法是zkSNARK的典型算法,目前在ZCash,Filecoin,Coda等项目中使用。本文从计算量的角度详细分析Groth16计算。Groth16计算分成三个部分:Setup针对电路生成Pk/Vk(证明/验证密钥),Prove针对电路,在给定witness/statement的情况下生成证明,Verify通过Vk验证证明是否正确。所有的术语和数学符号和Groth16论文保持一致(On the Size of Pairing-based Non-interactive Arguments,原创 2020-05-23 22:29:31 · 5223 阅读 · 0 评论 -
零知识证明 - Groth16算法介绍
看zk-SNARK的文章或者资料的时候,经常会碰到一些算法名称,比如Groth16,GGPR13等等。这些名称是由算法提出的作者名称或者名称首字母以及相应的年份组成。Groth16,是由Jens Groth在2016年提出的算法。GGPR13,是由Rosario Gennaro,Craig Gentry,Bryan Parno,Mariana Raykova在2013年提出的算法。零知识证明(z...原创 2020-04-19 11:31:06 · 2768 阅读 · 2 评论 -
零知识证明 - 基于多项式构造零知识证明
理解为什么以及如何基于多项式构造零知识证明,这篇文章讲的比较清楚。虽然文章只讲到了皮诺曹协议,但是足够理解基于多项式构造零知识证明的本质。想深入零知识证明的小伙伴都建议看看。http://petkus.info/papers/WhyAndHowZkSnarkWorks.pdf以下是我对这篇文章的理解和总结。原文由浅入深地从一个个简单版本,慢慢推导出实用的证明协议。协议0 - 直观版本随机抽...原创 2020-04-03 21:52:43 · 1552 阅读 · 0 评论 -
零知识证明 - 从QSP到QAP
前一段时间,介绍了零知识证明的入门知识,通过QSP问题证明来验证另外一个NP问题的解。最近在看QAP问题相关的文章和资料,这篇文章分享一下QAP问题的理解。0 背景介绍QSP/QAP问题的思想都是出自2012年一篇论文:Quadratic Span Programs and Succinct NIZKs without PCPs。论文的下载地址:https://eprint.iacr.org/...原创 2020-03-24 20:41:00 · 2843 阅读 · 0 评论 -
零知识证明 - zkSNARK入门
网络上讲解零知识证明的文章就不多,这些文章要不太浅显,要不太深入,很少有能给入门者整体框架上的认识。比如,阿里巴巴零知识证明就是一个非常好的通俗理解零知识证明的例子:阿里巴巴被强盗抓住,为了保命,他需要向强盗证明自己拥有打开石门的密码,同时又不能把密码告诉强盗。他想出一个解决办法,先让强盗离开自己一箭之地,距离足够远让强盗无法听到口令,足够近让阿里巴巴无法在强盗的弓箭下逃生。阿里巴巴就在这个距...原创 2020-03-21 19:59:37 · 1584 阅读 · 0 评论 -
零知识证明 - 椭圆曲线基础
对椭圆曲线的学习,个人推荐如下的链接,没有太多的术语,解释的比较清楚。https://andrea.corbellini.name/2015/05/17/elliptic-curve-cryptography-a-gentle-introduction/https://andrea.corbellini.name/2015/05/23/elliptic-curve-cryptography-f...原创 2020-03-11 17:26:12 · 2396 阅读 · 2 评论