本文介绍了Quin Selector这一设计模式,它允许使用信号作为信号数组的索引。文章通过代码示例,展示了如何在Circom中实现Quin Selector,并讨论了优化方法。同时,文章还提到了Circomlib库中的multiplexer组件,它可以实现类似的功能,并提供了一个使用示例。最后,文章提到了该算法的历史渊源。
文章介绍了在算术电路中进行迭代计算(如幂、阶乘或计算斐波那契数列)时,如何通过预先计算所有可能的值并使用 Quin 选择器来解决条件停止的问题。文章通过阶乘和斐波那契数列的例子,展示了如何在 Circom 中实现这种方法,并强调了约束的重要性,最后提供了一个关于幂运算的练习。
本文介绍了如何在Circom中交换信号列表中的两个信号,这是排序算法的重要子程序,并解释了在ZK电路中执行此操作的复杂性,由于信号的不可变性,需要创建一个新数组并将旧值复制到新数组,在特定条件下进行修改,文章还指出了代码中的一个错误,即未考虑s等于t的情况,并提供了修复方案,最后总结了在Circom中操作数组的通用模式。
本文详细介绍了如何在 Circom 中创建一个栈数据结构,以及如何使用零知识证明(ZK proofs)来验证栈的操作,包括 push、pop 和 no change。通过定义栈的最大高度和使用栈指针(stack pointer)来跟踪栈的使用情况,并详细描述了在不同操作下栈状态的转换和约束。
本文介绍了如何在零知识电路中证明选择排序算法的正确执行过程。由于ZK电路中信号的不可变性,每次交换都需要创建一个新的列表快照。为此,文章详细展示了如何通过多个中间状态的转换来证明排序的正确性,包括查找子列表中最小值的索引、交换列表中的两个元素等关键步骤, 并提供相应的代码模版。
文章详细介绍了Schwartz-Zippel Lemma在零知识证明(ZK-Proof)中的应用,通过多项式例子和Python代码展示了如何利用该引理进行多项式相等性测试和向量相等性测试。
本文通过多个例子详细解释了同态映射的概念,并探讨了其在加密技术和零知识证明中的应用。文章结构清晰,分为简单和复杂例子两部分,并附有详细的数学公式和Python代码示例。
本文详细介绍了代数群的基本概念,通过多个例子帮助读者建立对群的直觉,包括群的定义、阿贝尔群、有限群、循环群等,并探讨了这些群在零知识证明中的应用。
文章详细介绍了如何通过将Rank 1 Constraint System (R1CS)中的见证向量转换为有限域椭圆曲线点,并使用双线性配对来实现零知识证明。文中还讨论了验证步骤的实现细节,并指出了该算法在实际应用中的低效性。
介绍了拉格朗日插值法,通过一组点计算一个经过这些点的多项式,并提供了Python代码示例。