georgegoldman/Soroban-ZK-Std

GitHub: georgegoldman/Soroban-ZK-Std

Soroban-ZK-Std 是一款针对 Stellar 协议的高性能加密库。

Stars: 1 | Forks: 35

# Soroban-ZK-Std **为 Stellar 协议 25 ZK-Primitives 设计的高性能加密标准库。** ## Stellar ZK 中的未解问题 虽然协议 25 ("X-Ray") 引入了原生主机函数用于 BN254 配对检查和 Poseidon 哈希,但仍然存在巨大的 **开发者体验 (DX) 差距**。要在 Stellar 上构建私有稳定币或合规的 RWA 协议,开发者目前面临三个“硬性障碍”: 1. **主机-客映射**:手动处理 Soroban 的主机管理 U256 和内部 256 位字段表示之间的转换容易出错。 2. **资源耗尽**:标准的 Rust ZK 库对于 Soroban 的 64KB WASM 限制来说过于庞大。 3. **气体效率低下**:仅软件的数学运算经常超过 400M 指令限制。 **Soroban-ZK-Std** 是解决方案——一个模块化、no_std Rust SDK,旨在使 Stellar 成为可配置、合规导向隐私的首选家园。 ## 数学规范 - **曲线**:BN254 (alt_bn128),针对原生 bn254_multi_pairing_check 主机函数进行了优化。 - **域模数 ($r$)**:21888242871839275222246405745257275088548364400416034343698204186575808495617 - **原语**:恒时模加法,自定义 512 位减少的 Schoolbook 乘法,以及基于 Fermat 的求逆。 ## 性能基准(2026 年 3 月) - **47% 更快的哈希**:直接通过 CAP-0075 利用 poseidon2_permutation 主机函数。 - **最小占用空间**:使用 ethnum 进行汇编优化的算术,将 WASM 二进制文件大小减少 ~22KB——节省 30% 的总合约空间。 - **指令效率**:优化的域算术允许复杂验证器在 400M 指令预算内运行良好。 ## 公共利益影响与用例 这是 Stellar 生态系统的基础性基础设施。它使开发者能够构建: - **屏蔽 RWA 转账**:通过 ElGamal 观看密钥(参见我们的 [屏蔽资产模板](./contracts/shielded-asset-template))保持监管可见性的私有代币化资产。 - **可配置的隐私**:与 [协会集提供者 (ASPs)](./docs/ASP_Integration.md) 集成以符合规定。 - **无需信任的治理**:ZK-投票和匿名贡献跟踪,适用于 Stellar 原生 DAO。 ## 安装 将以下内容添加到您的 `Cargo.toml`: ``` [dependencies] zk-soroban = { git = "[https://github.com/georgegoldman/Soroban-ZK-Std](https://github.com/georgegoldman/Soroban-ZK-Std)" } ``` ## 🛠️ 为 Soroban-ZK-Std 贡献 Soroban-ZK-Std 是一个针对 Stellar 网络优化的高性能、no_std 加密库。由于我们在 Soroban 虚拟机的严格限制下运行,我们的贡献标准高于标准的 Rust 项目。 💬 社区 加入我们的 Telegram 群组,与其他贡献者合作并获得实时支持:https://t.me/+beBHvsplOPVmYmM0 ### 🚀 入门 1. **先决条件** 您必须安装以下内容: - **Rust (Nightly/Stable):** `rustup target add wasm32-unknown-unknown` - **Soroban CLI:** `cargo install --locked soroban-cli` - **Twiggy & Bloat:** (用于大小审计) `cargo install twiggy cargo-bloat` 2. 本地环境设置 克隆存储库并运行主检查以确保您的环境兼容: ``` git clone https://github.com/georgegoldman/Soroban-ZK-Std.git cd Soroban-ZK-Std make all ``` ### 🏗️ 项目架构 为了保持库的模块化,我们将代码分为三个不同的区域: | 组件 | 路径 | 目的 | |------------------|-------------------------------|-------------------------------------------------------------------------| | zk-core | crates/zk-core/ | 纯数学。椭圆曲线逻辑、域算术和 U256 映射。这里没有 Soroban 依赖。 | | zk-soroban | crates/zk-soroban/ | Stellar 集成。扩展 Soroban Env 的特质、主机函数映射和 XDR 转换。 | | verifier-sample | contracts/verifier-sample/ | 集成测试。一个用于验证 WASM 大小和气体成本的示例合约。 | **规则**: 如果您添加了一个新的数学原语(例如,一个新的曲线),它将放在 `zk-core` 中。如果您为开发者在他们的合约中使用添加了一个工具,它将放在 `zk-soroban` 中。 ### 📥 如何添加您的代码 1. **认领一个问题** 检查 [问题](https://www.google.com/search?q=https://github.com/georgegoldman/Soroban-ZK-Std/issues) 标签中的“良好入门问题”或“Stellar Wave 奖金”。在问题下评论以被分配。 2. **实现规则** - **无标准库**:我们严格 `#![no_std]`。不要使用 `std::`。使用 `core::` 或 `alloc::`(如果绝对必要)。 - **无恐慌**:避免 `unwrap()` 和 `expect()`。使用 `Result` 允许合约优雅地处理错误。 - **恒时**:所有加密操作(加、乘、求逆)**必须**是恒时的,以防止旁路攻击。 3. **测试** 在您的代码所在的同一文件中添加单元测试,使用 `mod test` 块。确保它们可以运行: ``` cargo test -p ``` ## 🚦 "绿灯"清单 在提交拉取请求 (PR) 之前,您 **必须** 运行本地 bouncer: 1. **代码检查**:make `clippy`(必须没有警告)。 2. **格式化**:`make fmt`(标准化样式)。 3. **大小检查**:`make build-wasm` - 使用 twiggy top 检查大小 `target/wasm32-unknown-unknown/release/zk_soroban.wasm`。 - **如果您的代码增加了 > 5KB 的大小,您的 PR 将需要优化审查**。 ## 📝 拉取请求模板 当您打开 PR 时,请使用提供的模板。简要说明您更改的 **数学逻辑**,如果适用,提供 **指令成本**(气体)。
标签:BN254, ElGamal, Poseidon, Rust, RWA, Stellar Protocol, WASM, ZK-SNARKs, 人工智能安全, 加密库, 区块链, 可视化界面, 合规性, 威胁情报, 安全协议, 开发者工具, 性能优化, 指令优化, 数学库, 智能合约, 检测绕过, 网络安全, 网络流量审计, 自动化攻击, 隐私交易, 隐私保护, 隐私币, 隐私资产, 隐私验证