A curated list of awesome ZKP resources, libraries, tools and more.
Please check the contribution guidelines for information on formatting and writing pull requests.
- Introductions
- Tutorials
- Programming Languages
- Tools
- Books
- Communities
- Other Curated Lists
- Proof Systems
- Trusted Setup
- Applications
- License
- Understanding ZKPs Through Illustrated Examples
- Zero Knowledge Proofs: An Illustrated Primer by Matthew Green
- Demonstration of Zero-Knowledge Proof for Sudoku Using Standard Playing Cards
- zudoku: ZK proving knowledge of Sudoku solutions
- Zero Knowledge Proof and its Applications in Bitcoin
- zk-SNARKs on Bitcoin
- ZKPs for Engineers: Introduction
- zk Battleship interactive course by sCrypt
- Create Your First Zero-Knowledge Proof Program on Bitcoin: use ZoKrates
- Intro to Circom and Snarkjs by Iden3
- Getting Started with zkSnarks on ZoKrates
- Proving Knowledge of a Hash Pre-Image with ZoKrates
- Zokrates Hello World Walkthrough
- Zero Knowledge Proofs Workshop - Zokrates Tutorial
- A Practical Guide To Building Zero Knowledge dApps: Circom
- 0xPARC circom and Halo2 learning resources
- Introduction to Domain Specific Languages (DSLs) by Alex Ozdemir
- Programming Languages in ZKP by Delendum Ventures: video is on YouTube
Name | Type | GitHub | Documentation |
---|---|---|---|
ZoKrates | Python subset | https://github.com/Zokrates/ZoKrates | https://zokrates.github.io |
Circom | HDL | https://github.com/iden3/circom | https://docs.circom.io |
SnarkyJS | Typescript DSL | https://github.com/o1-labs/snarkyjs | https://docs.minaprotocol.com/en/zkapps/snarkyjs-reference |
Cairo | for STARK | https://github.com/starkware-libs/cairo-lang | https://cairo-lang.org/docs/ |
Leo | Functional, statically-typed | https://github.com/AleoHQ/leo | https://developer.aleo.org/developer/language/layout/ |
- Zero Knowledge Proofs Workshop - Zokrates Tutorial
- Zokrates Hello World Walkthrough
- Practical ZK-SNARKs for Ethereum
- Elliptic Curve BLS12β381 Support on Bitcoin
- Proofs, Arguments, and Zero-Knowledge (Justin Thaler, 2022)
- A Graduate Course in Applied Cryptography (Dan Boneh and Victor Shoup, 2020)
- The MoonMath Manual to zk-SNARKs: minimal experience in cryptography required
- Zero-knowledge podcast: #1 podcast for ZK
- 0xPARC: Applied ZK Learning Group
- ZKProof: an academic and industry initiative for standardizing ZKPs
- matter-labs: Awesome zero knowledge proofs
- ventali/awesome-zk
- zkp.science
- Zero-Knowledge Proofs Starter Pack
- gakonst/awesome-starknet
- Zero Knowledge Canon by a16z
- ZKP Knowledge Base by Delendum Research
SNARKs | STARKs | Bulletproofs | |
---|---|---|---|
proving time | O(N * log(N)) | O(N * poly-log(N)) | O(N * log(N)) |
verifying time | ~O(1) | O(poly-log(N)) | O(N) |
proof size | ~O(1) | O(poly-log(N)) | O(log(N)) |
Trusted setup required? | SOMETIMES π | NO π | NO π |
- ποΈββοΈ ZK Bench - open source, continuous benchmarks for popular zk implementations
Polylang | Miden | Risc Zero | Noir (Barretenberg) | Leo | |
---|---|---|---|---|---|
Frontend (Language) | Typescript-like | MASM (Assembly) | Rust, C, C++ | Rust-like | Leo (DSL) |
ZK | STARK | STARK / zkVM | STARK / zkVM | SNARK | SNARK |
Unbounded Programs | β | β | β | β | β |
Audit | β Planned 2024 | β Planned 2024 | β Planned 2024 | β Planned 2024 | β Planned 2023 |
External Libraries | β | β | |||
EVM Verifier | β | β | β | ||
GPU | β Metal | β Metal | β Metal, CUDA | β | β |
Assert | 0.05s | 0.03s | 6.18s | 0.01s | 3.11s |
Optimised Hashes | RPO+2 more | RPO+2 more | SHA-256 | Pedersen+2 more | Pedersen+3 more |
SHA-256 Hash | |||||
1k bytes | 21.55s | 20.33s | 6.20s | 3.63s | 2.81s |
10k bytes | 235.71s | 177.79s | 6.27s | 33.89s | 10.81s |
Pedersen Hash | |||||
1k bytes | β | β | β | 0.54s | 1.99s |
10k bytes | β | β | β | 1.87s | 2.28s |
RPO Hash | |||||
1k bytes | 0.17s | 0.03s | β | β | β |
10k bytes | 1.85s | 0.30s | β | β | β |
Fibonacci | |||||
1 | 0.03s | 0.03s | 6.20s | 0.01s | 1.89s |
10 | 0.05s | 0.03s | 6.21s | 0.01s | 1.89s |
100 | 0.16s | 0.03s | 6.20s | 0.01s | 1.88s |
1,000 | 2.56s | 0.08s | 6.17s | 0.01s | 1.89s |
10,000 | 21.17s | 0.59s | 12.57s | 0.01s | 1.91s |
100,000 | 221.24s | 9.55s | 105.13s | 0.01s | π§ |
Merkle Tree | |||||
Membership Proof | π§ | 0.06s | 12.56s | 3.52s | π§ |
Merge | |||||
1 + 1 | π§ | 0.06s | 12.65s | π§ | π§ |
- Proving system comparison
- zk-SNARKs vs. Zk-STARKs vs. BulletProofs
- Comparing General Purpose zk-SNARKs
- Comparison of Different zk-SNARKs
- A Cambrian Explosion of Crypto Proofs Eli Ben-Sasson
- Awesome PLONK: a curated list of awesome things related to Plonk
- How PLONK works by sCrypt: Part 1 and Part 2
- PLONK on Bitcoin
- PLONK by Hand: 3 parts from MetaState
- A good tutorial on PLONK in CN
- Understanding PLONK by Vitalik
- Understanding PLONK by David Wong
- A Python tutorial of the paper PLONK
- Another good tutorial on PLONK in CN
- ZK Study Club - Plonk with Zac Williamson
- How PLONK works by David Wong: a 12-part series
- PLONK: Privacy in a World of Universal SNARKs - Zac Williamson
- PLONK: Ariel Gabizon (Protocol Labs)
- The Incredible Machine: ZKP proving Sudoku and physical trusted setup
- Diving into the zk-SNARKs Setup Phase
- Trusted Setup Workshop by 0xparc
- Setup Ceremonies
- On-Chain Trusted Setup Ceremony
- How do trusted setups work?
- Announcing the Perpetual Powers of Tau Ceremony to benefit all zk-SNARK projects
- Trusted setup ceremonies explored
- A Subversion-Resistant SNARK
- Zero knowledge, subversion resistance, and concrete attacks | Steven Goldfeder | RWC 2018
- Zero-Knowledge Contingent Payments Revisited
- Zcash: Privacy-Protecting Digital Currency (SNARKs)
- Monero: Private Digital Currency (Bulletproofs)
- Mina Protocol: A Constant-Size Blockchain (recursive SNARKs)
- Namada: Asset Agnostic, Multichain privacy (SNARKs)
- Incomplete Information Games on Bitcoin
- Dark Forest: zkSNARK space warfare strategy game
- Battleship: the Worldβs First Interactive Zero-Knowledge Proof Tutorial
- Zordle: ZK Wordle: the first e2e web app built using Halo 2 ZK proofs
- Mastermind and its repo
- exgrasia: On-chain RPG-style sandbox game
- Sudoku
- zksnark-sudoku
- Isaac: a physics-powered onchain reality on Starknet and their blog
- Crypto Maze: action-packed MMO
- Mental Poker
- Mental Poker in the Age of SNARKs: part 1 and part 2
- ZK Poker
- sample code in Circom
- Cachebox: an escape game built on the MINA blockchain
- Lottery
- chess-cairo - A Cairo contract to play chess in Starknet
- GoL2 - Cellular automata on replicated state machine
- zkAutoChess: An On-chain Auto Chess Battle Game
- MNIST for recognizing handwritten digits on Bitcoin
- zk-MNIST: web frontend app + Jupyter notebook with ML model generation on Ethereum and their demo
- zkCNN: GKR-based zero-knowledge proof protocol for CNN model inference and their paper
- Object detection and classification on an image
- Blind auction using zero knowledge: discussion
- Publicly Verifiable Sealed-Bid Auctions with a Trustless Auctioneer
- A collection of solutions leveraging the power of ZK information bounties
- Nightmarket: a Dark Forest plugin that allows players to buy and sell planet coordinates: a blog post
- Modulo Zero: on-chain solution for private data exchange and their Repo
- zkPoD: A Practical Decentralized System for Data Exchange
- Zkitter: Anonymous Social Network
- ETHdos Numbers: measure your degrees of seperation from Vitalik using recursive SNARKs
- Tornado Cash: Introducing Private Transactions On Ethereum
- Otter Cash: A privacy layer for the Solana ecosystem
- ZK-Rollups on Bitcoin: Way More Scalable than on Ethereum
- Scalable Peer to Peer Tokens on Bitcoin: Solve the Back-to-Genesis Problem using recursive SNARKs
- 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
- Zero Knowledge Message Board by nulven, yush_g and their article
- Semaphore: a privacy gadget built on Ethereum
- ZKU-Vote: a platform that allows anonymous voting
- OVOTE: Offchain Voting with Onchain Trustless Execution and their document
- ZK Identity: Why and How by 0xPARC Part 1 and Part 2
- ZK-Identity (Semaphore): Private Identity Claim System by minting a NFT
- Interep: An on-ramp for reputation: a bridge for moving reputation from centralized into decentralized systems
- Aletheia: an anonymous & on-chain reputation based login system for websites
- Continuum: background checker
- Proof of Passport: proof of official passport
- zkAttestor: Block and State Attestations on Ethereum: repo
- zkPhoto: Private Authentic Photo Sharing
- Using ZK Proofs to Fight Disinformation: proofs of permissible photo edits
- zkDocs: Document Management: Github repo
- UniRep (Universal Reputation): a private and non-repudiable reputation system
- Bitcoin SV Zero-Knowledge Proof Hackathon finalists
- zkDAO category from Harmony
- Cairo goldmine: A comprehensive, annotated list repos in STARKNET
- ventali/awesome-zk
- Six Moonshot ZK Applications
- Final Projects by ZKU Graduates
- zkApps on Mina
- 10 zkApps Use Cases on Mina Protocol
To the extent possible under law, sCrypt Inc has waived all copyright and related or neighboring rights to this work.