下一步计划与已知问题

这篇文章概述了一个项目在零知识证明(ZK)电路集成、可信执行环境(TEE)生产就绪、应用层开发以及测试方面的下一步计划和已知问题。主要障碍包括Poseidon哈希函数在不同实现间的不一致、Solidity编译器栈深度限制以及noir-rs库的集成问题。

后续步骤与已知问题

ZK 电路集成(主要障碍)

Noir ZK 电路存在于 (circuits/),但尚未集成到实时协议中。有三个问题阻碍了集成:

问题 1:Poseidon 哈希不一致

问题:Poseidon2 的输出在 Noir、Rust (zkhash) 和 Solidity 实现之间存在差异。已测试了多个实现(TaceoLabs、Aztec、HorizenLabs);没有一个能在所有三种语言中产生一致的输出。许多替代实现缺乏许可证或目标领域不同(例如,Goldilocks)。

建议修复:迁移到 Poseidon 1,使用已知兼容的实现:

平台 实现 许可证 状态
Rust arnaucube/poseidon-rs Apache-2.0 未开始
Solidity iden3 circomlibjs poseidon_gencontract.js Apache-2.0/MIT 初步调查
Noir noir-lang/poseidon Apache-2.0 从 Poseidon2 切换到 Poseidon 1 API

arnaucube/poseidon-rs 和 iden3 的生成器已知兼容。Noir 的兼容性需要验证。

步骤

  • crates/common/ 中用 poseidon-rs 替换 zkhash
  • 使用 iden3 生成 Solidity 合约,替换 Poseidon2T2.sol
  • 更新 circuits/lib/src/merkle.nr 以使用 Poseidon 1 API
  • 添加跨语言测试向量(使用现有的 CLF 基础设施)

问题 2:Solidity 堆栈过深 (Stack-Too-Deep)

问题:生成的 UltraHonk 验证器合约在使用 Foundry 编译时超出了 Solidity 的堆栈限制。同样的合约在 Remix IDE 中可以编译(不同的优化器设置),这表明是工具配置问题。

步骤

  • 调试 Foundry 编译器设置(via-ir 模式、优化器运行)与 Remix 默认设置的差异
  • 调查 Poseidon 1 迁移是否能降低验证器复杂性
  • 考虑使用 assembly (memory-safe) 注解来减少堆栈使用
  • 如果验证器大小仍然有问题,评估证明聚合策略

问题 3:noir-rs 集成

问题zkmopro/noir-rs 可以独立用于证明生成和验证,但未作为 ProofClient 实现与 TEE 一起连接到 crate 工作区。

步骤

  • 实现一个包装 noir-rs 并符合 ProofClient trait 的 ZkProofClient
  • 连接到 UserApp<P>,以便相同的应用程序代码适用于任一后端
  • 调查 Wasm 可移植性以支持基于浏览器的证明

TEE 生产就绪度

TEE 子系统在模拟模式下工作,但尚未在真实硬件上测试:

  • 使用真实 SGX 硬件测试(Gramine 模式而非模拟)
  • 实现真实的 DCAP quote 验证(目前为模拟解码)
  • 密钥轮换和恢复程序
  • 飞地边界的安全审计

应用层

  • CLI:目前没有 CLI;系统仅作为库存在。一个用于用户操作(设置、支付、结算)的 CLI 将使测试和演示变得实用。
  • HTTP 402 流程:Coinbase x402 支付协议集成超出了当前阶段的范围。

测试差距

领域 状态 备注
正常路径(设置、支付、结算、最终确定) 已测试 crates/user/tests/e2e_integration.rs 中的端到端测试 (E2E)
争议流程 未进行端到端测试 (E2E) 合约单元测试已存在,但无集成测试
多通道 epoch 聚合 未测试 只测试了单个申领程序
结算中的错误/边界情况 未测试 仅涵盖正常路径
  • 原文链接: github.com/ConorNethermi...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
ConorNethermind
ConorNethermind
江湖只有他的大名,没有他的介绍。