本文详细介绍了Groth16零知识证明算法的原理、实现及其应用,包括可信设置、证明生成和验证的步骤,并讨论了防止伪造证明的方法以及算法中的安全问题。
本文详细介绍了 ZKSNARK 技术,尤其是如何进行信任设置、设计零知识电路(如乘法电路)以及使用 Groth16 和 PLONK 协议进行相关的 ZKSNARK 操作。内容涵盖了电路的编写、编译、验证,以及如何处理非二次约束的问题。最后,作者提供了使用节点js 和 snarkjs 进行证明生成和验证的详细步骤。
《The RareSkills Book of Zero Knowledge》是一本面向程序员的零知识证明教程,内容涵盖从基础数学到实际编码实现,旨在帮助程序员深入理解零知识证明,尤其是Groth16算法。
ICICLE-Snark 是一种快速的 Groth16 证明实现,适用于零知识证明的应用。文章详细论述了 Groth16 的原理、工作流程,以及 ICICLE 如何通过优化算法和缓存技术提升性能,达成记录-breaking 的速度提升,从而为区块链应用提供更高效的解决方案。
本文讨论了gnark库中的一种对Groth16证明方案的扩展及其存在的两个安全漏洞。第一个漏洞针对可靠性,允许恶意证明者在使用两个或以上承诺时证明错误的陈述;第二个漏洞破坏了零知识属性,使得攻击者可以从证明中恢复私有见证。文章详细解释了这些技术细节,并提供了修复方案和解决方案的演变过程。
本文详细介绍了零知识证明(ZKP)及其在区块链中的应用,特别是zkSNARK协议的原理和实现。文章通过代码示例和图示,讲解了证明者和验证者的角色,以及如何将程序转化为算术电路。
本文介绍了 Circom 编程语言,它用于创建 Rank 1 Constraint Systems (R1CS) 并填充 R1CS 的 witness 向量,主要是为了简化约束系统的设计和自动化 witness 的生成。文章还解释了 Circom 存在的意义,以及它如何帮助开发者更轻松地进行零知识证明相关的开发,最后说明了学习 Circom 的理由,并概述了资源结构,包括语法和约束设计。
本文提供了一份面向程序员的零知识证明(ZKP)教程,使用了 Circom 这种用于编写 ZKP 电路的领域特定语言。文档解释了 ZKP 的概念、约束条件的重要性以及设置、构建和验证 ZKP 电路的过程。它还涵盖了基本 ZKP、使用哈希函数和承诺实现数字签名方案,以及群签名方案。
bellman是Zcash团队用Rust语言开发的一个zk-SNARK软件库,实现了Groth16算法。
Groth16,是由Jens Groth在2016年提出的算法。GGPR13,是由Rosario Gennaro,Craig Gentry,Bryan Parno,Mariana Raykova在2013年提出的算法。
zkHack发布了新的Puzzle。虽然Puzzle用的比较老的Groth16算法,Puzzle的内容非常有趣,对理解零知识证明,多项式,线性相关等等知识非常有帮助。
本文介绍了对 rapidsnark 进行 GPU 加速的动机、背景和性能。通过将硬件加速集成到 rapidsnark 中,性能达到了 CPU 版本的约 4 倍。主要针对 NTT 和 MSM 计算进行优化,Orbiter Finance 团队开源了加速后的 rapidsnark 代码。
Groth16算法是zkSNARK的典型算法,目前在ZCash,Filecoin,Coda等项目中使用。本文从计算量的角度详细分析Groth16计算。Groth16计算分成三个部分:Setup针对电路生成Pk/Vk(证明/验证密钥),Prove在给定witness/statement的情况下生成证明,Verify通过Vk验证证明是否正确。
Matter Labs 获得了以太坊基金会的资助,用于开发基于零知识证明的 L2 扩展解决方案。他们的工作包括创建可扩展的 L2 平台、改进开发者工具以及推广零知识证明的应用。
利用Groth16计算证明之前,需要计算出H。目前,普遍采用的是FFT算法。