zkVM landscape: 15 projects compared
Thread790 words
Describes 15 zkVM projects with their proof systems, performance focus and privacy properties, and clarifies that snarkOS, zkLLVM and Powdr are not strictly zkVMs.
Key claims
Jolt and Valida do not fully achieve ZK privacy
snarkOS, zkLLVM and Powdr are not zkVMs
✨ The zkVM Landscape ✨
ZK-powered, verifiable execution is the scaling endgame.
List of top 15 zkVM projects you have to know.↓
➊ What is a zkVM?
A zero-knowledge virtual machine (zkVM) is ZK proof system that allows developers to prove the off-chain execution of arbitrary software programs on-chain through succinct proofs. Depending on their design, zkVMs support different proof types and can also provide powerful privacy features.
➋ The zkVM Landscape
R0 by @RiscZero is a general-purpose zkVM with strong developer support for Rust, C and C++, and capable of generating both zkSNARK and zkSTARK proofs. It's strong on developer usability, abstracting circuit complexities, and offers full ZK privacy through Groth16 proof support. Risc0 integrates well with ecosystems like Ethereum and its L2s (but also Solana), making it a highly versatile zkVM with a good balance of scalability, privacy, and ease of use.
@SuccinctLabs' SP1 is a zkVM designed for LLVM-based languages like C, C++, and Rust, using a RISC-V-like architecture. Its main focus is on scalability and performance, rather than privacy, with significantly better performance than other zkVMs for certain specific computations. SP1 is adaptable for use in rollups, verifiers, oracles, and even web2 applications, but (as mentioned above) lacks privacy functionality.
Nexus by @NexusLabsHQ is a modular zkVM that processes up to a trillion CPU cycles per second using RISC-V instructions. It emphasizes performance and scalability but does not yet provide full ZK proof capabilities due to the use of Spartan proofs. Nexus targets high-performance applications where privacy is not critical.
zkMIPS by @ProjectZKM uses zkSTARKs to ensure privacy in computation for MIPS-based architectures. It focuses on scalability and preserving private inputs during program execution, making it a zkVM well-suited for systems needing privacy in legacy codebases.
O1VM by @o1_labs (Mina) is a zkVM optimized for MIPS-based programs, focusing on scalability and privacy through zk-SNARKs. It efficiently proves long execution traces, making it a robust zkVM for MIPS architectures.
Valida by @lita_xyz is a performance-oriented zkVM using a custom ISA and Plonky3 for proof generation. It focuses on optimizing prover performance, with strong benchmarks in parallel processing, though it is less focused on privacy. Valida is a zkVM but is more appropriate for high-performance, non-privacy-focused use cases.
Jolt by @a16zcrypto is a zkVM built for speed, using a modified Hyrax system to optimize proof generation. While it provides strong performance, it does not fully achieve ZK privacy due to its polynomial commitment schemes. Jolt is a zkVM best suited for speed-prioritized environments over privacy.
zkWASM by @DelphinusLab executes WebAssembly (WASM) code with zkSNARKs for privacy and scalability. It ensures private, verifiable execution for dapps using WASM, making it a zkVM ideal for privacy-preserving applications.
@AleoHQ's snarkVM converts code into Aleo instructions and compiles it into bytecode for its zkVM, focusing on privacy and scalability for dapps. Offering full privacy through zkSNARK proofs, Aleo is a zkVM designed for private, scalable applications. SnarkOS on the other hand is the decentralized OS supporting Aleo’s zkVM-based ecosystem for privacy-preserving dapps. While it manages privacy through Aleo’s zkVM, SnarkOS itself is not a zkVM, as it serves more as a consensus and transaction layer for Aleo’s network.
@ola_zkzkvm is a ZK-friendly L2 rollup platform focused on off-chain computations and proving correctness through ZKPs. It is specifically focused on proving transaction validity to scale execution throughput, rather than privacy-preserving program execution.
@0xPolygon Miden is a zkSTARK-based zkVM focused on scaling and privacy for ZK rollups. It efficiently proves transaction execution with up to 1,000 TPS, making it a strong zkVM for privacy-first dapps in ZK-rollup solutions and has a focus on enterprise use cases.
Cairo zkVM by @StarkWareLtd compiles code into a STARK-based proof system for verifiable computation, emphasizing scalability. It provides privacy through zkSTARKs and is optimized for performance, making it a zkVM well-suited for scalability-focused systems like Starknet.
Piecrust by @DuskFoundation is a WASM-based zkVM on the Dusk Network, supporting concurrent execution with privacy and scalability for smart contracts. It is a key enabler of Dusk's compliant on-chain economy.
zkLLVM by @nil_foundation is a compiler that converts C++ and Rust code into circuits for zk-SNARK and zkSTARK systems. While it facilitates ZKP generation, it is not necessarily a zkVM, as it does not serve as an execution environment. Still very interesting though.
@powdr_labs is a toolkit for building custom zkVMs, allowing developers to choose front-end and back-end components like Halo2 or Valida for tailored zkVMs. While Powdr does not generate ZKPs itself, it facilitates zkVM creation with varying privacy and performance needs. It is not a zkVM, but basically a customizable framework for building them.
➌ Conclusion
Don't fade ZK.
DYOR anon.
For a broader look at the ZK space, have a look at my ecosystem overview below! ↓
x.com/zerokn0wledge_/status/1798285219910270982