Awesome Zero Knowledge
A curated list of awesome ZK resources, libraries, tools and more. For a ZK knowledge base, please see https://github.com/delendum-xyz/zk-knowledge
Telegram Group
Join the discussion group chat with other developers and researchers
Fellowship Program
If you are interested in working together with top experts to explore practical use cases of new research ideas, consider applying to our fellowship program. The deadline for 2023 Jan - Feb fellowship application is 2022 Dec 8.
Table of Contents
- Basics
- Projects
- Programming Languages
- Programming Libraries
- Developer Tools
- Auditing and Consulting
- Validator Services
- Books
- Discussions
- Communities
- Advanced Topics
Basics
- Prerequisite understanding questions
- ZKP Overview: History, Proving Systems, Circuits, Compilers
- Introduction
- Vitalik's blogs for STARKs
- Explaining STARKs
- zkSNARKs in a nutshell
- The MoonMath Manual to zk-SNARKs
- Comments on paper: zkSNARKs in a Nutshell by Aaron
- An approximate introduction to how zk-SNARKs are possible
- Explaining SNARKs
- Part I: Homomorphic Hidings
- Part II: Blind Evaluation of Polynomials
- Part III: The Knowledge of Coefficient Test and Assumption
- Part IV: How to make Blind Evaluation of Polynomials Verifiable
- Part V: From Computations to Polynomials
- Part VI: The Pinocchio Protocol
- Part VII: Pairings of Elliptic Curves
- Important landmarks for zk-SNARKs
- Circuit optimization
- Introduction to Layer 2
Projects
Zk-VM
- Matter Labs zkEVM
- Hermez zkEVM
- Mir Protocol
- Scroll and their zkEVM
- zCloak Space
- Delphinus zkWASM and their github
- Appliedzkp: Circuits for zkEVM
- ConsenSys zkEVM and their gnark library
- zkMove: bytecode VM and their github
- zkRiscV: RV32I Risc-V instruction set
- TinyZKEVM
- OlaVM: An Ethereum compatible ZKVM
- Tritron VM
- Sovereign Labs: zkEVM on Risc0
Zk-Layer1
- Aleo: A SDK for Zero-Knowledge Transactions
- Iron Fish: the universal privacy layer for crypto
- Mina: a payment system using a succinct blockchain
- Celo: EVM compatible proof-of-stake layer-1 and their Light clients with ZKPs
- Zeeka Network: a light and scalable blockchain using ZKPs
- quark: decentralized state machine with STARK proofs
- Lelantus: transaction confidentiality and anonymity
- Neptune: a new privacy layer-one blockchain
- DarkFi: a new Layer 1 blockchain, designed with anonymity at the forefront
Zk-Layer2
- Aztec: Scalable Privacy on Ethereum
- StarkNet: permissionless decentralized ZK-Rollup
- zkSync: an EVM-compatible ZK Rollup
- Polygon Miden: a STARK-based, Zero-Knowledge rollup
- Polygon Zero: a layer 2 scaling solution for Ethereum
- Taikocha: a zkEVM-based general-purpose zkRollup network
- Twilight: Layer 2 for Private Computation
- Orbis: A Layer 2 ZK-Rollup Scaling Solution Built on Cardano
- Radius: MEV-resistant ZK-Rollups with Practical VDE (PVDE)
- ZEXE on Plasma: An implementation of ZEXE on Ethereum
- Nightfall: Private Token Transaction on Ethereum
Transpiler
- Starlight: Generate a zApp from a Solidity contract
- Warp: transpile Ethereum smart contracts to Cairo
- zkay: A Language for Private Smart Contracts on Ethereum
Computing Infrastructure
- Risc0: a zero-knowledge verifiable general computing platform
- CirC: Compiler Infrastructure for Cryptosystems and Verification
- Trustless Labs: ZK-friendly Multi-rollup Architecture for Web3 Applications
Framework / SDK
- Espresso Systems: single-shot scaling & privacy solution
- Light Protocol: DeFi Privacy Infrastructure that Scales
Zk-Applications
Gaming
- Dark Forest: an MMO space-conquest game and their ZK Circuit Walkthrough
- Isaac: a physics-powered onchain reality on Starknet and their blog
- Crypto Maze: action-packed MMO
- Zordle: the first end-to-end web app built using Halo 2 ZK proofs
Payment
- Zcash: a privacy-protecting, digital currency
- Monero: private, decentralized cryptocurrency
- Manta: a Plug and Play Private DeFi Stack
- SwapCT: Swap Confidential Transactions for Privacy-Preserving Multi-Token Exchanges
- Zef: Low-latency, Scalable, Private Payments and their Slides
- Anoma: A protocol for private, asset-agnostic digital cash and their use of recursive zkps
- ZETH: Integrating Zerocash on Ethereum
Mixer
- CoinJoin: an open-source way to mix bitcoins
- Tornado Cash: Introducing Private Transactions On Ethereum
- Otter Cash: A privacy layer for the Solana ecosystem
- Mobius: Trustless Tumbling for Transaction Privacy
- TumbleBit: An Untrusted Bitcoin-Compatible Anonymous Payment Hub
- Mixcoin: Anonymity for Bitcoin with accountable mixes
- CashShuffle: background coin shuffling for Bitcoin Cash
- MicroMix: A noncustodial Ethereum mixer
- Juicer Protocol: trusted and secure
Identity
- zkKYC: A solution concept for KYC without knowing your customer
- zkID.app: A Privacy-Preserving Passport to the Web 3.0 World
- Notebook: a zero-knowledge B2B2C identity protocol
- Iden3: future-proof tech stack for self-sovereign identity
- Polygon ID: identity system with programmable privacy
- Sealance: building financial compliance into digital currencies
- Humanode: biologically verified human nodes for a fair financial system
- OutDID: your zero-knowledge, decentralized KYC filter of blockchain users
- IdentityBlockchain: state-certified electronic identities to establish blockchain identities
- Worldcoin: Privacy-Preserving Proof-of-Personhood Protocol
- ZeroBiometrics: Privacy Preserving and Data Protection Face Authentication
Wallet
- Argent: smart contract wallet based on zkSync
- Numio: Layer 2 focused wallet built on zkSync
- Zkopru: Affordable Ethereum Privacy Wallet
- Bunkyr: zero‑knowledge security without seed phrases or backup codes
- Wasabi Wallet: non-custodial, privacy-focused Bitcoin wallet
Trustless Bridge
- Succinct Labs: the trust-minimized interoperability layer
- Overeality: Infrastructure for Web3 Interoperability and their paper
Crosschain
- ZkLink: cross chain amm swap protocol powered by ZK-Rollup
- Mystiko Network: Anonymous Protocol for a Cross-Chain Network
- Penumbra: a shielded, cross-chain network
- Zecrey: Bringing Cross-chain Privacy to Digital Assets
- Suez: move Eth to the Starknet ecosystem
- ZKCross: a trustworthy cross-chain protocol built with multichain zkRollup
- Electron Labs: ZK Light Clients for NEAR Rainbow Bridge
- Nil Foundation: Mina's bridge to Ethereum
- ZeroPool: a fully private multi-blockchain solution
- Raze Network: Multichain Privacy Middleware
- Zendoo: A zk-SNARK enabled verifiable cross-chain transfer protocol and their whitepaper
- DarkFi: applications and shielded cross-chain assets utilizing Halo 2
Marketplace
- Modulo Zero: on-chain solution for private data exchange and their Repo
- Ruby Protocol: Building a Cross-chain Cryptographic Infrastructure for Data Monetization
- zkPoD: A decentralized system for data exchange
Fiat On-ramp
User Profiling
- FirstBatch: create a representation of your identity from your social data
- Interep: verify users' reputation without exposing their identities
Data Infrastructure
- Filecoin: Zero Knowledge and the Filecoin Network
- Nectar Protocol: Web3 infrastructure for healthcare and their documentation
- zk-SQL: ZK-based engine for self-sovereign SQL queries
State Attestation
- Relic Protocol: the first provably secure source of historical data on chain
- Axiom: generate proofs for various computations completed previously on chain
Machine Learning
- zk-MNIST: web frontend app + Jupyter notebook with ML model generation and their demo
- zkCNN: GKR-based zero-knowledge proof protocol for CNN model inference and their paper
- Modulus Labs: bringing powerful ML models on-chain and their blogs
- zkonduit: inference for deep learning models and other computational graphs in a zk-snark
- ZK Machine Learning: truly private machine learning, with zk-SNARKs and blockchain
DeFi / DEX
- Panther Protocol
- Loopring Launches zkRollup Exchange
- Railgun: brings privacy to cryptocurrencies
- EdgeSwap: Ethereum-based layer 2 trading protocol
- ZigZag: ZK Rollup order book DEX
- Mute: a ZK-Rollup based AMM exchange
Tokens / NFT
- StealthDrop: Anonymous Airdrops using ZK proofs
- ZKP Private Airdrop and their Zk Merkle Airdrop Library
- zk-NftMint: Mint an NFT if you know a secret and their contract
- Immutable X: the first layer-2 scaling solution for NFTs on Ethereum
Voting / Participation
- Semaphore: a privacy gadget built on Ethereum
- zkC.R.E.A.M: Confidential Reliable Ethereum Anonymous Mixer
- Cabal: create credibly pseudonymous channels based on members' Ethereum activity
- OVOTE: Offchain Voting with Onchain Trustless Execution and their document
- Scaffold-ETH: Prove Membership with Circom and Zero Knowledge
- Vocdoni: A decentralized self sovereign governance platform and their architecture
Communication
- Waku: a suite of privacy-preserving, peer-to-peer messaging protocols
- Zero Knowledge Message Board by nulven, yush_g and their article
- Double Blind: semi-anonymously sign messages for a group of people and their documentation
Document Management
Hardware Acceleration
- Hardware for ZKPs & VDFs with Supranational and their Practical SNARK-based VDF
- PipeZK: Accelerating Zero-Knowledge Proof with a Pipelined Architecture
- Ingonyama: building a ZK processing unit and their slides
- ZKAccel: Accelerated ZKP as a Service
- DZK: decentralized zero-knowledge proof platform
- Cysic: Hardware Accelerating Zero-Knowledge Proof
Trusted Execution Environment (TEE) Based Projects
Fully Homomorphic Encryption (FHE) Based Projects
Programming Languages
Programming Libraries
Name | Host Language | Features | GitHub |
---|---|---|---|
Libsnark | C++ | General-purpose proof systems, gadget libraries | https://github.com/scipr-lab/libsnark |
Bulletproofs | Rust | Single-party proofs, online multi-party computation, R1CS | https://github.com/dalek-cryptography/bulletproofs |
Bellman | Rust | Circuit traits, primitive structures, basic gadget implementations | https://github.com/zkcrypto/bellman |
gnark | Go | High level API with frontend and backend to design circuits | https://github.com/ConsenSys/gnark |
Arkworks | Rust | R1CS, curves, Groth16, finite field, curves | https://github.com/arkworks-rs |
Circomlib | Javascript | Circom templates | https://github.com/iden3/circomlib |
libSTARK | C++ | ZK-STARK library | https://github.com/elibensasson/libSTARK |
plonky2 | rust | SNARK implementation based on techniques from PLONK and FRI | https://github.com/mir-protocol/plonky2 |
plonk | rust | Pure Rust implementation of the PLONK ZKProof System | https://github.com/dusk-network/plonk |
Spartan | rust | High-speed zkSNARKs without trusted setup | https://github.com/microsoft/Spartan |
DIZK | Java | Distributed polynomial interpolation, Lagrange polynomials, multi-scalar multiplication | https://github.com/scipr-lab/dizk |
wasmsnark | Javascript | Generate zkSnark proofs and verify from web browser | https://github.com/iden3/wasmsnark |
jellyfish | rust | Rust Implementation of the PLONK ZKP System and Extensions | https://github.com/EspressoSystems/jellyfish |
libiop | C++ | IOP-based zkSNARKs | https://github.com/scipr-lab/libiop |
Nova | rust | Recursive SNARKs without trusted setup | https://github.com/microsoft/Nova |
Tools
- Circom: zkSnark circuit compiler
- Shield: a development framework for circom developers
- plonkit: zkSNARK toolkit to work with circom DSL in PLONK proof system
- Library: ZK-Garage/Plonk
- zk-ECDSA: zkSNARKs for ECDSA
- ZoKrates: a toolbox for zkSNARKs on Ethereum
- Ecne: an engine for verifying the soundness of R1CS constraints
- Arkworks: an ecosystem for developing with zkSNARKs
- Snarkjs: zkSNARK implementation in JavaScript & WASM
- zkREPL: an in-browser collaborative development environment
- Picus: Symbolic Virtual Machine for Automated R1CS Verification
- Papyrus: A Symbolic Execution Tool for Cairo
- emp-zk: Efficient and Interactive Zero-Knowledge Proofs
- crrl: Rust library for cryptographic research
- Atlas Protocol: Zero-Knowlege Blockchain Development Platform
Auditing and Consulting
- ABDK
- Least Authority
- Hashcloak
- Taurus
- Common Prefix
- ZK Labs
- Diligence
- Trail of Bits
- Kudelski Security
Validator Services
Books
- Proofs, Arguments, and Zero-Knowledge (Justin Thaler, 2022)
- A Graduate Course in Applied Cryptography (Dan Boneh and Victor Shoup, 2020)
Discussions
- Why Dark Forest Matters: A Good Game, not a Crypto Game
- Six Moonshot ZK Applications
- A Socratic Dialogue to Come Up With a Secure ZK Message Board Architecture
- The Strongest Crypto Gaming Thesis
- Hardware Acceleration for Zero Knowledge Proofs
- How do trusted setups work?
- 10 zkApps Use Cases on Mina Protocol
- Programming Languages in ZKP
Communities
- Harmony zkDAO
- Zero Knowledge University
- ZK Hash Bounties
- Zero Knowledge Forum
- 0xPARC: Program for Applied Research in Cryptography
- ZPrize: accelerate zero-knowledge cryptography
- zkMesh: a monthly newsletter
- ZKHack Discord: Read, discuss, and implement ZK in Rust/Python (Fridays at 11:30ET)
- ZKP Discussion Group Chat by Delendum: idea sharing, seeking advice/review/co-publish
Advanced Topics
PLONK
- Understanding PLONK
- Permutations over Lagrange-bases for Oecumenical Noninteractive arguments of Knowledge
Groth16
Halo
- Vitalik Buterin: Halo and more: exploring incremental verification and SNARKs without pairings - Proof size reduction
- Recursive Proof Composition without a Trusted Setup
Probabilistic Proof Systems
Pinocchio
Bulletproofs
- Bulletproofs: Short Proofs for Confidential Transactions and More
- Bulletproofs+: Shorter Proofs for Privacy-Enhanced Distributed Ledger
Hash Functions
Systems
Quadratic Span Programs
Zether
Anonymous Zether
Quisquis
Zk-VM
Elliptic Curve
- 2-chains of elliptic curves
- A survey of elliptic curves for proof systems
- ECFFT: Fast Polynomial Algorithms over all Finite Fields