主流零知识虚拟机性能评估与比较报告
本次性能测试评估了几款主流开源零知识虚拟机(zkVM)的表现,它们在性能和安全性方面展现出不同特点。以下是对各个zkVM的简要概述:
SP1:作为一款高性能的开源zkVM,SP1具备验证任意Rust(或任何LLVM编译语言)程序执行的能力。采用Plonky3支持递归证明,兼容多种加密算法,特别是基于ECC的算法,如Groth16。
RISC0:基于RISC-V架构的zkVM,可证明任意Rust代码的正确性,提供98位的安全级别,采用STARK技术。与LLVM和WASM兼容,支持C和Rust等多种编程语言。
Nexus:这款模块化、可扩展的zkVM采用Rust编写,具有高度并行性和优化的验证者架构。Nexus强调性能和安全性,采用Nova折叠方案,特别适合递归证明,同时也支持C++。
ZkMIPS:基于Plonky2和MIPS微架构的可验证计算基础设施,旨在推动以太坊作为全球结算层,能够运行任意Rust代码。它是此列表中唯一使用MIPS操作码集的zkVM。
ZkWASM:遵循并支持标准未修改的WASM字节码规范,允许Rust代码编译为WASM字节码,因此在zkWASM机器上理论上能够运行任何Rust代码,具备广泛的语言支持。
Valida:基于STARK的虚拟机,采用RISC启发的指令集,旨在简化传统编程语言的目标。正在开发后端编译器,将LLVM IR编译为Valida ISA,以验证用Rust、Go、C++等语言编写的程序。
在测试项目及方法方面:
第一阶段:算术运算(Hept 100)评估zkVM在处理基本算术运算方面的能力,采用七边形数为基础的测试。第二阶段:内存消耗(Vec 10000)评估各zkVM在重负载情况下的内存管理能力,测试包括多种数据结构的操作。
在测试环境配置中,CPU采用AMD EPYC 7713 "Milan" 64核处理器,内存为600GiB DDR4 3200MHz ECC RAM,操作系统为Proxmox 8.3,虚拟化采用KVM,网络层为Open vSwitch,机器型号为Supermicro AS-2024US-TRT。
经过对各zkVM的测试与分析,RISC0被评为首选,其在证明生成时间、大小以及内存占用方面表现出色,具有强大的零知识证明能力和对多种编程语言的支持。Valida在证明生成速度和大小方面也表现不俗,但对Rust的支持有限,不建议与Rust代码一起使用。SP1在算术运算中表现优异,但实际应用价值受限。Nexus表现稳定,但在内存密集型任务中表现一般。zkMIPS提供可靠的证明时间,但内存问题影响整体性能。zkWASM在证明大小和生成时间上表现较差,内存消耗过高。