2024-09-23
主流ZKVM性能测试报告
主流ZKVM性能测试报告
作者:miles 来源:X,@Miles082510
测试对象
SP1 是一个高性能的开源 zkVM,用于验证任意 Rust(或任何 LLVM 编译的语言)程序的执行。SP1 利用 Plonky3,支持递归证明并支持各种加密算法,包括基于 ECC 的算法,如 Groth16。
RISC0 zkVM 允许证明任意 Rust 代码的正确执行。它基于 RISC-V 架构构建,本质上适用于实现标准加密哈希函数,例如 SHA-256 和 ECDSA。RISC0 采用 STARK,提供 98 位的安全级别。由于它与 LLVM 和 WASM 兼容,它支持多种编程语言,包括 C 和 Rust。
Nexus 是一个用 Rust 编写的模块化、可扩展、开源、高度并行化、验证者优化且对贡献者友好的 zkVM。它侧重于性能和安全性,使用 Nova 折叠方案,该方案对递归证明特别有效。Nexus 还支持预编译和定向编译,除了 Rust 之外,它还提供 C 支持。
ZkMIPS 是基于 Plonky2 和 MIPS 微架构的通用可验证计算基础设施,旨在赋能以太坊作为全球结算层。它也可以运行任意 Rust 代码。值得注意的是,zkMIPS 是此列表中唯一使用 MIPS 操作码集的 zkVM。
ZkWASM 遵循并支持未经修改的标准 WASM 字节码规范。由于 Rust 代码可以编译为 WASM 字节码,因此理论上可以在 zkWASM 机器上运行任何 Rust 代码,从而提供灵活性和广泛的语言支持。
Valida 是一个基于 STARK 的虚拟机,具有受 RISC 启发的指令集,简化了传统编程语言的目标。正在开发一个后端编译器,用于将 LLVM IR 编译为 Valida ISA,从而能够验证用 Rust、Go、C 和其他语言编写的程序,而源代码的更改几乎为零。
测试项目
Stage 1: 算术运算(Hept 100)第一阶段的重点是评估 zkVMs 处理基本算术运算的能力:加法、减法、乘法、除法、模除和平方根计算。我们围绕Heptagonal numbers (七边形数)设计了测试,这需要 zkVMs 同时处理多个算术运算
Stage 2: 内存消耗(Vec 10000)第二阶段评估了每个 zkVM 在重负载下管理内存的能力,此阶段的目的是识别任何内存瓶颈,并确定 zkVM 是否可以有效地管理高强度任务,测试了几种数据结构,包括列表、哈希映射、双端队列、队列、BTreeMaps、哈希集和二进制堆。每个 zkVM 都经过以下操作测试:Insert:zkVM 向结构添加数据的速度有多快?Delete:zkVM 是否能有效处理内存释放?Append:zkVM 能否有效地增长数据结构?Research:zkVM 在检索存储数据时的速度和效率如何?
测试机器配置
CPU: AMD EPYC 7713 "Milan" 64-core processor (128 threads total)
RAM: 600GiB DDR4 3200MHz ECC RAM, distributed across 16 DIMMs
Host OS: Proxmox 8.3
Hypervisor: KVM
Network layer: Open vSwitch
Machine model: Supermicro AS-2024US-TRT
测试结果
算术运算(Hept 100)结果: