Awesome
<div align="center"> <h1 align="center">Awesome Zero Knowledge</h1> <p align="center"> <a href="https://github.com/sindresorhus/awesome"> <img alt="awesome list badge" src="https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg"> </a> <a href="https://github.com/ventali/awesome-zk/graphs/contributors"> <img alt="GitHub contributors" src="https://img.shields.io/github/contributors/ventali/awesome-zk"> </a> <a href="http://makeapullrequest.com"> <img alt="pull requests welcome badge" src="https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat"> </a> </p> <p align="center">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 </p> </div>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.
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
- Understanding ZKPs Through Illustrated Examples
- Understanding zero-knowledge proofs without cryptography background
- A Non-Mathematical Introduction to Zero Knowledge Proof
- Zero Knowledge Proofs: An Illustrated Primer
- What are zk-SNARKs?
- ZKPs for Engineers: Introduction
- Privacy in Cryptocurrencies: An Overview
- Zero Knowledge virtual machine step by step
- Vitalik's blogs for STARKs
- Explaining STARKs
- zkSNARKs in a nutshell
- The RareSkills Book of Zero Knowledge
- 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
Mathematical Foundations
- Introduction to Mathematical Cryptography
- Modern Computer Algebra
- Explicit-Formulas Database
- Abstract Algebra
- Algebraic Number Theory
- Computational Introduction to Number Theory and Algebra
- A Graduate Course in Applied Cryptography
- Lattice Cryptography
- The Design of Rijndael
More specific to ZK:
- Elliptic Curves Number Theory And Cryptography
- Pairings for Beginners
- Succint Proofs and Linear Algebra
- Proofs, Arguments, and Zero-Knowledge
Projects
Zk-EVM
- Matter Labs zkEVM
- Hermez zkEVM
- Scroll and their zkEVM
- Appliedzkp: Circuits for zkEVM
- ConsenSys zkEVM and their gnark library
- TinyZKEVM
- Sovereign Labs: zkEVM on Risc0
Zk-VM
- Delphinus zkWASM and their github
- zkMove: bytecode VM and their github
- zkRiscV: RV32I Risc-V instruction set
- OlaVM: An Ethereum compatible ZKVM
- Tritron VM
- Risc0: a general purpose zkVM based on RISCV
- Miden: STARK-based zero-knowledge virtual machine
- Valida: A zkVM with an LLVM frontend
Benchmarking
- ZK System Benchmarking: compare the performance of different zero-knowledge proof libraries
- ZK-Bench: Benchmarks for popular ZK frameworks, continuously updated
- zk-Harness: a comprehensive benchmarking framework for zk SNARKs
Zk-Layer1
- Mir Protocol
- 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
- Espresso Systems: single-shot scaling & privacy solution
Zk-Layer2
- Aztec: Scalable Privacy on Ethereum
- StarkNet: permissionless decentralized ZK-Rollup
- Scroll: an EVM-equivalent zkRollup
- zkSync: an EVM-compatible zkRollup
- Polygon Zero: a layer 2 scaling solution for Ethereum
- Polygon Miden: a STARK-based zkRollup
- Taikocha: a zkEVM-based general-purpose zkRollup
- 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
Privacy Layer
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
- =nil;'s zkLLVM: LLVM-based zero-knowledge proof systems compiler
- CirC: Compiler Infrastructure for Cryptosystems and Verification
- Trustless Labs: ZK-friendly Multi-rollup Architecture for Web3 Applications
- SuccinctX: Infrastructure for zk-app development
Framework / SDK
- Adapt Framework: a toolkit for building end-to-end decentralized systems
- Atlas Protocol: Zero-Knowlege Blockchain Development Platform
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
- zkSNARK-Sudoku: Sudoku verifier using zkSNARK and circom.
- Leela vs the World: the first zkAI game
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
- Intmax2: A ZK-rollup with Minimal Onchain Data and Computation Costs
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
- Privacy pools: Opt-in or Opt-out Anonymity Sets
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
- zCloak: Privacy-first DID and verifiable computation infrastructure
- Everest ID: Your global everything account
- Proof of Passport: Privacy Preserving Passport Proving
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
- Particle Network: Zero Knowledge Wallet-as-a-Service, confidential social logins and transactions
Trustless Bridge
- =nil; Foundation's Solana and Mina to Ethereum zkBridge
- 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
- 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
- =nil; Foundation's Proof Market: a decentralized proof market protocol
- 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
- =nil; `DROP DATABASE *: A database management system for blockchains enhanced by provable SQL
- 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
- Hyper Oracle: Programmable zkOracle network with zkIndexing and zkAutomation
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
- Checks and balances: Machine Learning and zero-knowledge proofs
- 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
- ZKML: Bridging AI/ML and Web3 with Zero-Knowledge Proofs
- 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
Language examples
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 |
plonky3 | rust | A toolkit for implementing polynomial IOPs (PIOPs), such as PLONK and STARKs | https://github.com/Plonky3/Plonky3 |
Tools
Plonk
- plonkit: zkSNARK toolkit to work with circom DSL in PLONK proof system
- Plonk: A pure Rust PLONK implementation
ECDSA
Circuit Building Library
- Circom: zkSnark circuit compiler
- Arkworks: an ecosystem for developing with zkSNARKs
- ZoKrates: a toolbox for zkSNARKs on Ethereum
- Snarkjs: zkSNARK implementation in JavaScript & WASM
- RCC: Rust Circuit Compiler
- Chiquito: DSL for Halo2 circuits
Formal Verification
- The State of Current Progress
- Ecne: an engine for verifying the soundness of R1CS constraints
- Picus: Symbolic Virtual Machine for Automated R1CS Verification
- Papyrus: A Symbolic Execution Tool for Cairo
Other Tools
- zkREPL: an in-browser collaborative development environment
- crrl: Rust library for cryptographic research
- Shield: a development framework for circom developers
Auditing and Consulting
- ABDK
- Least Authority
- ZK Security
- 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
- 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