Jolt 已经完全集成了 Twist and Shout 内存检查参数,从而显著提升了性能,在 32 核 CPU 上实现了超过 100 万 RISC-V 周期/秒的速度,同时将证明大小降低到约 50 KB。这种集成还简化了代码库,并为未来的优化(例如流式证明器)铺平了道路,从而可以在资源受限的设备上进行证明,而无需复杂的递归。
经过六个月的工作,Jolt 现在完全集成了 Twist and Shout 内存检查参数。这解锁了:
Twist and Shout 为证明带来了规模经济。它们支付一小笔固定成本,该成本与证明的 RISC-V 周期数无关,以降低 每个周期 的证明成本。因此,更多周期意味着每个周期的证明器速度更快。换句话说,Jolt 的吞吐量随着更长的 traces 而提高。在实际证明工作负载的规模上——例如,消耗数亿 RISC-V 周期的以太坊区块——Jolt 以接近其最高速度运行。(我在下面包含了一个测量速度与周期数关系的图。)
这仅仅是个开始。除了正在进行的额外优化之外,Twist and Shout 还可以实现高效的“streaming prover”,这是我们的下一个主要实现目标。这意味着我们将能够在低于 2 GB 内存的情况下证明任意长度的执行过程, 无需递归。这将能够在像手机这样的资源受限设备上进行证明,并消除大多数 zkVM 今天使用的复杂的、递归繁重的堆栈来控制证明器空间。
Jolt 也远不太容易受到“ prover killers”的影响,这些 killers 会压垮其他 zkVM。例如,大数算术是运行在 31 位域上的 zkVM 的瓶颈:它们必须将大数值分解为字节,并逐字节相乘,因为两个 16 位数字的乘积已经溢出了 31 位域元素。Jolt 通过使用大素数域来避免这种开销。一般来说,Jolt 的证明器时间主要取决于总周期数,并且在相同长度的不同程序之间显示出最小的变化。执行哪些原始指令、触及多少内存或其他工作负载细节都无关紧要。
在底层,Jolt 避免了许多使其他 zkVM 速度慢且脆弱的机制:Jolt 不需要递归,不需要商多项式,不需要字节分解,不需要 grand products,不需要排列检查,不需要复杂的电路。相反,Jolt 建立在一个完全不同的基础上。它使用稀疏多项式、椭圆曲线承诺(目前)、sum-check protocol 和批量评估参数(也称为 lookups)。
此列表中最基本的组件是 sum-check protocol,这是一个简单的交互式证明,它是最快证明器 SNARK 的基础。即使你不关心 Twist、Shout 或 Jolt,它的效率优势也适用。这用更模块化、可分析和高性能的东西取代了 prevailing stack。Jolt 不是先前 zkVM 的增量演进:它是一种从根本上不同的设计。
今天,Jolt 证明器所做的工作比仅仅运行计算机程序而不进行正确性证明的工作少 100,000 倍。也就是说,证明 单个 RISC-V 周期在笔记本电脑上需要不到 100,000 个 CPU 周期。这就是我们所说的 prover work overhead。这意味着 Jolt 已达到我们用于跟踪 zkVM 进展的路线图上的速度第一阶段。其他项目的证明器开销仍然在 100 万左右,比 Jolt 的高一个数量级。
以下是另一种描述 Jolt 性能的方式:Jolt 证明器现在每个 RISC-V 周期执行不到 800 次域乘法。相比之下,应用于算术电路的 Plonk 证明器对每个门提交大约 8 个随机值,转化为每个门至少 800 次域乘法。这使得每个 RISC-V 周期的 Jolt 证明器比 每个门 的 Plonk 证明器更快。对于大多数应用来说,这意味着 Jolt 证明器比应用于手动优化电路的流行 SNARK 快得多。
为什么这是真的?因为像 Plonk 和 Groth16 这样的 SNARK 无法利用多个级别的重复结构。首先,当应用于具有内部结构的电路时,它们的证明器成本不会提高——它们在结构化电路上的速度与在任意电路上的速度一样慢。其次,在许多情况下,将计算编码为电路已经是一个错误。像 Shout 这样的批量评估参数则相反:它们利用相同函数的重复评估来显着降低证明器成本。而批量评估正是 VM 所做的:它们一遍又一遍地执行相同的小型原始指令集,每个周期一次。因此,虽然 VM 抽象引入了一些与手动优化电路相比的开销,但它施加的结构可以实现优化,从而弥补了这一点。
***
有关 Twist and Shout 及其对 SNARK 设计的影响的更多信息,请参阅最近在 a16z crypto summer research lab 上的演讲或在 Simons Institute Proofs workshop 上的演讲,敬请关注后续更新。
Markos Georghiades 是 a16z crypto 的工程实习生,专注于密码学和 Jolt 核心开发。他是滑铁卢大学的本科生,学习计算机科学和数学。 Justin Thaler 是 a16z 的研究合伙人,也是乔治城大学计算机科学系的副教授。他的研究兴趣包括可验证计算、复杂性理论和大规模数据集算法。 Andrew Tretyakov 是滑铁卢大学的学生,也是 a16z crypto 的密码学工程实习生。他为 Jolt zkVM 项目做出贡献,从事核心证明器组件、协议架构和访客程序优化方面的工作。 Julius Zhang 是 a16z crypto 的工程实习生,在那里他从事 Jolt 的工作。此前,他曾在斯坦福大学学习数学和计算机科学。 Michael Zhu 是 a16z crypto 的研究工程师,与研究团队合作编写开源代码,并帮助投资组合公司处理所有与智能合约相关的事宜。在加入 a16z crypto 之前,Michael 曾在 0x Labs 领导协议开发,设计智能合约以促进多个区块链上的点对点交易。在此之前,他曾在斯坦福大学学习,并获得了计算机科学学士和硕士学位。 内容仅代表所示日期的观点。这些材料中表达的任何预测、估计、预测、目标、前景和/或观点如有更改,恕不另行通知,并且可能与其他人的观点不同或相反。有关其他重要信息,请参阅 https://a16z.com/disclosures。
- 原文链接: a16zcrypto.com/posts/art...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!