a16z:分阶段实现安全高效 zkVM 的开发者指南
原文来自 a16z crypto
编译|Odaily星球日报 Golem(@web3_golem)
零知识虚拟机(zkVM)被誉为“使 SNARK 大众化”的关键工具,允许任何人(即使没有专业的 SNARK 知识)证明其程序在给定输入下的正确执行。然而,尽管 zkVM 在开发体验上具备显著优势,其在安全性和性能方面仍面临巨大挑战。为了兑现 zkVM 的愿景,设计人员需要克服这些障碍。本文详细探讨了 zkVM 开发的阶段性目标,预计完成这些目标需要数年时间。
面临的挑战
在安全性方面,zkVM 作为高度复杂的软件项目,仍然存在大量漏洞。在性能方面,生成证明的速度可能比本地运行慢数十万倍,导致大多数应用无法在现实中部署。
尽管如此,许多区块链公司仍将 zkVM 描绘为可立即部署的技术。一些项目甚至支付高昂的计算成本来生成链上活动的证明。但因为 zkVM 尚未完善,这种方式仅是假装系统受到 SNARK 保护,实际上要么通过许可机制保护,要么更糟——容易受到攻击。
距离实现安全且高性能的 zkVM 还有数年时间。本文提出了一系列分阶段的目标,以帮助社区消除炒作并专注于真正的进步。
安全阶段
基于 SNARK 的 zkVM 通常包含两个主要组件:
- 多项式交互式 Oracle 证明 (PIOP):用于证明关于多项式的陈述。
- 多项式承诺方案 (PCS):确保证明者不能对多项式评估撒谎。
zkVM 将有效的执行轨迹编码为约束系统,并应用 SNARK 来证明这些约束得到满足。
确保 zkVM 系统无错误的唯一方法是形式化验证。以下是安全阶段的细分:
安全阶段 1:正确的协议
- PIOP 可靠性的正式验证证明;
- PCS 在某些加密假设或理想模型下具有约束力的形式验证证明;
- 如果使用 Fiat-Shamir,则通过结合 PIOP 和 PCS 获得的简洁论证在随机预言模型中是安全的正式验证证明;
- PIOP 所应用的约束系统等同于 VM 的语义的形式验证证明;
- 将以上所有部分全面“粘合”成一个单一的、经过形式化验证的安全 SNARK 证明。
递归警告:如果 zkVM 使用递归,则必须验证涉及的每个 PIOP、承诺方案和约束系统。
安全阶段 2:正确的验证器实现
形式化验证证明 zkVM 验证器的实际实现与第 1 阶段验证的协议相匹配。这确保实现的协议不仅是纸面上的设计,而是合理的。
安全阶段 3:正确的证明器实现
zkVM 证明器的实际实现正确生成了第 1 阶段和第 2 阶段验证的证明系统的证明。这确保了完整性,即任何使用 zkVM 的系统都不会被无法证明的语句“卡住”。
预计时间表
- 第 1 阶段进展:明年可能取得逐步成就,但至少两年内没有 zkVM 能完全满足第 1 阶段的要求;
- 第 2 和第 3 阶段:预计任何 zkVM 在不到四年内都无法达到第 3 阶段。
关键注意事项:Fiat-Shamir 安全性与字节码验证
围绕 Fiat-Shamir 转换的安全性存在未解决的研究问题。此外,字节码本身的缺陷可能导致证明的价值有限。
后量子时代的安全性
在未来五年内,量子计算机不会构成严重威胁。因此,当前的重点应放在满足本文讨论的安全性和性能阶段。
zkVM 的性能现状
目前,zkVM 证明器产生的开销接近原生执行成本的 100 万倍。这意味着如果程序需要 X 个周期运行,证明其正确执行的成本约为 X 乘以 100 万个 CPU 周期。
流行的叙事通常掩盖了这种巨大的开销。例如:
- “为所有以太坊主网生成证明每年的成本不到一百万美元。”
- “我们几乎可以实时生成以太坊区块证明。”
- “我们的最新 zkVM 比其前身快 1000 倍。”
虽然这些说法技术上准确,但缺乏背景信息可能导致误导。我们需要明确基准,才能衡量真正的性能改进。
性能阶段
以下是 5 个性能实现的里程碑:
速度阶段 1
单线程证明必须比本机执行慢最多十万倍。
速度阶段 2
单线程证明必须比本机执行慢最多一万倍。
速度阶段 3
使用自动合成和形式验证的预编译实现低于 1000 倍的证明开销。
内存阶段 1
证明器所需的内存少于 2 GB。
内存阶段 2
内存使用量减少到 200 MB。
预计时间表
预计少数 zkVM 将在今年晚些时候实现速度阶段 1 和内存阶段 1。未来两年内可能实现速度阶段 2,而剩余阶段需要更长时间。
总结
尽管 zkVM 在安全性和性能方面仍处于起步阶段,但通过明确的阶段性目标,我们可以提供一条清晰的发展路线图。实现 zkVM 的愿景需要时间和持续的努力,但它终将带来革命性的变化。