# Cryptography and ZKP Primer Resources
## General Blockchain Concepts
- [Do you need a Blockchain?](https://eprint.iacr.org/2017/375.pdf)
- [Bitcoin Original Paper](https://bitcoin.org/bitcoin.pdf)
- [Ethereum White Paper](https://ethereum.org/669c9e2e2027310b6b3cdce6e1c52962/Ethereum_Whitepaper_-_Buterin_2014.pdf)
- [Ethereum Beige Paper](https://cryptopapers.info/assets/pdf/eth_beige.pdf)
- [Ethereum Yellow Paper](https://ethereum.github.io/yellowpaper/paper.pdf)
## Zero Knowledge Proofs
### [Zero-Knowledge Proofs Starter Pack](https://ethresear.ch/t/zero-knowledge-proofs-starter-pack/4519)
- [Introduction to zk-SNARKs with examples](https://media.consensys.net/introduction-to-zksnarks-with-examples-3283b554fc3b)
- [What are zk-SNARKs (Zcash blog)](https://z.cash/technology/zksnarks)
- [BabySNARK- The simplest possible SNARK for NP. You know, for kids!](https://github.com/initc3/babySNARK)
### Why and How zk-SNARK Works:
- [Why and How zk-SNARK Works 1: Introduction & the Medium of a Proof](https://medium.com/@imolfar/why-and-how-zk-snark-works-1-introduction-the-medium-of-a-proof-d946e931160)
- [Why and How zk-SNARK Works 2: Proving Knowledge of a Polynomial](https://medium.com/@imolfar/why-and-how-zk-snark-works-2-proving-knowledge-of-a-polynomial-f817760e2805)
- [Why and How zk-SNARK Works 3: Non-interactivity & Distributed Setup](https://medium.com/@imolfar/why-and-how-zk-snark-works-3-non-interactivity-distributed-setup-c0310c0e5d1c)
- [Why and How zk-SNARK Works 4: General-Purpose Computation](https://medium.com/@imolfar/why-and-how-zk-snark-works-4-general-purpose-computation-dcdc8081ee42)
- [Why and How zk-SNARK Works 5: Variable Polynomials](https://medium.com/@imolfar/why-and-how-zk-snark-works-5-variable-polynomials-3b4e06859e30)
- [Why and How zk-SNARK Works 6: Verifiable Computation Protocol
](https://medium.com/@imolfar/why-and-how-zk-snark-works-6-verifiable-computation-protocol-1aa19f95a5cc)
- [Why and How zk-SNARK Works 7: Constraints and Public Inputs](https://medium.com/@imolfar/why-and-how-zk-snark-works-7-constraints-and-public-inputs-e95f6596dd1c)
- [Why and How zk-SNARK Works 8: Zero-Knowledge Computation](https://medium.com/@imolfar/why-and-how-zk-snark-works-8-zero-knowledge-computation-f120339c2c55)
### Electric Coin blog series:
- [Explaining SNARKs Part I: Homomorphic Hidings](https://electriccoin.co/blog/snark-explain/)
- [Explaining SNARKs Part II: Blind Evaluation of Polynomials](https://electriccoin.co/blog/snark-explain2/)
- [Explaining SNARKs Part III: The Knowledge of Coefficient Test and Assumption](https://electriccoin.co/blog/snark-explain3/)
- [Explaining SNARKs Part IV: How to make Blind Evaluation of Polynomials Verifiable](https://electriccoin.co/blog/snark-explain4/)
- [Explaining SNARKs Part V: From Computations to Polynomials](https://electriccoin.co/blog/snark-explain5/)
- [Explaining SNARKs Part VI: The Pinocchio Protocol](https://electriccoin.co/blog/snark-explain6/)
- [Explaining SNARKs Part VII: Pairings of Elliptic Curves](https://electriccoin.co/blog/snark-explain7/)
### Vitalik Buterin's blog series on SNARKs:
- [Part 1: Quadratic Arithmetic Programs: from Zero to Hero](https://medium.com/@VitalikButerin/quadratic-arithmetic-programs-from-zero-to-hero-f6d558cea649)
- [Part 2: Exploring Elliptic Curve Pairings](https://medium.com/@VitalikButerin/exploring-elliptic-curve-pairings-c73c1864e627)
- [Part 3: Zk-SNARKs: Under the Hood](https://medium.com/@VitalikButerin/zk-snarks-under-the-hood-b33151a013f6)
### Protocol descriptions:
- [zkSNARKs in a Nutshell](https://chriseth.github.io/notes/articles/zksnarks/zksnarks.pdf)
- [Groth16 protocol](https://eprint.iacr.org/2016/260.pdf) (original paper)
- [Zcash Sapling protocol spec](https://github.com/zcash/zips/blob/master/protocol/protocol.pdf) (very useful as detailed cheat-sheet of all cryptography used)
## Math Background
### Pairings
- [Pairings for beginners - Costello notes](https://static1.squarespace.com/static/5fdbb09f31d71c1227082339/t/5ff394720493bd28278889c6/1609798774687/PairingsForBeginners.pdf)
- [Part 2: Exploring Elliptic Curve Pairings](https://medium.com/@VitalikButerin/exploring-elliptic-curve-pairings-c73c1864e627)
- [An Introduction to Pairing-Based Cryptography - Alfred Menezes](https://www.math.uwaterloo.ca/~ajmeneze/publications/pairings.pdf)
### BLS12-381 Elliptic Curve
- [BLS12-381 For The Rest Of Us](https://hackmd.io/@benjaminion/bls12-381#Twists)
## PlonK
- [PLONK paper](https://eprint.iacr.org/2019/953.pdf)
- [Awesome PLONK](https://github.com/Fluidex/awesome-plonk): A curated list of awesome things related to plonk proof system.
- [Understanding PLONK by Vitalik Buterin](https://vitalik.ca/general/2019/09/22/plonk.html)
- [Ignition: Trusted Setup MPC Ceremony for PLONK](https://medium.com/aztec-protocol/aztec-announcing-our-ignition-ceremony-757850264cfe)
- PONK by Hand
- [Part 1](https://research.metastate.dev/plonk-by-hand-part-1/)
- [Part 2](https://research.metastate.dev/plonk-by-hand-part-2-the-proof/)
- [Part 3](https://research.metastate.dev/plonk-by-hand-part-3-verification/)
- [Into the deep end: making sense of PLONK - Zac Williamson - Youtube](https://www.youtube.com/watch?v=ty-LZf0YCK0)
- [Dusk PlonK Implementation (Rust)](https://github.com/dusk-network/plonk)
## Multi-Party Ceremony (MPC) for Trusted Setup
- [“Powers of Tau” protocol for scalable generation of structured reference string](https://eprint.iacr.org/2017/1050)
- [Perpetual powers of Tau Repository](https://github.com/weijiekoh/perpetualpowersoftau/tree/master/0000_weijie_initial)
- Tornado cash Repos for MPC
- [phase2-bn254](https://github.com/tornadocash/phase2-bn254)
- [phase2-wasm](https://github.com/tornadocash/phase2-wasm)
- [trusted setup server](https://github.com/tornadocash/trusted-setup-server)
- [Implementation of ZCash MPC Ceremony, Part I: "Powers of Tau"](https://github.com/ebfull/powersoftau)
- [Archived independent implementation in Go](https://github.com/FiloSottile/powersoftau/)
- [Implementation of ZCash MPC Ceremony, Part I: "Sapling Circuit"](https://github.com/zcash-hackworks/sapling-mpc)
## Internal Documentation
- [Basic concepts](https://hackmd.io/@Serg10JV/ByMbUBzoc)
- [Link to Google Drive Folder](https://drive.google.com/drive/folders/1DR__DoP9nk224gPQley6YOaGtwsOEzhg?usp=sharing)
## Mixers