Skip to content

Home > Tooling & Applications > zkVM

zkVM — Zero-Knowledge Virtual Machine

Description

A zkVM proves the correct execution of a general-purpose program rather than requiring developers to express their computation as a hand-written arithmetic circuit. The prover takes a program (compiled to a known ISA such as RISC-V or MIPS) and an input, executes it, and produces a ZK proof that the output is correct. This inverts the usual circuit-first workflow: developers write ordinary code, and the zkVM handles the arithmetization internally.

zkVMs vs Circuit-Based Approaches

Aspect Circuit DSL (e.g. Circom, Noir) zkVM (e.g. RISC Zero, SP1)
Developer model Write explicit constraints Write ordinary code
Arithmetization Manual, per-circuit Automatic, per ISA
Proof size / speed Smaller, faster for simple ops Larger overhead, but improving
Flexibility Optimised for specific operations General-purpose
Maintenance burden Circuit must mirror logic Logic lives in one place

Arithmetization

zkVMs typically use AIR (Algebraic Intermediate Representation) to encode CPU execution traces, since AIR naturally captures sequential state transitions. STARK-based backends (zk-STARKs, FRI) are common. Some (e.g. ToolingApplication/SP1) use a PLONK-family backend over the execution trace.

Entries in this vault

Tool Backend ISA
ToolingApplication/RISC-Zero zk-STARKs + FRI RISC-V
ToolingApplication/SP1 PLONK / STARKs RISC-V
ToolingApplication/OpenVM STARKs RISC-V (extensible)
ToolingApplication/Valida STARKs Custom
ToolingApplication/Pico STARKs RISC-V