什么是 Zero Knowledge VM (zkVM)?
Zero Knowledge VM (zkVM) 是一种虚拟机,可以运行代码并输出一个证明,证明运行是正确的,同时不泄露输入。把它想象成一位裁判,在不公开战术的情况下确认比分。结果相同,但泄露的细节更少。
“A zkVM 使一切都匿名。”并非如此。它证明执行是正确的。哪些内容保持私密由应用决定,而不是由机器强制。
Zero Knowledge VM (zkVM) 如何工作
想象一个程序在链下运行,然后在链上发送一个小的数学凭证,表明“这项工作已正确完成”。下面是简要流程。
- 步骤 1: 开发者在 Zero Knowledge VM (zkVM) 中编写或编译要运行的代码。
- 步骤 2: 程序在链下运行并生成一个证明,例如证明某笔交易定价正确而不显示交易者的输入。
- 步骤 3: 该证明连同最少量的数据一起发送到链上的验证者。
- 步骤 4: 验证者快速核验证明并记录是否通过。
- 步骤 5: 其他合约和用户无需重新进行大量计算就可以信任结果。
底层依靠 零知识证明 来为运行背书。没错,用数学作见证。
为什么 Zero Knowledge VM (zkVM) 很重要
这会改变成本模型:大量计算在链下进行,链上只做小规模校验。
- 好处: 速度和费用会有所改善,因为验证成本低,而繁重的工作在别处完成。
- 视角: 可以在隐藏敏感数据的同时,对结果保持 透明度。
- 适用场景: 可望在 DeFi、游戏、身份等领域看到,那里对 隐私 和可验证数学都有需求。
在比较 zkVM 时,先问两个问题:它们支持哪种语言,以及验证者在目标链上的运行速度如何。
Zero Knowledge VM (zkVM) 的关键特性
以下是人们实际会检查的特性:
- 通用:运行多种程序,而不是单一用途的电路。
- 可移植:证明可以由小型 智能合约 在不同链上验证。
- 选择性:应用可以选择哪些输入保持私密,哪些输出公开。
- 高效:即使原始运行很繁重,验证证明依然很快。
- 可组合:证明可以批量或嵌套处理,从而让系统在扩展时产生更少噪音。
变体
并非所有 zkVM 都相同。常见类型包括:
- EVM:旨在运行类似 Solidity 的逻辑并证明其正确,便于直接复用现有应用。
- LLVM:将像 Rust 或 C 这样的通用语言编译为可证明的形式。
- Rollup:用于有效性汇总层,在那里证明会发布到基础链上。
- Sovereign:在自身链上验证,同时将证明桥接到外部链。
验证开销低,但生成证明可能很繁重且耗时。这种权衡就是要点所在。
示例
一个借贷应用在 zkVM 中为抵押品定价,然后只在链上发布证明,这样清算可以公平触发而不暴露借款人的数据。
趣闻
这一核心想法可以追溯到 80 年代的研究,密码学家证明了可以在不揭示秘密的情况下证明自己知道它。只是后来加密社群把它变得更流行。
总结
一句话:Zero Knowledge VM (zkVM) 是一种证明型计算机,让链能快速核验工作,同时将敏感输入隐藏。
