atoranzo/ZK-SSL-ZK-Sovereign-Settlement-Layer-
GitHub: atoranzo/ZK-SSL-ZK-Sovereign-Settlement-Layer-
该项目在五种零知识证明范式下实现了同一套主权结算电路并进行横向性能对比,最终选用无需可信设置的 STARK 方案。
Stars: 0 | Forks: 0
# ZK-SSL — 具备隐私保护与可证明合规性的结算层
一个转账隐私、合规性被**通过密码学证明**,且**无需信任任何 setup ceremony** 的结算系统。
还有支撑其设计的比较研究:**同一个电路在五种证明范式下实现**,并在相同条件下进行了测量。
```
let layer = SovereignLayer::open("./ledger", custodios, gobernanza, limite, tope, max_cuentas)?;
let view = layer.account_view(alice)?;
let nullifier = client::compute_nullifier(clave, view.nonce); // en el cliente
let m = layer.transfer_materials(alice, bob, 250_000, nullifier)?;
let s = client::prove_transfer(&m, clave)?; // la clave NO sale
layer.apply(&s, alice, bob, 250_000)?;
```
## ⚠️ 首先请注意:运营方是一个受信任的中间人
这是一个**单节点**系统。运营该节点的人:
- **能看到所有余额。** 隐私仅针对那些只能看到证明的第三方,而不是针对维护状态的人。
- **决定操作顺序并可能进行审查。**
这两点都需要分布式共识,而该共识**尚未实现**,且属于另一领域的难题。
不过,已经堵住的漏洞是:**无法秘密重写历史记录**(状态转换的链式记录),无法凭空创造资金,无法盗用他人账户资金,也无法在损坏的状态上操作。
**这是什么**:一个证明,说明一个主权结算的密码学属性是可构建且可测量的。
**这不是什么**:一个去中心化层。
## 实测数据
所有数据均在 release 模式下、同一台机器上测得。单次执行:仅用于比较数量级,**不能作为基准测试**。
| 操作 | 生成 | 验证 | 证明大小 |
|---|---|---|---|
| **启动** | **0.67 ms** | — | — |
| 发行 (2-of-N 托管人) | ~105 ms | ~2 ms | 57.342 B |
| 转账 | ~620 ms | ~4 ms | 61.966 B |
| 销毁 | ~110 ms | ~2 ms | 54.924 B |
| 审计 (区间) | ~250 ms | ~1.5 ms | 48.782 B |
**验证成本仅为生成的 0.5-0.8%。** 启动过程不生成密钥:没有 ceremony,也没有需要销毁的秘密。
**量化限制**:一千笔转账需要约 620 秒的证明生成时间,以及累计 **59.1 MB** 的大小。
## 五种范式对比
| | Groth16 | Halo2/IPA | **STARK/FRI** | PLONK/KZG |
|---|---|---|---|---|
| Ceremony | 针对每个电路 | 无 | **无** | 通用 |
| Setup | 438 ms | 16.3 s | **无** | 26.3 s + 12.8 s |
| 生成 | 422 ms | 4.86 s | **39 ms** | 6.85 s |
| 验证 | 5 ms | 91 ms | **1 ms** | 8 ms |
| 大小 | **192 B** | 4.096 B | 36.7 KB | 1.008 B |
| 抗量子 | 否 | 否 | **是** | 否 |
**最终选择了 STARK,放弃了 Groth16**,尽管后者速度更快且生成的证明体积小了 320 倍。原因是:Groth16 强制要求进行 ceremony,如果参与者串通,他们就可以**在不留痕迹的情况下凭空创造资金**。这是整个项目中唯一一项违背数据指标做出的决定。
**Nova/folding** 单独进行了测量(每笔交易约 250 ms,恒定),并在此层中被弃用:它使用曲线并且需要 ceremony。
## 阅读顺序
| 如果你是… | 请从 |
|---|---|
| 只有 5 分钟的人 | [`RESUMEN_EJECUTIVO.md`](./RESUMEN_EJECUTIVO.md) |
| **安全审计人员** | [`AUDITORIA.md`](./AUDITORIA.md) |
| 对技术对比感兴趣 | [`FIVE_BACKENDS.md`](./FIVE_BACKENDS.md) |
| 对架构设计感兴趣 | [`ARQUITECTURA.md`](./ARQUITECTURA.md) |
| 对设计理念感兴趣 | [`PRINCIPIOS.md`](./PRINCIPIOS.md) |
| **对其愿景及影响感兴趣** | [`VISION.md`](./VISION.md) |
| 想在不具备技术背景的情况下了解 | [`doc/IDEA_CENTRAL.md`](./doc/IDEA_CENTRAL.md) |
| 想知道它相比现有方案有何突破 | [`doc/APORTACION.md`](./doc/APORTACION.md) |
| 对深远影响感兴趣 | [`doc/CONSECUENCIAS.md`](./doc/CONSECUENCIAS.md) |
`AUDITORIA.md` 包含一个专门列出**作者信心不足之处**的章节。如果你打算审查代码并试图破解它,请从这里开始。
## 复现
需要 Rust stable 版本。不需要外部安装程序或额外的 toolchain。
```
cargo test -p zk-ssl --release # la capa: 131 tests
cargo test -p stark-experiment --release # los ocho circuitos
cargo test -p zk-ssl --release metrics -- --nocapture
```
完整的比较测试:
```
cargo test -p zk-core --release performance -- --nocapture
cargo test -p halo2-experiment --release real_proof -- --nocapture
cargo test -p plonk-experiment --release performance -- --nocapture
cargo test -p nova-experiment --release --features test-setup -- --nocapture
```
**电路测试最好也在 debug 模式下运行**:winterfell 仅在该模式下生成时验证约束,并提供确切的失败索引和行号。
## 系统的保障机制
在不泄露身份、余额或金额的情况下:
| 攻击途径 | 防护措施 |
|---|---|
| 转账金额超过扣除额 | 守恒定律 (复式记账法) |
| 带余额开户 | 开户始终从零开始 |
| 未经授权的发行 | 电路中证明的**双托管人**机制 |
| 隐蔽发行 | 电路中锁定的公开供应量 |
| 超出发行上限 | 账本中不可变的上限 |
| 双花 | 可证明的非成员性 |
| 非账户持有者消费 | 支出权限验证 |
| **账户冻结时消费 | 冻结树的非成员性证明 |
| 重放有效操作 | 根哈希链接 |
| 在损坏的状态上操作 | 启动时的完整性验证 |
| **重写历史记录** | 链式状态转换记录 |
关于合规性:具备三种模式的**选择性披露** — 精确余额、最低准备金,以及区间(“我的资产在 X 和 Y 之间”)—。持有者生成证明;监管者在**无需访问账本的情况下**进行验证。
## 八项发现
这些发现在任何对比范式的材料中都没有出现过。它们都是在实际构建过程中发现的。详见 [`FIVE_BACKENDS.md`](./FIVE_BACKENDS.md):
1. **AIR 缺少复制约束**,这在移植状态更新时打开了一个隐蔽的漏洞。
2. **Goldilocks 域对身份标识来说太窄了**:64 位在 2³² 时就会发生碰撞。
3. 如果没有域扩展,基于 Goldilocks 的 **STARK 其安全性上限仅为 63 位**。
4. **推测安全性与可证明安全性**之间的鸿沟:127 位安全性与 29-63 位安全性并存。
5. **PLONK-KZG 是四个基于曲线的生成器中最慢的一个**。
6. 六个库中只有**两个能够抵御代码中的不安全使用**。
7. **Rust 中的 PLONK-KZG 生态是封闭的垂直技术栈**:探索了六条路径,五条走不通。
8. **zkVM 在同等条件下无法进行对比**,衡量它的标准是 3 个依赖项与 349 个依赖项的对比。
## 状态与局限性
**未经第三方审计。** 再多的自测也无法替代它。
按重要性排序,目前缺失的部分:
- **分布式共识。** 没有它,运营方就能看到余额并进行审查。
- **外部审计。**
- 将证明委托给第三方(在电路中验证签名)。
- 冻结状态的过期策略;记录在案的正当理由。
其他所有缺失的部分都在
[`AUDITORIA.md`](./AUDITORIA.md) 的第 4 节中列出。
## 许可证
MIT 或 Apache-2.0,任选其一。
标签:Layer 2, Rust, 区块链, 可视化界面, 密码学, 手动系统调用, 结算层, 网络流量审计, 通知系统, 零知识证明