本文深入探讨了在Rank-1约束系统(R1CS)中列编码与行编码的优缺点,特别是在零知识证明(ZKP)的背景下。列编码通过创建简单的多项式来简化计算,较低的多项式度数使其在计算上更高效,适合加密应用,而行编码则因多项式复杂度高而较少使用。
本文深入探讨了在 Circom 中编程时可能遇到的常见陷阱,包括错误地使用 assert、不正确地处理 hints (即 <-- 运算符),以及由于有限域算术导致的别名攻击。文章提供了具体的代码示例和避免这些陷阱的方法,强调了在 Circom 电路开发中进行严格约束和安全编码的重要性。
assert
<--
本文介绍了 Circom 中 public input 和 output 的概念,以及如何在 Circom 电路中定义和使用它们。
本文详细介绍了Jolt zkVM 的工作原理,它是一个为 RISC-V 架构设计的零知识虚拟机,由 a16z 开发,并采用 Lasso 查找参数来证明 VM 执行的正确性,文章详细解释了指令查找、离线内存检查和 Rank-1 约束系统 (R1CS) 三个主要组件,以及它们如何协同工作以确保 VM 执行的正确性。
本文介绍了noname 2.0预览版的主要更新,包括支持泛型数组、通过Sonobe集成支持folding scheme、交互式在线 Playground、R1CS优化以及社区贡献的bug修复和功能改进。这些更新旨在提高noname语言的灵活性、效率和用户友好性,使开发者能够编写更复杂的ZK电路,并简化IVC应用的开发。
zkSecurity 推出了一种名为 noname 的编程语言,用于编写 ZK 电路,该语言现在支持 R1CS。
本文介绍了在R1CS电路中优化线性运算的方法,尤其是在零知识证明(ZK)系统中,通过将模型权重直接嵌入到电路中作为常量,而不是作为信号传递,可以显著减少约束的数量,从而降低计算成本。实验表明,这种优化对于R1CS和Plonk系统都能显著提升证明速度,特别是在R1CS系统中,线性操作几乎变为“免费”。
Bionetta是一个zkML框架,旨在解决AI安全问题,实现可验证性、零知识和客户端执行。它通过将模型权重嵌入电路作为常量,优化R1CS系统中的线性计算,从而降低计算成本。该框架还提出了一种量化方案,用于在有限域内处理浮点运算,并在神经网络中有效管理精度。
RISC0是一个zkVM
本文深入探讨了zk-SNARKs技术中的二次算术程序(QAP),详细解释了如何将代码转换为QAP并生成零知识证明。文章通过一个简单的三次方程示例,逐步展示了从代码扁平化到R1CS再到QAP的转换过程,并介绍了如何在多项式上进行约束检查。
本文深入探讨了零知识证明(zk-SNARKs)技术背后的数学原理,特别是将计算问题转换为二次算术程序(QAP)的过程。文章通过一个简单的例子详细解释了如何将代码扁平化、转换为R1CS系统,并最终通过拉格朗日插值法生成QAP多项式。