RISC Zero、Noir 和 Circom | 为 Stellar 上的游戏选择合适的 ZK 技术栈

RISC Zero、Noir 和 Circom 都允许你证明关于隐藏数据的某些事情,但它们在表达逻辑的方式、可以实际证明的内容以及在链上验证结果的难易程度上存在显著差异。
tl;dr RISC Zero 用于在远程虚拟机上执行代码,然后证明它已正确执行。Noir 是一种漂亮的基于 Rust 的电路编程语言,其验证器正在开发中。Circom 是较低级别的基于约束的电路,你需要一个数学学位才能理解。
一个类比和半有用的心理模型是,RISC Zero 就像 Soroban VM,Noir 是我们编写智能合约的 Rust 代码,而 Circom 是它编译成的 WebAssembly。
Circom 代表了最传统的方法。你将你的游戏逻辑描述为一个算术约束系统(R1CS),并生成简洁的 Groth16 证明。当你想证明的规则是紧凑的和数学的 commit reveal 机制、隐藏的移动、哈希原像或小的规则检查时,这个模型非常有效。从 Stellar 的角度来看,这是有吸引力的,因为 Groth16 验证在链上已经被充分理解并且效率很高。缺点是电路读起来更像复杂的数学方程式,而不是高级编码语言,看看 Github 上的 Circom 电路示例,你就会明白我的意思。
Noir 位于更高的层次。你无需手动考虑约束,而是编写一个电路风格的程序,该程序编译成中间表示,并由 UltraHonk 等后端证明。对于熟悉 Rust 的开发人员来说,这是一个重大改进,因为 Noir 看起来和感觉都像 Rust。有一个用于你的 cargo 的 nargo,它是可读的,并且开箱即用。但是,今天 Stellar 开发人员的主要限制是验证成熟度。UltraHonk 风格的证明比 Groth16 更难验证,并且 Soroban 就绪的验证器仍然是一个活跃的工作领域。如果你的设计自然地适合电路,并且你对围绕当前验证器约束或未来升级进行架构感到满意,那么 Noir 是一个绝佳的选择。
RISC Zero 采用了一种根本不同的方法。你不是编写电路,而是编写在零知识虚拟机中运行的普通程序代码,并且该证明证明该程序已正确执行。对于具有完整确定性模拟、重放验证、复杂分支逻辑和链上不可能的大型计算的游戏,此模型特别强大。从开发人员生产力的角度来看,这通常是构建雄心勃勃的游戏玩法的最快方法。代价是证明开销,zkVM 证明比小型算术电路更重。你不会在浏览器中执行此操作,并且可能需要运行一个 docker 容器来生成证明。RISC Zero 可以配置为输出 Groth16 证明,并且 Nethermind 提供了一个完全可用的验证器。
没有普遍正确的选择。最好的选择是与你的游戏逻辑的形状和你想展示的保证相匹配的选择。
- 原文链接: x.com/james_bachini/stat...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!