RareSkills 的 Zero Knowledge Proofs 系列文章之《P vs NP 及其在零知识证明中的应用》。
文章介绍了在零知识证明中使用的算术电路(Arithmetic Circuits)与布尔电路(Boolean Circuits)的对比,并展示了如何将算术电路用于求解NP问题。文章详细解释了算术电路的原理、实现方法,并提供了多个具体示例,如三色图问题和排序列表问题。
本文详细介绍了有限域在零知识证明电路中的应用,包括有限域的定义、模运算、加法逆元、乘法逆元等概念,并通过代码示例展示了如何在Python中实现这些操作。
RareSkills 的 Zero Knowledge Proofs 系列文章之一,介绍了集合论的基础知识。翻译的过程中完成了其中的练习题。
本文介绍了抽象代数中的基本概念,如群、半群和幺半群,并解释了它们在零知识证明中的应用。
本文详细介绍了代数群的基本概念,通过多个例子帮助读者建立对群的直觉,包括群的定义、阿贝尔群、有限群、循环群等,并探讨了这些群在零知识证明中的应用。
本文通过多个例子详细解释了同态映射的概念,并探讨了其在加密技术和零知识证明中的应用。文章结构清晰,分为简单和复杂例子两部分,并附有详细的数学公式和Python代码示例。
本文详细介绍了椭圆曲线加法在实数域上的工作原理,通过群论的角度解释了椭圆曲线点的加法操作,并展示了如何在椭圆曲线上进行点加法的具体公式和几何解释。文章还包括了代码示例和数学公式,深入探讨了椭圆曲线的代数性质。
文章详细介绍了有限域上的椭圆曲线,包括它们的绘制、数学性质以及在密码学中的应用。通过多个示例和代码,展示了如何生成和操作这些曲线,并解释了其与有限域的循环群特性。
这篇文章深入探讨了双线性映射(bilinear pairings)的原理及其在密码学中的应用,特别是在验证乘积的离散对数时。
文章详细介绍了如何将一组算术约束转换为Rank One Constraint System (R1CS),涵盖了转换中的优化和Circom库的实现方法。
文章详细介绍了如何通过将Rank 1 Constraint System (R1CS)中的见证向量转换为有限域椭圆曲线点,并使用双线性配对来实现零知识证明。文中还讨论了验证步骤的实现细节,并指出了该算法在实际应用中的低效性。
介绍了拉格朗日插值法,通过一组点计算一个经过这些点的多项式,并提供了Python代码示例。
文章详细介绍了Schwartz-Zippel Lemma在零知识证明(ZK-Proof)中的应用,通过多项式例子和Python代码展示了如何利用该引理进行多项式相等性测试和向量相等性测试。
文章详细介绍了二次算术程序(QAP)的概念及其在零知识证明中的应用,特别是如何通过拉格朗日插值将Rank 1约束系统(R1CS)转换为QAP,并通过Schwartz-Zippel引理在O(1)时间内验证QAP的等式。
本文详细介绍了如何将R1CS(Rank 1 Constraint System)转换为QAP(Quadratic Arithmetic Program),并通过Python代码演示了实现过程,包括有限域算术、多项式插值等关键步骤。
文章介绍了ZK-SNARKs中使用的可信设置机制,详细解释了如何在保密值上计算多项式,并提供了Python代码示例。
本文详细介绍了如何在可信设置的基础上评估二次算术程序(QAP),并解释了如何在不泄露证据的情况下证明QAP的满足性,使用恒定大小的证明。同时还涉及了R1CS、椭圆曲线配对等技术的详细实现。
本文详细介绍了Groth16零知识证明算法的原理、实现及其应用,包括可信设置、证明生成和验证的步骤,并讨论了防止伪造证明的方法以及算法中的安全问题。
该文章深入探讨了Zero Knowledge Bulletproofs的概念,详细介绍了其原理、实现及应用。文章结构清晰,搭配丰富的数学公式和代码块,适合希望了解零知识证明的开发者和研究者。
Pedersen承诺是一种密码学技术,允许在不暴露向量内容的情况下对其进行编码,广泛应用于零知识证明和区块链技术中。本文深入探讨了Pedersen承诺的原理、构建、优点和应用,包括对内部乘积和矢量承诺的解释,适合对密码学有一定了解的读者。
本文详细介绍了多项式承诺机制的原理和实现,特别是如何使用Pedersen承诺和椭圆曲线来验证多项式在特定点的估值,而不泄露多项式本身。文章还讨论了验证步骤的工作原理和为什么验证者无法被欺骗。
文章详细介绍了如何使用多项式承诺方案在零知识证明中验证多项式乘法的正确性,包括算法步骤和优化方法,并附有代码实现。
本文详细介绍了如何在零知识证明中构造内积证明,通过向量多项式和内积计算,展示了如何在不泄露原始数据的情况下证明内积计算的正确性。文章还提供了相关算法的具体实现步骤,并指出如何进一步优化证明大小。
文章介绍了如何在不发送整个向量的情况下,证明已知 Pedersen 向量承诺的开启,并详细描述了算法的实现和安全问题。
本文详细阐述了如何在零知识证明(ZKP)中通过递归折叠的方法,减少向验证者传输的数据量,从而高效地证明内积和向量的承诺。文章包括算法的详细描述、数学推导和代码实现。
文章介绍了在推导范围证明和编码电路时,内积运算的一些有用代数技巧,并提供了每个规则的简单证明。
本文深入探讨了如何在零知识证明算法中利用随机线性组合来有效地检查多个等式的相等性。通过实例展示了Pedersen承诺的等式验证过程,并提出了一种减少通信开销的方法。这种技术能够实现对多个内积同时进行验证,从而提高效率。
本文详细介绍了Bulletproofs在范围证明中的构建方法,通过验证向量aL的二值性和其与向量2n的内积来证明标量v的范围在2^n内。文章还展示了几种代数技巧,并通过Monero的使用实例说明了该技术的应用。
Rareskills 出品的零知识证明之书, 对程序员最友好的零知识证明教程
这里有关于从头开始实际编写实用的零知识证明器和验证器(ZK-SNARK)所需知道的内容。
对事物的概念性理解和具体理解是不同的。大多数相当聪明的人在阅读教程后会对某些东西有一个概念性的理解,但他们离用这些知识做一些有用的事情还有很长的路要走。
对于数学家来说,具体的理解发生在他们写证明的时候。对于程序员来说,具体的理解发生在他们编写功能代码的时候。
《零知识证明之书》主要面向寻求具体理解的程序员。我们的书中充满了代码片段,并演示了实际加密库的使用。我们使用数学符号,但是我们以这样一种方式来编写,将其转换为源代码只是一个小小的飞跃。
Groth16是tornado cash(和许多其他公司)用于实现链上零知识证明的算法。我们相信这是学习之旅的最佳起点,我们的书是完全理解算法的最直接途径。
详解 Compound V3
Uniswap V2 之书
Solana 60 天课程
代理模式与 Delegatecall 规范手册