在计算的旧石器时代,计算机曾是机电的巨兽,每秒只可以执行几十次操作,但每年的成本却高达数百万美元。程序是通过细致的思考、在接线板中插入电线以及给卡片打孔来开发的。那个时候,bug就是是字面意义上的虫子,它们会啃咬电线,偶尔会导致短路,这可能会烧毁所有东西。
libsnark源代码,建议想深入零知识证明的小伙伴都读一读。Bellman库主要围绕Groth16算法,libsnark给出了SNARK相关算法的全貌,各种Relation,Language,Proof System。为了更好的生成
玩过zkSNARK的小伙伴都知道,R1CS是目前描述电路的一种语言。目前实现zkSNARK电路的框架有libsnark(C++),bellman (Rust),ZoKrates(DSL),Circom(js)等等。有的时候,需要将一个框架中生成的电路,导入其他框架。网络上研究了一下,发现两个有意思的项目。
Groth16算法是zkSNARK的典型算法,目前在ZCash,Filecoin,Coda等项目中使用。本文从计算量的角度详细分析Groth16计算。Groth16计算分成三个部分:Setup针对电路生成Pk/Vk(证明/验证密钥),Prove在给定witness/statement的情况下生成证明,Verify通过Vk验证证明是否正确。
ZK技术的历史发展脉络梳理
相信看完前一篇文章的朋友们会有一点很不解的地方:为什么我们可以如此简短的创建一个证明,并且证明很长的信息呢?在上课前我也有这同样的疑惑,甚至觉得这个是一个“黑科技”,不过相信大家看完这篇文章,就会知道如何去驾驭这个“黑科技”了。
AppliedZKP公开了zkEVM的设计思路。zkEVM采用数据总线(Bus Mapping)的思路,将存储和计算分开。在Bus Mapping抽取了正确的存储数据的基础上,State proof证明数据的一致性,EVM proof证明计算逻辑的正确性。
我们带来了 circom-batch-ECDSA,一个基于circom-ECDSA(由0xPARC 社区中其他人之前完成的工作)之上的概念验证实现,其灵感来自halo2-batch-ECDSA,它允许在单个 SNARK 中显著更快地验证一批 ECDSA 签名。
随着ZKP的应用越来越多,零知识证明的证明隐私代理也变的越来越重要。在一些场景下,本地证明的生成时间比较长,如何既保证数据的隐私同时实现快速的证明外包是一个很有意义的话题。在zkSummit7的这个演讲给出一个方案:在PIOP+多项式承诺的零知识证明方案中,可以结合MPC实现证明隐私代理。
介绍 SNARK 及证明媒介
本系列中,我们将分享两项崭新的工作:Lasso 和 Jolt,它们可以显著加速 web3 中应用的扩展和构造。它们共同代表了一种本质上全新的 SNARK 设计方法,可将已广泛部署的工具链的性能提升一个数量级或更多;提供更好、更方便的开发者体验;并使得审计变得更加容易。
在今天的文章中,我将剖析有史以来最强大但经常被误解的密码学工具之一:零知识证明 。此外,我将重点介绍未来实现的用例和建议,并展示为什么零知识证明是crypto未来的关键。
libsnark库代码层次非常清晰。libsnark也给出了SNARK相关算法的全貌,各种Relation,Language,Proof System。为了更好的生成R1CS电路,libsnark抽象出protoboard和gadget,方便开发者快速搭建...
零知识证明 - Coda SNARK挑战(Stage2)
前几天在魔笛社区分享了三个zk-SNARK技术应用的场景,可以让大家zk-SNARK(Groth16)技术和场景的结合有初步的认识。