binius-zk/binius64
GitHub: binius-zk/binius64
Binius64 是一个基于 Rust 的高性能零知识证明系统,通过 64 位字级电路表示和二进制域算术实现快速 zk-SNARK 证明生成。
Stars: 162 | Forks: 46

# Binius64
Binius64 是一个零知识简洁论证系统(zk-SNARK),由 Rust 实现。Binius64 能够证明任意计算,这些计算被表示为基于 64 位字的非确定性电路。
Binius64 是[原始 Binius 协议](https://github.com/IrreducibleOSS/binius)的继任者,重点关注简单性和 CPU 性能。该约束系统通过*移位值索引*原生编码了 64 位字上的按位运算,该索引将值引用与移位操作结合在一起。与位级方法相比,这种设计在约束复杂度上实现了 64 倍的降低,同时保持了二进制域算术的效率优势。该协议针对支持 SIMD 指令的现代 64 位 CPU,使其在需要零知识证明的实际应用中具有实用性。
有关更多文档,请访问
* [binius.xyz](https://www.binius.xyz) 文档网站。
* [Blueprint](https://www.binius.xyz/blueprint) 部分提供了对 Binius64 密码学协议的详细描述。
* [Building](https://www.binius.xyz/building) 部分包含了如何使用 Binius64 构建和证明应用程序的实用指南。
* 位于 [docs.binius.xyz](https://docs.binius.xyz) 的 Rust 文档。
* Irreducible 的文章 [Announcing Binius64](https://www.irreducible.com/posts/announcing-binius64)。
## 依赖项
- [rustup](https://rustup.rs/):我们建议使用 rustup 来安装 Rust 编译器和 Cargo 工具链。
## 用法
### 构建
Binius64 针对特定的目标架构实现了优化。要启用这些优化,请导出环境变量
```
export RUSTFLAGS="-C target-cpu=native"
```
当将 binius64 作为依赖项包含时,建议在您的 `Cargo.toml` 文件中添加以下行,以便在各个 crate 中启用优化
```
[profile.release]
lto = "thin"
```
### 运行示例
`prover/examples/` 目录包含示例电路,您可以使用 [CLI 框架](https://www.binius.xyz/building/getting-started/cli)运行它们。
例如,要运行一个证明 SHA-512 原像的示例:
```
$ RUSTFLAGS="-Ctarget-cpu=native" cargo run --release --example sha512 prove --max-len-bytes 65536 --exact-len
Finished `release` profile [optimized + debuginfo] target(s) in 0.09s
Running `target/release/examples/sha512 prove --max-len-bytes 65536 --exact-len`
Building circuit [ 2.99s | 100.00% ]
Setup [ 619.81ms | 100.00% ] { log_inv_rate = 1 }
Generating witness [ 14.12ms | 100.00% ]
├── Input population [ 173.34µs | 1.23% ]
└── Circuit evaluation [ 12.60ms | 89.22% ]
prove [ 128.58ms | 100.00% ] { operation = prove, perfetto_category = operation, n_witness_words = 1048576, n_bitand = 1048576, n_intmul = 1 }
...
```
### 启用多线程
使用 [Rayon](https://github.com/rayon-rs/rayon) 的多线程功能是可用的,但默认情况下处于禁用状态。这由 `rayon` Cargo 特性控制。要运行一个启用了多线程的示例,请使用 `--features rayon`。
## 架构
有关仓库结构和架构细节,请参阅 [ARCHITECTURE.md](ARCHITECTURE.md)。
## 许可协议
```
SPDX-License-Identifier: Apache-2.0 OR MIT
```
该项目采用 [Apache-2.0](LICENSE-Apache-2.0.txt) 或 [MIT](LICENSE-MIT.txt) 双重许可,由您自行选择。任何有意提交以包含在项目中的贡献均应按
Apache-2.0 和 MIT 许可协议进行双重许可,且不得附带任何额外条款或条件。
### Apache-2.0 声明
版权所有 2025 The Binius Developers
版权所有 2025 Irreducible, Inc.
根据 Apache 许可协议 2.0 版(“许可协议”)获得许可;
除非遵守许可协议,否则您不得使用此文件。
您可以在以下网址获得许可协议:
```
http://www.apache.org/licenses/LICENSE-2.0
```
除非适用法律要求或书面同意,根据许可协议分发的软件均按“原样”分发,
不附带任何明示或暗示的保证或条件。
请参阅许可协议,以了解管辖权限的具体语言和
许可协议下的限制。
### MIT 声明
版权所有 (c) 2025 The Binius Developers
版权所有 (c) 2025 Irreducible, Inc.
特此免费向任何获得本软件及相关文档文件(“软件”)副本的个人授予许可,
不受限制地处理本软件,包括但不限于
使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,
并允许向其提供软件的人员这样做,但须符合以下条件:
上述版权声明和本许可声明应包含在所有的
软件副本或重要部分中。
本软件按“原样”提供,不提供任何形式的明示或暗示的保证,包括
但不限于对适销性、特定用途的适用性和非侵权的保证。在任何情况下,对于任何索赔、损害或其他
责任,无论是在合同诉讼、侵权行为还是其他形式中,由软件或软件的使用或
其他交易中引起的或与之相关的,作者或版权持有人均不承担任何责任。
标签:Rust, zk-SNARK, 二进制域, 可视化界面, 密码学, 手动系统调用, 电路约束, 网络流量审计, 通知系统, 零知识证明