mirror of
https://github.com/sCrypt-Inc/awesome-zero-knowledge-proofs.git
synced 2025-12-17 01:24:20 +01:00
master
docs: removed link to the project that no longer exists
Awesome ZKPs
A curated list of awesome ZKP resources, libraries, tools and more.
Please check the contribution guidelines for information on formatting and writing pull requests.
Contents
- Introductions
- Tutorials
- Programming Languages
- Tools
- Books
- Communities
- Other Curated Lists
- Proof Systems
- Trusted Setup
- Applications
- License
Introductions
- 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
Tutorials
- 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
Programming Languages
- 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://book.cairo-lang.org/ |
| Leo | Functional, statically-typed | https://github.com/AleoHQ/leo | https://developer.aleo.org/developer/language/layout/ |
Tools
ZoKrates: a toolbox for zkSNARKs
- Zero Knowledge Proofs Workshop - Zokrates Tutorial
- Zokrates Hello World Walkthrough
- Practical ZK-SNARKs for Ethereum
- Elliptic Curve BLS12–381 Support on Bitcoin
Snarkjs: zkSNARK implementation in JavaScript & WASM
Books
- 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
Communities
- Zero-knowledge podcast: #1 podcast for ZK
- 0xPARC: Applied ZK Learning Group
- ZKProof: an academic and industry initiative for standardizing ZKPs
Other Curated Lists
- 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
Proof Systems
| 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
zkSNARKs
PLONK
- 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
Videos
- 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)
zkSTARKs
Bulletproofs
Trusted Setup
- 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
Subversion Resistance
- A Subversion-Resistant SNARK
- Zero knowledge, subversion resistance, and concrete attacks | Steven Goldfeder | RWC 2018
- Zero-Knowledge Contingent Payments Revisited
Applications
Blockchains
- 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)
Games
- 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
Machine learning and AI
- 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
Auctions
- Blind auction using zero knowledge: discussion
- Publicly Verifiable Sealed-Bid Auctions with a Trustless Auctioneer
Marketplace
- 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
Social
- Zkitter: Anonymous Social Network
- ETHdos Numbers: measure your degrees of separation from Vitalik using recursive SNARKs
Mixer
- Tornado Cash: Introducing Private Transactions On Ethereum
- Otter Cash: A privacy layer for the Solana ecosystem
Rollup
- ZK-Rollups on Bitcoin: Way More Scalable than on Ethereum
Tokens / NFT
- 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
Voting / Participation
- 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
Identity
- ZK Identity: Why and How by 0xPARC Part 1 and Part 2
- ZK-Identity (Semaphore): Private Identity Claim System by minting a NFT
- Interop: 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
Attestation
- 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
Other app directories
- 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
- 10 zkApps Use Cases on Mina Protocol
License
To the extent possible under law, sCrypt Inc has waived all copyright and related or neighboring rights to this work.
Description
Languages
Markdown
100%