Circuit DSL
Domain Specific Language for writing zero-knowledge circuits
Name | Company/Brand | Arithmetization | Syntax | Programming Capability | Backend Supported | Note |
---|---|---|---|---|---|---|
Plonk Script | - | Plonkish | Rust-like | Yes | Halo2/Plonky3 | - |
CIRCOM | IDEN3 | R1CS | C-like | Yes | - | - |
ZoKrates | - | R1CS | Python-like | Yes | - | - |
CirC | - | R1CS | C/ZoKrates | Yes | - | - |
SnarkyJs | Mina | R1CS | Typescript | Yes | - | - |
Leo | Aleo | R1CS | Rust-like | Yes | - | - |
Noir | Aztec | R1CS | Rust-like | Yes | Abstract ACIR intermediate representation (trace), backend can be selected later | - |
Noir ExampleView Source Compiles to ACIR, similar to R1CS, supports raw loops. Already has Halo2 backend and received funding, suitable for ZK developers | ||||||
lurk | - | R1CS | Lisp | Yes | - | - |
PIL | Polygon zkEVM | Constraint definition | Special | No | - | - |
AirScript | Polygon Miden | Plonkish | Yaml-like | No | - | - |
AirScript ExampleView Source Can only do simple constraints, lacks programmability for witnesses | ||||||
Vamp-IR | anoma | Plonkish | Haskell-like | Yes | - | Low-level assembly language |
Vamp-IR ExampleView Source As an intermediate representation IR, does not support witness programming, syntax is relatively raw | ||||||
ALucard | anoma | Plonkish | Lisp | Yes | - | High-level language built on top of Vamp-IR |
powdr | Powdr lab | Plonkish+VM | JS-like | Yes | - | Low-level assembly language |
powdr ExampleView Source Used to describe virtual machine assembly programs, relatively low-level, supports RISCV frontend connection | ||||||
Chiquito | PSE | Plonkish | Rust/Python | Yes | - | More like a simplified wrapper around Halo2 API |
Chiquito ExampleView Source Clear structure, suitable for expressing step-based systems, syntax is close to Python | ||||||
gnark | Consensys | R1CS | Go | Yes | Groth16, Plonk, GKR | - |
plaf | - | Plonkish | toml-like | - | - | - |
plaf ExampleView Source No programming capability, only for static constraint description format | ||||||
halo2-repl | Axiom | Plonkish | JS | Yes | Halo2 | - |
halo2-repl ExampleView Source Strong API syntax, but REPL experience is good, suitable for interactive debugging | ||||||
lir | - | Lookup | IR | No | - | Tries to do pure lookup IR, relatively rough, only one sentence in the readme, no other examples found |
Keelung | BTQ | - | - | - | Backend is Aurora | - |
noname | zksecurity | - | - | - | - | - |
sunscreen | - | - | - | - | Supports FHE and ZKP | - |
zirgen | RISC0 | - | - | - | - | - |
Zinnia | HKUST | - | Python-like | - | - | - |
Zinnia ExampleView Source | ||||||
Cairo | StarkWare | VM | Rust | Yes | - | - |
Zinc | zkSync | VM | Rust | Yes | - | Officially abandoned by the team in 2021 |
zkas | Darkfi | VM | C-like | Yes | - | - |
zkas ExampleView Source Tends to chain on zkVM operations, less documentation, syntax is close to zk assembly | ||||||
Polylang | Polybase | VM | JS-like | Yes | - | Built on MidenVM |
cairo | Cairo | AIR | - | VM | - | FRI |
ceno | Scroll | GKR | - | VM | Brakedown, Rust | Lookup, Sumcheck |
eigen zkvm | EigenLabs | eAIR | - | VM | FRI, Groth16, Solidity | - |
jolt | a16z | R1CS | - | VM | Spartan, WASM | Lookup, Sumcheck, Offline Mem Check |
miden | Polygon | AIR (winterfell) | - | VM | Rust | Lookup, Winterfell |
mozak vm | Mozak | AIR (Starky) | - | VM | Rust | Lookup, FRI |
nexus | Nexus | Folded Accumulated Relaxed R1CS | - | VM | Accumulated Folding Spartan + {Zeromorph, PSE-Halo2 (KZG)}, Rust | - |
o1vm | O(1) Labs | Plonkish | - | VM | IPA, Rust | Lookup |
olavm | Ola | AIR (plonky2) | - | VM | FRI, Rust | Lookup |
openvm | OpenVM | AIR (plonky3), GKR | - | VM | FRI, Rust | - |
pico | Brevis | AIR (plonky3) | - | VM | FRI, Rust, Solidity | Lookup |
powdrVM | Powdr Labs | AIR -ish (PIL, plonky3) | - | VM | PSE-Halo2 (KZG), Plonky3, FRI([eSTARK](https://eprint.iacr.org/2023/474)), Solidity | - |
risc0 | Risc Zero | PLONK | - | VM | Plookup, Rust, Solidity | [DEEP-FRI & ALI](https://eprint.iacr.org/2021/582.pdf) |
sp1 | Succinct | AIR (plonky3) | - | VM | FRI, Rust, Solidity | Lookup |
sphinx | Argument Computer | AIR (core), PLONK (wrap) | - | VM | FRI, Rust | Lookup |
triton vm | TritonVM | AIR | - | VM | FRI, Rust | Lookup, [Contiguity](https://triton-vm.org/spec/memory-consistency.html) |
valida | Valida | AIR (plonky3) | - | VM | FRI | - |
zisk | Polygon Hermez | ? | - | VM | ? | ? |
zkm | zkMIPS | AIR (plonky2) | - | VM | FRI, Rust | Lookup |
zkWasm | DelphinusLab | PLONK | - | VM | IPA?, Rust | - |