Cover photo

推出 SP1 Reth:使用 SP1 构建的高性能 type-1 zkEVM

      我们很高兴地宣布推出SP1 Reth:一个开源的概念验证项目,展示了任何Rollup如何利用SP1构建一个高性能(type-1,字节码兼容)的zkEVM,且只需不到2000行的可维护Rust代码。SP1 Reth是一个早期的POC,但已经通过利用SP1的开源、可定制的预编译系统实现了令人难以置信的性能(平均以太坊交易的证明成本约为0.01-0.02美元),未来还将有大幅改进。SP1 Reth预示了一个未来场景:所有Rollup都将成为ZK Rollup,借助 Rust 编写的可维护软件来施展ZKPs 的魔力。

EVM rollups的未来在于使用Rust编写、易于维护的zkEVM

      乐观型Rollup面临着诸多挑战:包括长达7天的提现等待时间、复杂的互操作性问题,以及在某些情况下依赖于生产环境中使用多重签名而非欺诈证明机制。而ZK Rollup则凭借密码学的确证性,为这些问题提供了解决方案,从而被视为以太坊扩容的终极方案。然而,当前构建一个zkEVM需要一支具备自定制ZK堆栈专业知识的专门团队投入漫长且昂贵的开发周期。

      这个复杂的过程就是我们构建 SP1 的原因:一个 100% 开源、可定制的 zkVM,其性能可与定制电路相媲美。借助 SP1,任何 rollup 团队都可以使用 Rust 构建 zkEVM,该 zkEVM 重用现有开源库和节点软件中的组件,其性能足以满足实际使用。

      SP1 Reth 概念验证利用了开源以太坊生态系统中现有的组件(Reth、Revm、Alloy、Zeth),代码量不到 2000 行,生成了对完整以太坊区块执行的 ZKP(由 SP1 证明)。这种方法相对于使用自定义电路构建的 zkEVM 更具有显著优势。

post image

      得益于代码复用,SP1 Reth在可维护性和安全性方面远胜于定制电路,其审计面更小。使用普通代码使得任何开发者在新增预编译或进行其他调整时都能轻松自定义zkEVM。最后,与定制电路相比,SP1 Reth的开发速度提升了100倍,并且无需具备特定专业知识。

利用 SP1 的开源、可定制预编译层实现了最先进的性能

      SP1 是 100%开源且完全可定制的,具有“预编译”系统,可以加速几乎任何性能瓶颈,而无需太多额外的递归开销。该预编译系统对于实现 SP1 Reth 的最先进性能至关重要。

SP1 Reth 在典型的以太坊交易中实现了 0.01-0.02 美元的证明成本

      我们在一系列以太坊区块上对 SP1 Reth 的性能进行基准测试,显示了证明成本的最新结果:典型以太坊区块中每笔交易的平均证明成本为 0.01-0.02 美元。 Rollups 已经向以太坊支付了 0.10-0.25 美元的 L2 交易调用数据费用,这使得 ZKP 交易执行的 0.02 美元成本与 DA 成本相比可以忽略不计,并且对于当今的大多数 L2 来说非常实用。

      我们的基准测试在一台配备64个CPU和512GB内存的AWS单机上测量了端到端的证明时间。成本基于AWS预留定价计算得出。在实际生产环境中,通过集群间的并行证明,延迟可以显著降低。详细方法论请参见附录。

注:由于SP1仍在开发中,目前的证明时间仅为粗略预览,随着进一步的改进(包括针对各种操作添加易于集成的预编译),证明时间有望大幅缩短。此外,上述成本并未计入递归时间,据估计递归时间仅占总成本的一小部分。
注:由于SP1仍在开发中,目前的证明时间仅为粗略预览,随着进一步的改进(包括针对各种操作添加易于集成的预编译),证明时间有望大幅缩短。此外,上述成本并未计入递归时间,据估计递归时间仅占总成本的一小部分。

      近期,Polygon Zero 宣布了一款与type-1 兼容的 zkEVM,采用定制 Plonky2 电路,每个区块的证明成本为 0.2美元-0.5美元(即每笔交易约为 0.002美元 至 0.003美元)。这一基准数据表明,凭借 100% 开源且可定制的 zkVM(如 SP1),使用通用编程语言编写的 zkEVM 实现的证明成本已接近基于定制电路方法的成本(当前两者之比约为 5-6 倍)。

关键洞见:利用预编译实现尖端性能

      先前的通用型 zkVM 在验证 zkEVM 程序时往往需要庞大的集群,每个区块的计算成本约为 10美元-20美元。而 SP1 Reth 利用 SP1 的预编译系统,实现了成本降低一个数量级,使得用 Rust 编写的 zkEVM 生成证明变得切实可行。

      SP1 100% 开源且可定制的预编译系统是 SP1 Reth 能够与定制电路性能竞争的关键原因。关键洞见在于:验证以太坊区块执行过程中,大部分时间都耗费在诸如哈希函数或签名验证等重复且昂贵的密码学操作上。得益于 SP1 的多表、以预编译为中心的架构,这些操作对应的“预编译”成本与电路中的成本极为相似。由于整体成本主要由这些预编译操作决定,zkVM 的额外开销实际上变得微不足道,这就是所谓的“二八定律”在发挥作用。

      SP1 Reth 当前利用 SP1 提供的以下预编译功能:keccak、secp256k1 和 sha256。但因 SP1 完全开源且可定制,存在一条明确路径进一步降低证明成本,即其他性能瓶颈也可通过预编译得以解决,包括大整数算术等更多操作。如果您有意成为开源贡献者并助力我们达成这一使命,敬请查看 SP1 当前在 GitHub 上的问题列表

即将到来的多个数量级性能提升

      SP1 Reth 作为一款简单的概念验证项目,仅展示了 SP1 所能实现的可能性冰山一角。我们对即将实现的多个数量级的性能提升充满期待。

预编译 BigInt:以太坊采用 256 位算术,导致大量 zkVM 循环用于 BigInt 操作。在 SP1 中添加 BigInt 预编译是一项简单直接的工作,能够有效消除这一性能瓶颈。

优化 Serde/Deserde:目前,许多 zkVM 循环消耗在围绕输入序列化与反序列化的内存操作上。理论上可行的做法是采用更为高效的零拷贝 Serde/Deserde 库,以显著减少循环次数并提升性能。

Succinct 证明网络上的专用硬件:Succinct 证明网络将为顶尖硬件团队提供竞争平台,通过利用定制硬件在证明生成成本上一决高下,从而促使成本再降低 10 到 100 倍。

使用 SP1 Reth 或 SP1 构建

      SP1 Reth 的代码可以在以下链接找到: https://github.com/succinctlabs/sp1-reth,而SP1 的代码可以在以下链接找到:https://github.com/succinctlabs/sp1. 请注意SP1 和 SP1 Reth 目前处于 alpha 阶段,不适用于生产环境。立即开始使用 SP1 进行构建:https://succinctlabs.github.io/sp1/

为 SP1 做贡献:如果您有兴趣为 SP1 本身做贡献,请查看 Github 仓库中的开放问题列表! 如果您是一个 Rollup 团队,有兴趣使用 SP1 进行构建或扩展 SP1 Reth,请通过填写此表格与我们联系。

致谢

      SP1 Reth 有效地整合了以太坊生态系统中大量优质且开源的技术成果,包括 Reth、Revm、Alloy 以及 Zeth。具体而言,SP1 Reth 融合了 Reth 和 Revm 的核心执行基础模块、Alloy 提供的 RPC 类型定义,以及一个 MPT(Merkle Patricia Trie)库。在执行机制方面,SP1 Reth 从 Zeth(一个基于 Risc0 的 zkVM 构建的 zkEVM)中汲取了灵感。此外,我们还应提及 Polygon Zero 的 plonky2 zkEVM,它与type-1兼容且采用 plonky2 电路技术。

附录

post image

基准测试方法:

     基准测试代码运行自sp1-reth仓库:https://github.com/succinctlabs/sp1-reth。 有关如何运行基准测试的详细信息,请运行README中的命令。我们使用Poseidon哈希函数和2^19的分片大小运行SP1。基准测试在一台AWS i4g.16xlarge Linux机器上运行,该机器配备NVME磁盘IO、64个vCPU和512GB RAM,预留价格为每小时2.286美元,现货价格为每小时1.928美元。我们使用预留价格计算证明成本。端到端证明时间不包括获取见证人或运行时执行时间,因为这是单线程的,在生产环境中将在一台单独的、价格低廉的机器上使用单个CPU运行。

注意:由于zkVM性能的复杂性、多维性(包括硬件、单节点与多节点性能、内存使用、递归成本、哈希函数选择等因素),这些基准测试仅呈现了一个简化的性能视图。尽管很难用一个基准测试捕捉到所有细微差别,但我们尽力提供一个智力上诚实的成本评估。另外,由于SP1仍在开发中,性能数据并非最终结果,预计将随着时间的推移而改善。