作者: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)結果:
階段1測試結果
2.記憶體消耗(Vec 10000)
階段2測試結果
總結
RISC0 成為首選。它在證明生成時間和大小方面都表現出色,同時保持合理的記憶體佔用。憑藉強大的零知識證明能力和對多種程式語言的支持,它符合隱私、效能和靈活性的需求。它在效能和效率之間的整體平衡使其成為現階段最可行的zkVM。
Valida 在證明生成速度和大小方面取得了令人印象深刻的結果,證明大小為280 KB,證明時間為< 1 秒。但是,由於Valida 的Rust 支援有限,因此無法進行分析。 Valida 目前使用LLVM 後端編譯Rust,轉譯LLVM IR 以利用其C/C++ 實現,這會導致在處理特定於Rust 的資料結構或依賴項時出錯。因此,無法測試複雜的記憶體交互,並且目前不建議將Valida 與Rust 程式碼一起使用
SP1 雖然最初很有趣,但未能滿足零知識證明要求。它在算術運算中的表現值得稱讚,但鑑於它缺乏ZK 功能,不足以證明進一步考慮的合理性
Nexus 展示了一致的證明大小和可管理的記憶體使用情況,但在記憶體密集型任務期間表現不佳,而且其證明大小(尤其是對於較大的工作負載)使其失去了成為頂級競爭者的資格。
zkMIPS 提供了可靠的證明時間,但記憶體問題太嚴重了,不容
zkWASM 的結果最差,在證明大小和生成時間方面都苦苦掙扎。儘管它可能支援WASM 字節碼,但RAM 消耗(在記憶體測試中高達57 GB)過多