本文介绍了加速 Sumcheck 协议证明时间的优化方法,尤其是在需要证明的值在一个小域,而随机性来自一个相对大域的情况下。文章详细讲解了四种算法,重点在于减少大域乘法(ll multiplication)的次数,通过预计算r无关项、分组d位、Lagrange插值等技术,逐步优化Sumcheck协议的计算效率,并提供了相应的 SageMath 代码实现。
本文作者回顾了自己2014年创建的Proof Market,并探讨了使用zkVM构建非托管版本,以及使用计算机语言来编写和检查数学证明来验证算术电路的正确性。文章对比分析了多个用于验证算术电路的框架,包括ACL2、Garden、zk-lean、sp1-lean和Clean,并评估了它们在不同方面的优缺点,以及作者和Claude Code在这些框架上的使用体验。
本文深入浅出地介绍了Σ协议,从Schnorr协议开始,逐步讲解了如何组合Σ证明,包括等式证明、AND证明和OR证明。接着,探讨了Pedersen承诺,以及如何将其与Σ协议结合使用,最后介绍了Fiat-Shamir变换,将交互式协议转换为非交互式协议,并推广到一般的同态函数,证明了Σ协议是同态原像知识的证明。
本文是关于Circle STARKs系列的第四部分,主要介绍了如何将前三部分构建的组件组合成完整的Circle STARK。
近期研究推翻了hash-based SNARKs的邻近差距猜想,该猜想用于设置参数。文章解释了这一结果对当前部署的SNARKs的影响,指出某些原本假定的安全参数实际上并不安全,需要调整参数以保证安全性,这可能会导致证明大小和验证时间的增加。
近期研究推翻了邻近间隙猜想,该猜想曾用于设置基于哈希的SNARKs参数。文章解释了这一结果对当前部署的SNARKs的影响,指出虽然某些假定的参数不再安全,但仍存在大量未知参数。调整SNARKs以实现已验证的安全性将使proof size和验证时间增加2倍,而调整为新的推测安全性仅增加2-3%。
本文深入探讨了LaBRADOR,一种基于标准格假设的证明系统,该系统利用递归实现亚线性证明大小。文章详细解释了LaBRADOR的核心思想,包括模块短整数解(M-SIS)问题、Ajtai承诺、多项式环以及用于检查向量是否为短向量的NormCheck子协议,并介绍了如何通过分解处理Ajtai承诺中的向量长度问题,以及如何利用外层承诺和递归来优化协议。
本文深入探讨了Bulletproofs Range Proofs,这是一种用于在不泄露秘密值本身的前提下,证明该值位于给定范围内的技术。文章详细解释了如何利用bit分解、随机挑战、承诺、blinding等技术,结合Inner Product Argument(IPA)构建完整的零知识范围证明,并给出了相应的公式推导和代码示例,以确保验证者确信秘密值确实在指定范围内。
本文深入探讨了Bulletproofs范围证明的原理和构造方法,结合位分解、随机挑战、承诺、致盲和内积论证等多种密码学技术,实现对隐藏数值范围的有效验证。文章首先介绍范围证明的应用场景,即将秘密数值分解为比特位的思想,然后逐步推导出完整的零知识范围证明协议,并使用SageMath代码片段详细展示了协议的每一步骤,旨在帮助读者理解Bulletproofs范围证明的底层机制。
本文深入探讨了 Circom 编程中需要注意的三个常见陷阱:未约束的输出、未约束的输入以及比较操作符的符号整数特性。未约束的输出可能导致电路验证失效,未约束的输入可能允许恶意证明者提供无效输入,而比较操作符的符号整数特性可能在 witness 生成阶段产生意料之外的结果。理解并避免这些陷阱对于编写安全的 Circom 电路至关重要。