Contributions and suggestions are always welcome; open issues or pull requests with any changes you want to be made.
Note
Maintained by @0xpiapark and @alexanderlhicks. Some details may be outdated; feel free to open an issue or PR. For discussions on fair tracking methods, see the open issues.
- ISA (Instruction Set Architecture): The fundamental “language” of the VM, defining all its basic operations and how they interact with data.
- Continuations (aka Chunking/Sharding): A technique to break oversized computations — too big for a single run — into smaller segments that get proven individually and recursively (proof of segment
n+1
includes the proving of segmentn
's verifier). How self-contained the proving of each segment is (no commitment passed from one segment to the other) and how efficiently parallelizatable it is (minimal inter-thread comm) differs from one implementation to another. - Precompiles (Built-ins, Chiplets, Accelerate etc): Specialized, pre-built functions for complex tasks (like cryptography) that boost efficiency and reduce proof overhead.
- Proving Frontend: The programming language the programmer expresses their business logic in, which then get compiled down into the VM’s supported ISA for constrained execution.
- GPU: Indicates whether proving on GPU is supported (based on publicly exposed Metal/CUDA code)
- Optimizations: Ingredients in the proof system that can optimize the size and complexity of the constraints overall.
- Backends: The (Polynomial) Interactive Oracle Proof (P)IOP and polynomial commitment scheme(s) (PCS) used for the (typically non-interactive) prover-verifier checks.
- Verifiers: Programs that can do the (typically non-interactive) verification given a proof and public inputs.
zkVM | ISA | Continuations | Parallelizable Proving | Precompiles | GPU | Frontend |
---|---|---|---|---|---|---|
cairo | Cairo | ❌ | ❌ | ✅ | Cairo | |
ceno | RISC-V | ❌ | ❌ | ❌ | Rust | |
eigen zkvm | RISC-V | ✅ | ✅ | ✅ | ✅ | Circom, PIL |
jolt | RISC-V | ❌ | ❌ | ❌ | Rust | |
miden | MASM(Miden Assembly) | ❌ | ❌ | ✅ | ✅ | Rust, Wasm |
mozak vm | RISC-V | ❌ | ❌ | ❌ | Rust | |
nexus | RISC-V | ✅ | ✅ | ✅ | Rust | |
o1vm | MIPS | ❌ | ❌ | ❌ | Go | |
olavm | Ola Assembly | ❌ | ❌ | ✅ | Ola Assembly | |
powdrVM | RISC-V | ✅ | ✅ | ✅ | ASM assembly | |
risc0 | RISC-V | ✅ | ✅ | ✅ | ✅ | Rust |
sp1 | RISC-V | ✅ | ✅ | ✅ | ✅ | Rust |
sphinx | RISC-V | ✅ | ✅ | ✅ | Rust, Lurk | |
triton vm | Triton Assembly | ❌ | ❌ | ❌ | Triton Assembly | |
valida | Valida | ❌ | ❌ | ❌ | Rust, C | |
zisk | RISC-V | ❌ | ❌ | ❌ | PIL | |
zkm | MIPS | ✅ | ✅ | ✅ | Rust, Go | |
zkWasm | Wasm | ✅ | ✅ | ✅ | C, C++, rust, etc (wasm compilable) |
Proof systems
zkVM | Arithmetization | Optimizations | Backends | Verifiers |
---|---|---|---|---|
cairo | AIR | FRI | ||
ceno | GKR | Lookup, Sumcheck | Brakedown | Rust |
eigen zkvm | eAIR | FRI, Groth16 | Solidity | |
jolt | R1CS | Lookup, Sumcheck, Offline Mem Check | Spartan | WASM |
miden | AIR (winterfell) | Lookup, | Winterfell | Rust |
mozak vm | AIR (Starky) | Lookup, | FRI | Rust |
nexus | Folded Accumulated Relaxed R1CS | Accumulated Folding | Spartan + {Zeromorph, PSE-Halo2 (KZG)} | Rust |
o1vm | Plonkish | Lookup | IPA | Rust |
olavm | AIR (plonky2) | Lookup | FRI | Rust |
powdrVM | AIR -ish (PIL, plonky3) | - | PSE-Halo2 (KZG), Plonky3, FRI(eSTARK) | Solidity (auto-gen) |
risc0 | PLONK | Plookup | DEEP-FRI & ALI | Rust, Solidity |
sp1 | AIR (plonky3) | Lookup | FRI | Rust, Solidity |
sphinx | AIR (core), PLONK (wrap) | Lookup, | FRI | Rust |
triton vm | AIR | Lookup, Contiguity | FRI | Rust |
valida | AIR (plonky3) | FRI | ? | |
zisk | ? | ? | ? | ? |
zkm | AIR (plonky2) | Lookup, | FRI | Rust |
zkWasm | PLONK | - | IPA? | Rust |
- benchmarks (lita) | code
- benchmark (risc0) | code
- zkvm-benchmarks (a16z) | code
- zkvm perf (succinct) | code
- Benchmarking of π2 ZK Metamath checkers | code, including results
- definitive guide to zkVMs | article
- Lurk 0.5 Benchmarks | article
- benchmark of zkVMs and proving schemes | code
- Cairo – a Turing-complete STARK-friendly CPU architecture
- A Verified Algebraic Representation of Cairo Program Execution
- A Proof-Producing Compiler for Blockchain Applications
- SP1 V4 Turbo: Memory Argument via Elliptic Curve based Multiset Hashing
- Succint Network: Prove the World's software
- a zero-knowledge paradigm series
- cairo – a turing-complete stark-friendly cpu architecture - shahar papini
- lasso + jolt playlist
- new paradigm in ethereum l2 scaling: multi-proving and zk-vms
- the nexus v1.0 zkvm - daniel marin (nexus)
- understanding jolt: clarifications and reflections
- zk whiteboard sessions – module seven: zero knowledge virtual machines (zkvm) with grjte
- zk10: analysis of zkvm designs - wei dai & terry chung
- zk11: o1vm: building a real-world zkvm for mips - danny willems
- zk12: memory checking in ivc-based zkvm - jens groth
- zk7: miden vm: a stark-friendly vm for blockchains - bobbin threadbare – polygon
- zeroing into zkvm
- zkvm design walkthrough with max and daniel
- Verification of zkWasm in Coq
- zk11: polynomial acceleration for stark vms
- what does risc v have to do with risc zero's zkvm
- risc zero architecture presentation @ stanford
- continuations: scaling in zkvm
- Getting the bugs out of SNARKs: The road ahead
- ~tacryt-socryp on Zorp, the Nock zkVM | Reassembly23
- Automatic Circuit Acceleration of Guest Programs
- Introducing Twist and Shout