Skip to content

Home > Tooling & Applications

Tooling & Applications

Concrete tools, libraries, and frameworks for building ZKP applications. Grouped by category.

Also includes concept notes on zkVMs, Circuits, and Sumcheck-based proofs.

Circuit DSLs

Languages for writing arithmetic circuits without touching the underlying proof system directly.

Note Status Description
Noir active Rust-like DSL by Aztec; compiles to ACIR, targets UltraHonk/Barretenberg
Circom2 active Template-based circuit language; outputs R1CS; widely used in production
ZoKrates deprecated Early high-level ZKP DSL; R1CS backend

Proving Libraries

Low-level backends and libraries that implement proof systems.

Note Status Description
Barretenberg active Aztec's C++ proving library; implements HONK and UltraHonk; Noir's default backend
Halo2 maintained Zcash/EFF PLONKish proving system in Rust; wide ecosystem adoption
gnark active Fast Go library supporting Groth16 and PLONK; production-grade
Spartan Framework maintained Microsoft Research's Rust library for Spartan-based proofs
Ligero Prover active Implementation of the Ligero MPC-in-the-head proof system
Docknetwork maintained Rust crypto library; includes BBS+ signatures and ZK credential primitives
Powdr active Modular ZKP stack; supports multiple backends (Halo2, eSTARK, Plonky3)

zkVMs

Zero-knowledge virtual machines that prove the execution of arbitrary programs.

Note Status Description
RISC-Zero active zkVM for RISC-V programs; uses FRI/STARK-based proving
SP1 active Succinct Labs' RISC-V zkVM; targets fast prover with Plonky3 backend
OpenVM active Modular zkVM framework with extensible instruction sets
Pico active Lightweight zkVM focused on performance and composability
Valida deprecated Early custom-ISA zkVM from Lita Foundation