13个稳定版本 (3个主要版本)
新 3.2.0 | 2024年8月19日 |
---|---|
3.1.0 | 2024年7月15日 |
3.0.2 | 2024年6月24日 |
2.2.0 | 2024年5月25日 |
0.1.0 | 2023年5月23日 |
320 在 加密学 中
每月1,187 次下载
用于 proof-of-sql
105KB
1.5K SLoC
背景
Blitzar 由 Space and Time 的核心加密团队创建,旨在加速 Proof of SQL,这是一种针对 SQL 操作的新型零知识证明。在调查了我们的 GPU 加速框架选项之后,我们意识到 Proof of SQL 需要更好的解决方案,因此我们创建了 Blitzar。现在,Proof of SQL 在单个 GPU 上对百万行表进行证明的时间为 3.2 秒,而且速度还在加快。
我们将 Blitzar 开源,为 Web3 社区提供一个更快、更健壮的框架来构建 GPU 加速的 zk-proofs。我们很高兴将项目开源,以扩大 Blitzar 的范围并为其下一波闪电般的 zk-proofs 奠定基础。
概述
Blitzar-rs 是用于加速 CPU 和 GPU 上的加密零知识证明算法的 blitzar-sys crate 的高级Rust包装器。
注意 此仓库包含对 blitzar-sys crate 的高级Rust包装器。如果您使用 C++,请在此处使用配套仓库中的代码:https://github.com/spaceandtimelabs/blitzar。
该软件包提供
- 对 Curve-25519,Ristretto25519,bls12-381 G1 和 bn254 G1 元素进行群操作的函数。
- 这是为生成和验证两个向量的内积紧凑证明而实现的内积论证协议。
警告:该项目尚未经过安全审计,不适合生产使用。
计算后端
尽管这个库的主要目标是提供GPU加速的加密zk证明算法,但为了测试,库也提供了CPU支持。以下后端得到支持
后端 | 实现 | 目标硬件 |
---|---|---|
cpu |
串行 | 支持x86的CPU |
gpu |
并行 | 支持Nvidia CUDA的GPU |
加密原语
多标量乘法(MSM)/广义佩德森承诺/多指数运算
Blitzar提供了一个多标量乘法(即广义佩德森承诺)的实现。MSM背后的数学细节可以在Blitzar的GitHub仓库中找到。
注意:我们交替使用“多标量乘法”和“多指数运算”这两个术语来指代此操作,因为当群以加法形式表示时,该操作是多标量乘法,而当群以乘法形式表示时,该操作是多指数运算。
Blitzar的实现允许同时计算多个、可能不同长度的MSM。此外,可以使用内置的、预计算的生成器,或者根据需要提供。
目前,Blitzar支持Curve25519和bls12-381 G1作为群。我们一直在努力扩展我们支持的曲线,请查看更新。
内积论证
Blitzar提供了一个内积论证的修改版实现(例如Bulletproofs和Halo2)。修改后的内积论证的数学细节可以在Blitzar的GitHub仓库中找到。
即将推出的其他功能
如果您希望看到某个特定功能,请联系我们。Blitzar是一个以社区为先的项目,我们希望听到您的意见。
入门指南
要启动本地副本,请考虑以下步骤。
从源代码构建的先决条件
GPU后端先决条件
- Rust 1.76.0
x86_64
Linux实例。- Nvidia Toolkit驱动程序版本:>= 545.23.08(在此兼容性列表中检查)。
用法
添加到您的项目中
要将此库添加到您的项目中,请更新您的Cargo.toml
文件,如下所示
[dependencies]
blitzar = <version_number>
功能标志
功能 | 默认? | 描述 |
---|---|---|
cpu |
x | 启用CPU后端。 |
gpu |
✓ | 启用GPU后端。 |
测试
cargo test
文档
cargo doc --no-deps --open
示例
查看EXAMPLES文件。
运行基准测试
基准测试使用criterion.rs运行。
$ cargo bench --features <cpu | gpu>
开发过程
主分支定期构建和测试,是唯一可信的来源。定期从自动语义发布执行中创建标签。
贡献
我们非常高兴向社区开放 Blitzar-rs,但由于物流原因,目前不接受社区 Pull Requests。然而,欢迎您在问题面板上提出任何建议、想法或错误修复。同时,请参阅贡献指南。
社区 & 支持
加入我们的Discord 服务器,提问、讨论功能,并进行一般聊天。
许可证
本项目在Apache 2 许可证下发布。
C++ 代码
该仓库包含对 blitzar-syscrate 的高层 Rust 包装。如果您使用 C++,请使用此处伴随仓库中的代码:https://github.com/spaceandtimelabs/blitzar。
依赖关系
~7–11MB
~188K SLoC