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 SourceCompiles 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 SourceCan only do simple constraints, lacks programmability for witnesses | ||||||
| Vamp-IR | anoma | Plonkish | Haskell-like | Yes | - | Low-level assembly language |
Vamp-IR ExampleView SourceAs 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 SourceUsed 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 SourceClear 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 SourceNo programming capability, only for static constraint description format | ||||||
| halo2-repl | Axiom | Plonkish | JS | Yes | Halo2 | - |
halo2-repl ExampleView SourceStrong 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 SourceTends 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 | - |