用途:在 EVM 上构建隐私保护应用,涉及 Noir 工具链、模式选择、承诺-空值器流程、Solidity 验证器和前端证明。\n\n工具链:先装 nargo(Noir 编译器),再运行 bbup(Barretenberg 证明后端,自动匹配 nargo 版本)。注意 nargo prove/verify 已移除,证明与验证直接用 bb。\n\n构建流程:nargo compile → nargo execute → bb write_vk --oracle_hash keccak → bb write_solidity_verifier。本地可做 bb prove / bb verify 冒烟测试,所有命令需统一使用 --oracle_hash keccak 以避免序列化不匹配。生成的 HonkVerifier.sol 需单独部署,并把地址传入应用合约构造函数;其 ABI 为验证器接口的事实来源。EVM 版本需 cancun,Solidity >=0.8.21,注意 24KB 合约大小限制。\n\n模式选择:简单隐私证明只需私有输入、公共输出和验证器;需要在固定集合中匿名行动时用承诺-空值器模式,Merkle 树为匿名集,空值器防重复行为。匿名投票、隐私提款、空投等适用。\n\n注意事项:电路内哈希用 Poseidon(约600门)而非 SHA256(约3万门),Poseidon 需作为外部依赖引入,导入为 poseidon::poseidon::bn254::hash_2。Noir 1.0 公共输入语法为 name: pub Field。Nargo.toml 中 compiler_version 不接受 beta 字符串。若同一钱包既提交承诺又执行操作,链上可关联,隐私失效,需用新钱包加中继器或 ERC-4337 支付方付费。输入顺序在电路、证明和合约调用中必须一致。Poseidon 与 Poseidon2 不可混用。\n\n前端:NoirJS 加载电路产物并生成证明,需按 Vite、Next.js 等不同环境配置 WASM。\n\n限制:具体收费、价格与平台支持未在资料中提供,暂未说明。
noir
安全与审计
更新于 10-15 17:21