lambdaworks 是一个用 Rust 编写的密码学库,旨在提供高性能和开发者友好的密码学原语,用于构建零知识证明系统。该项目在过去一年中取得了显著进展,包括合并了 464 个 PR、拥有 60 位贡献者、发布了 8 个版本,并包含 49k 行 Rust 代码。未来计划包括集成到其他证明器、改进文档、支持 GPU 加速以及添加新的多项式承诺方案和证明系统。
介绍
自从我们开始构建 lambdaworks 以来已经快一年了!lambdaworks 是我们的库,它实现了高效的密码学原语来构建证明系统。随之而来的是,提供了许多证明系统的后端,并支持与不同前端的兼容性。我们想概述一下过去一年所做的工作以及未来的路线图。我们为什么要开始这段旅程?正如我们在 之前的文章 和 加密原则 中所说的那样,我们非常看好零知识/有效性证明及其解决许多问题和创建新应用程序的潜力。我们决定在这个充满挑战的环境中工作,这里汇集了数学、分布式系统和密码学。我们面临的第一个挑战是缺乏高性能且对开发者友好的库,当然也有一些例外。有些库具有不错的 API 并且易于使用,但不是用 Rust 编写的;另一些是用 Rust 编写的,但编程习惯很差。因此,我们决定与一个由工程师和数学家组成的团队构建一个新的库,用 Rust 编写,专注于性能和对开发者友好。我们还希望通过编写清晰的文档并解释每个部分和证明系统的工作方式,使所有这些知识可供其他开发者使用,并帮助新人们加入这个领域。开源和去中心化是构建加密技术的必要实际条件,我们不能将去中心化理解为构建事物的知识和工具集中在少数参与者手中。让我们来看看我们未来的计划和一些数据。
一些数据:
在这里,我们提供一些数据来了解我们在库中所做的所有工作以及社区的贡献:
- 合并了 464 个 PR。
- 60 位贡献者。
- 8 个版本。
- 49k 行 Rust 代码
- 几篇关于有限域、密码学和证明系统的文章。
- 在 2 个 CTF 活动和 Lambda ZK Week 中使用了 lambdaworks。
- lambdaworks 频道中有 800+ 名成员。
- 一次密码学训练营,有来自 12 个国家的 21 名实习生
目标:
- 密码学和证明系统的参考库。
- 用 Rust 编写。
- 用于生产,而不仅仅是用于学术研究。但是,我们也希望使研究人员能够轻松地在我们的库中撰写他们的论文。
- 支持 GPU 加速(Metal、CUDA)。
- 简单易用,以开发者为中心。
- 清晰的文档,大量的例子。
我们还需要做什么
我们已经向库中添加了几个工具和证明系统,但我们还有很长的路要走:
- 集成到其他证明器、VM 和密码学项目中。
- 文档。我们仍然需要改进项目文档,添加更多示例,并增强用户体验。
- 创建资助和赏金计划
- 支持使用 Icicle。
- 二元域塔。
- 新的多项式承诺方案:basefold、brakedown、内积参数 (IPA)、Binius。
- Cairo STARK Platinum 的新布局。
- 查找参数(例如,Plookup 和 Lasso)
- 新的证明系统:Hyperplonk、Spartan、Marlin、GKR。
- 折叠方案。
- 支持新的椭圆曲线。
- 新的哈希函数。
- 提高 FFT、椭圆曲线、多项式和一般有限域算术的性能。
- 为椭圆曲线添加新的坐标系。
- 第二届密码学训练营。
我们完成了什么?
一年多来,我们已经实现了不同的核心数学、密码学构建块和证明系统。我们收到了来自社区的贡献,不仅以 PR 的形式,还以问题和错误报告的形式。
主要 crates:
我们实现的主要 crates 有:
- 有限域:密码学和证明系统的所有数学构建块。这在 Starknet 中被 Cairo VM 在生产中使用。
- Crypto:哈希函数、Merkle 树、多项式承诺方案。
- Provers(和验证器):STARK Platinum、Groth 16、Plonk。Cairo、Winterfell、Miden (STARKs)、Circom 和 Arkworks (Groth 16) 的适配器。
域:
- 优化的 Montgomery 后端。
- Mersenne-31 和 Mini-Goldilocks(264−232+1264−232+1)的专用后端。
- 域扩展。
- Radix-2 和 radix-4 快速傅里叶变换。
- 椭圆曲线。
- 多标量乘法。
- 配对。
- 单变量多项式。
- 多元多项式。
Crypto:
- Fiat Shamir 变换。
- 哈希函数:Poseidon、Pedersen
- Merkle 树
- KZG 承诺方案
Provers:
- 通用 STARK 证明器
- Groth 16
- 带有 KZG 承诺的 Plonk
- 适配器