Circuit Development Languages
Languages for writing ZK circuits.
Circom
FreeDomain-specific language for writing arithmetic circuits. Free and open-source.
Noir
FreeRust-like language for ZK applications from Aztec. Free and open-source.
Halo2
FreeRust framework for writing PLONK-based circuits. Free and open-source.
Leo
FreeProgramming language for Aleo's private applications. Free and open-source.
Cairo
FreeLanguage for writing provable programs for StarkNet. Free and open-source.
o1js
FreeTypeScript library for writing Mina zkApps. Free and open-source.
Proof Systems
Libraries implementing ZK proof systems.
SnarkJS
FreeJavaScript implementation of zkSNARKs. Works with Circom. Free and open-source. Active open-source project on GitHub.
arkworks
FreeRust libraries for SNARKs including Groth16 and Marlin. Free and open-source.
Plonky2
FreeRecursive SNARK system from Polygon. Very fast. Check the GitHub repo for documentation and examples.
Plonky3
Freemodern proving system. Modular and flexible. Check the GitHub repo for documentation and examples.
Risc0
FreeZK-VM based on RISC-V. Prove arbitrary computation. Free and open-source.
SP1
FreeHigh-performance zkVM from Succinct Labs. Check the GitHub repo for documentation and examples.
Development and Testing
Tools for developing and testing circuits.
circomlib
FreeLibrary of common Circom components. Check the GitHub repo for documentation and examples.
Hardhat Circom
FreeHardhat plugin for Circom development. Check the GitHub repo for documentation and examples.
Nargo
FreePackage manager and CLI for Noir. Worth evaluating for your workflow.
Scarb
FreeBuild toolchain and package manager for Cairo. Free and open-source.
Protostar
FreeDevelopment framework for StarkNet contracts. Free and open-source.
Cryptography Fundamentals
Low-level cryptographic libraries.
bn254
FreeBN254 curve implementation. Most common for SNARKs. Free and open-source. Active open-source project on GitHub.
Poseidon Hash
FreeZK-friendly hash function implementations. Check the GitHub repo for documentation and examples.
blstrs
FreeBLS12-381 implementation for BLS signatures and SNARKs. Free and open-source. Active open-source project on GitHub.
ff
FreeFinite field arithmetic traits and implementations. Free and open-source. Active open-source project on GitHub.
ZK Applications
Frameworks for ZK application patterns.
Semaphore
FreeAnonymous signaling protocol. Foundation for many ZK apps. Free and open-source.
ZK Email
FreeProve email ownership without revealing content. Free and open-source.
Worldcoin SDK
FreeIntegration with World ID for proof of personhood. Free and open-source.
Axiom
Paid per queryZK coprocessor for accessing historical blockchain data. Used by production teams across the ecosystem.
Brevis
Paid per queryZK coprocessor for cross-chain data and computation. Used by production teams across the ecosystem.
Learning Resources
Educational tools and resources.
ZK Hack
FreeCommunity and learning platform for ZK developers. Free and open-source.
ZK Whiteboard Sessions
FreeVideo series explaining ZK concepts. Worth evaluating for your workflow.
Ingopedia
FreeCurated ZK learning resources. Worth evaluating for your workflow.
Awesome ZKP
FreeCurated list of ZK resources and projects. Check the GitHub repo for documentation and examples.
Pro Tips
Start with Circom to understand circuit constraints before moving to lower-level libraries.
zkVMs like SP1 and Risc0 let you write normal Rust instead of circuits.
Understand the tradeoffs between different proof systems (proving time vs verification cost vs proof size).
Poseidon is faster than Keccak in circuits. Use ZK-friendly primitives.
Test constraint counts carefully. Small changes can dramatically affect proof times.
More for ZK Engineer
Ready to build your Web3 career?
Browse hundreds of open roles across the decentralized ecosystem.
Explore Jobs