binius-zk/binius64

GitHub: binius-zk/binius64

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

Stars: 162 | Forks: 46

![Binius logo](assets/Logo.png "Binius logo") # 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, 二进制域, 可视化界面, 密码学, 手动系统调用, 电路约束, 网络流量审计, 通知系统, 零知识证明