原文作者:Frank,PANews
4 月 10 日,a16z Crypto 发布了名为 Jolt 的 zkEVM 解决方案,旨在加速和简化区块链扩展操作。Jolt 集成了 SNARK 零知识证明,为 EVM 兼容 Rollups 提供了框架,可以帮助开发人员创建基于 SNARK 的L2解决方案。该团队表示,与目前的 zkVM 相比,Jolt 的速度“快了两倍”。
由于 Jolt 的技术原理较为复杂,以下是关于可能涉及的几个技术名词关系的简单阐释:
zkSNARK 是一种强大的零知识证明原语,是构建 zkVM 和 zkEVM 的基础
zkVM 是一个通用的零知识虚拟机概念,支持任意指令集
zkEVM 是 zkVM 的一个特例,专门用于兼容 EVM
ZK Rollup 采用 zkVM 或 zkEVM 来提升以太坊的可扩展性,同时兼顾隐私性
Jolt 是什么?
Jolt 是一种新型的 SNARK 的解决方案,提供了一种更简洁,高效的方案来构建 zkVM(零知识虚拟机)。实际上,早在 2023 年 8 月,a16z crypto 就已经提出了名为 Lasso 和 Jolt 相关概念。在 SNARK 技术存在又慢又高昂的成本的背景下,这两项技术被提出。
其中 Lasso,是一种新的查找参数,可以显著降低证明者成本; Jolt,使用 Lasso 提供了一个新的框架,用于为所谓的 zkVM 和更广泛的前端设计 SNARK。它们共同提高了 SNARK 设计的性能、开发人员体验和可审核性,进而提高了 web3 中的构建。从而提升零知识证明在区块链领域的使用。
在理解 Jolt 之前,或许需要先了解一下 zkVM 和 zkEVM。
zkVM 是一个通用的概念,指零知识虚拟机。与 zkEVM 类似,zkVM 允许用高级语言如 C++或 Rust 编写程序,然后虚拟机把程序编译成某种中间表示(如电路或算术约束),再用 zkSNARK 等证明系统对中间表示的执行过程进行证明。相比 zkEVM,zkVM 不限于兼容 EVM,而是支持任意指令集。Jolt 就是一个针对 RISC-V 指令集的高性能 zkVM 实现。
我们可以将 zkVM 看作一个特殊的“黑盒子”,它可以在保护隐私的前提下,向外界证明自己确实按照预定的程序执行了计算。但传统的 zkVM 在生成这个证明的过程中需要进行大量繁琐的计算,导致性能非常低下。
Jolt 的核心创新是找到了一种更加高效的数学方法,来生成这个证明:
首先,Jolt 巧妙地将待证明的计算转化为一种特殊的多项式,我们姑且称之为“计算多项式”。这个多项式的特点是,只有当黑盒子确实正确执行了计算,它的值才会等于零。
为了证明“计算多项式”的值等于零,Jolt 使用了一种被称为“sumcheck”的交互式协议。这个协议可以在较短的时间内,让验证者确信多项式值为零,而不需要实际计算整个多项式。这有点类似老师只检查学生的几道题,就能判断整份试卷是否正确。
Jolt 的技术优势
关于 Jolt 的技术原理非常复杂,简单来说。在区块链网络的发展过程中,zkVM 是一种在提升区块链网络拓展性的关键技术,能够在保障隐私的情况下提供有效的证明。Vitalik 在最近的香港Web3嘉年华的主题演讲中,就围绕 zkSNARK 技术进行了详细的论述。Vitalik 表示:“寻找 ZKSNARKS 在隐私方面非常有用,在可扩展性方面也非常有用。”
但证明生成的速度和计算开销一直是 zkSNARK 技术实用化的一大挑战,也是近年来学术界和业界重点攻关的方向。传统的 zkSNARK 方案,如 Pinocchio 和 Groth 16 ,在证明较为复杂的计算逻辑时,证明生成的时间可能会长达几个小时甚至几天,而且需要消耗大量的内存和存储资源。这种性能瓶颈严重制约了 zkSNARK 在许多实际场景下的应用。
而如果想要让区块链实现大规模应用,达到实时验证的效果。提升 zkSNARK 的性能是非常关键的一步。
具体来说,zkSNARK 的证明生成过程涉及复杂的密码学算法,如椭圆曲线配对、多项式插值等,这些操作对计算资源的消耗非常大。尤其是当被证明的计算电路规模较大时,证明生成的计算复杂度会呈指数级上升。
据a16z Crypto 表示,在 CPU 上,初始 Jolt 实现大约比 RISC Zero 快 6 倍,比最近发布的 SP 1 快 2 倍,并且未来几周内将 Jolt 的速度提高约 1.5 倍。
Jolt 目前的速度已经比现有的 zkVM 快 2 倍以上,但仍有很大的优化空间。
Jolt 还巧妙地利用多项式的某些代数性质,实现了更高效的多项式承诺方案。这进一步减少了证明的大小和验证的时间。
Jolt 可能带来的变化
从工程角度来说,Jolt 采用了一系列优化手段,例如更紧凑的电路设计、更高效的流水线、更充分的并行化等等,最大限度地挖掘硬件的算力。
假设你是一名Web3开发者,想要在以太坊上部署一款链上扑克游戏。这个游戏需要在链上洗牌、发牌、比较牌面大小等,每个操作都需要通过 zkVM 电路来实现隐私保护和可验证性。
如果你使用现有的 zkVM 方案如 ZoKrates 或 bellman,构建这样一个电路可能需要几个小时甚至几天的时间。因为当前的 zkVM 性能还较为低下,生成复杂电路的零知识证明需要大量的计算资源和时间开销。这意味着开发和测试周期会非常漫长。
而如果你使用 Jolt 来构建同样的电路,情况会发生显著变化。根据 Jolt 团队的测试,当前的 Jolt 实现生成证明的速度已经比主流的 zkVM 方案快 2-5 倍。这意味着,如果原来生成证明需要 10 个小时,现在可能只需要 2-5 个小时。
总的来说,Jolt 所带来的 2-5 倍性能提升,意味着 zkVM 技术的可用性和易用性得到了大幅改善。这将显著降低Web3开发者的门槛,缩短应用的开发周期,同时为终端用户带来更好的使用体验。从更长远来看,Jolt 有望加速 zkVM 技术的大规模应用,让更多的隐私保护和可验证计算能力惠及每一个Web3用户。
当然,Jolt 目前还处于发展的早期阶段, 2-5 倍的性能提升只是一个开始。随着 Jolt 技术的不断迭代优化,zkVM 的性能还将得到进一步的突破,最终为实现Web3的大规模应用铺平道路。