本文介绍了 LambdaWorks 库的开发目标,该库旨在提供易于使用的零知识证明工具,并重点介绍了 STARKs 证明系统的原理和实现步骤,包括算术化、多项式方程转换和 FRI 协议,并通过一个玩具示例展示了 FRI 协议的运行过程,最后总结了 STARKs 的核心思想。
本文深入探讨了ZK-STARKs中约束的执行以及如何处理周期性应用的约束。文章解释了如何将计算的执行轨迹转换为多项式,并利用单位根的性质来简洁地表达和验证约束,尤其是在约束条件周期性重复出现的情况下,从而优化性能并简化理解。
本文介绍了基于属性的测试(PBT)的概念及其在 Rust 中的应用,通过示例展示了如何使用 proptest 库进行 PBT,并分享了在 cairo-rs 和 Patricia Merkle Tree 两个开源项目中使用 PBT 发现 bug 和验证代码正确性的实践案例。PBT 通过生成大量随机输入并检查代码的属性是否满足来有效地测试程序的正确性。
本文介绍了LambdaClass团队开发的Aleo区块链的替代实现,包括使用Tendermint共识层和使用arkworks框架实现的零知识虚拟机,目标是Aleo指令。文章还介绍了共识层、虚拟机以及VM与共识集成层,并指出了目前正在进行的工作,例如支持更多数据类型和指令、生成状态转换正确性的证明等。
本文介绍了SuperNova,它是一种基于虚拟机和程序的密码学证明系统,能够实现非均匀IVC。SuperNova通过使用folding schemes和relaxed-committed R1CS,支持具有丰富指令集的机器,克服了Nova仅支持单个指令的限制。SuperNova在保证简洁性、零知识和增量证明生成的同时,使得证明程序的每一步的成本与该指令的电路大小成正比。
本文介绍了两种zk-SNARK的证明聚合方案:SNARKPack和aPlonk。SNARKPack基于Groth16,利用随机线性组合和内积参数实现证明聚合。aPlonk基于Plonk,引入多项式承诺以实现亚线性证明大小,通过对承诺进行随机线性组合来验证多个证明,从而减少总 proof 的大小和验证时间。
本文深入浅出地介绍了有限域扩展的概念,类比复数的构建过程,解释了如何从基础有限域(如Fp)出发,通过添加坐标和定义乘法规则来构建更大的有限域(如Fp^n)。文章还提及了有限域扩展在密码学和zk-SNARKs中的应用,以及在高级加密标准(AES)中的实际应用案例。
本文总结了使用 CUDA 优化多标量乘法的不同方法,这些方法在 ZPrize 中被提出。这些解决方案都基于 Pippenger 算法,并针对 BLS12-377 曲线进行了优化,通过优化窗口大小、预计算点、使用不同的坐标系进行椭圆曲线加法、并行归约算法等方法,最佳解决方案达到了 2.52 秒,比基线提高了 2.3 倍。
本文介绍了CUDA并行计算平台及其编程模型,阐述了如何利用CUDA加速计算密集型任务,例如zk-SNARKs中的多标量乘法。
本文介绍了Nova,一种实现增量可验证计算(IVC)的新协议,它基于一种称为折叠方案的密码学原语。Nova通过将两个NP语句实例合并为一个实例,并引入松弛R1CS,结合同态多项式承诺方案(如Pedersen承诺),实现了轻量级的验证电路和快速的证明生成与验证,适用于公共账本、可验证延迟函数和证明聚合等多种应用。