主流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)结果: