许多零知识证明(ZKP)库为了追求性能,忽略了椭圆曲线的基本检查,可能导致安全漏洞。文章讨论了不验证椭圆曲线点和子群成员关系的风险,回顾了相关的攻击历史,并强调了在密码学库中默认启用所有检查的重要性,以确保程序的安全性。
LambdaClass 致力于通过零知识证明(ZK)技术,构建模块化区块链的未来,重点介绍了 LambdaClass 在 Starknet 生态系统中的工作,包括 cairo-rs 优化、starknet_in_rust 开发、Cairo STARK prover 以及 Starknet sequencer 的概念验证,同时还介绍了 Herodotus 和 Giza 等项目,旨在推动以太坊生态系统的互操作性和链上机器学习的发展。
本文通过一个笔和纸的例子,介绍了使用STARKs进行计算完整性的方法。
本文介绍了 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)中的实际应用案例。