Overview
Some of us in OpenZeppelin are interested in studying cryptography. We thought it would be useful (for us and the community) to do so in public. Over the next few weeks and months, we intend to produce a series of posts covering everything a generic developer would need to know about cryptography in order to understand blockchains at a fundamental level. We will then move on to cryptography as it is used throughout the ecosystem.
We welcome you to follow along, suggest topics and contribute wherever you can.
Structure
- Each post will focus on one core concept.
- The intended audience has no previous mathematical or cryptographic training. Prerequisites should be listed explicitly.
- Linking to good resources instead of reinventing the wheel is encouraged.
- All posts (including this one) are wiki posts, so they can be edited by anyone.
Table of Concepts / Upcoming Topics
Core Blockchain Concepts
- Radical Asymmetry (the philosophy of cryptography)
- Hash Functions
- Keys, Nonces and Salts
- Proof of Work
- Proof of stake
- Merkle Trees
- Digital Signatures
- Elliptic Curves
- ECDSA
- Bitcoin and Ethereum (how do the previous concepts work together)
Additional concepts
- Multi-signature wallets
- Hierarchical Deterministic Wallets
- Hash Commitments
- IPFS / Swarm
- Zero Knowledge Proofs
- SNARKS / STARKS
- ZK Rollup
- Verifiable Delay Functions
- RSA Accumulators
- BLS Signatures
- ECIES