Awesome
Blockchain for Software Engineers
Inspired by Google Interview University, Machine Learning for Software Engineers, The Authoritative Guide to Blockchain Development
"The blockchain symbolizes a shift in power from the centers to the edges of the networks." - William Mougayar
What is it?
A collection of resources that I've gathered over the past couple years while advancing in the blockchain world. Hope this can help others.
This list is by no means exhaustive and is centered on the end goal of building production quality smart contracts and DApps. My journey has been focused on Ethereum but I would love this list to expand and not just be limited to one Blockchain. All contributions welcome!
About me
Security researcher and engineer
Goal
Create and curate a list of resources for aspiring and seasoned blockchain engineers.
Table of Contents
- What is it?
- About me
- Goal
- Covering the Material
- How to use it
- Data Structures
- Cryptography
- Distributed Systems
- Networking
- Economics
- Intro to Bitcoin and Blockchain
- Bitcoin and Blockchain Tutorials
- Advanced Bitcoin
- Bitcoin and Blockchain Books
- Intro to Ethereum
- Solidity and Smart Contracts
- Beginner Ethereum Tutorials
- Smart Contract Security
- Tools of the Trade
- Ethereum Tutorials
- Ethereum Books
- Blockchain Blogs
- Forums and Threads
- Other Tools
- Podcasts
- Hackathons
- Additional Curated Lists of Resources
- Getting a Job
- Job Boards
Covering the Material
Over the past two years, I found it useful to pick a subject from the list below, read it thoroughly, take notes, and implement on a blockchain running locally. I tend to prefer a top-down, hands on approach to learning. I found it extremely important to build and push my understanding further daily.
How to use it
Everything below is a prioritized outline and you should work from the top to the bottom.
- Create a new branch so you can check items like this, just put an x in the brackets: [x]
Background
Blockchain technology is a multi-disciplinary field built atop cryptography, economics, and computer science. The background section includes some requisite fundamentals in these fields that will ensure you have solid footing before diving deeper into the blockchain specifics since many of the features that exist today are results of years and years of previous research.
Data Structures
Cryptography
- Public/Private Key Cryptography
- RSA
- ECDSA
- Cryptographic Hash Function
- Commitment Schemes
- Merkle Trees
- Merkle Proofs
Distributed Systems
- Consistency
- Consensus
- Linearizable
- Eventual Consistency
- Fault Tolerance
- Time In a Distributed System
- Tradeoff: Safety vs. Liveness
- Byzantine Fault Tolerance
- Distributed Databases
Networking
Economics
Bitcoin
Intro to Bitcoin and Blockchain
- Blockchain 101
- The Blockchain Explained to Web Developers
- What is a distributed ledger?
- How Bitcoin actually works
- Bitcoin Whitepaper
- Bitcoin Mining
- Walk through a Bitcoin Block header
- Bitcoin Block Explorer
- Bitcoin History
- Bitcoin Forum
- Blockchains from a distributed computing perspective
Bitcoin and Blockchain Tutorials
Advanced Bitcoin
- Bitcoin's Academic Pedigree
- Bitcoin Forks
- Double Spends, 51% Attacks
- Replay Attacks
- Segregated Witness
- Bitcoin Scalability Problems
- Mega Bitcoin Resources List
Books
- Mastering Bitcoin
- Blockchain: Blueprint for a New Economy
- CryptoAssets: The Innovative Investors Guide to Bitcoin and Beyond
- The Business Blockchain
- Blockchain Revolution
Ethereum
Intro to Ethereum
- Ethereum Whitepaper
- Ethereum Yellow Paper
- Ethereum in 25 Minutes
- Intro to Crypto-economics
- Ethereum's Account Model
- Industry Support
- The Ethreum Community Forum
- ERC-20
- The Anatomy of ERC20
- The Anatomy of ERC721
- Ethereum for Web Developers
- Ethereum Wallets
- A Crash Course for Mechanism Design
Solidity and Smart Contracts
- Solidity Docs
- Basics of Solidity By Example
- Learn X in Y
- Browser IDE
- BitDegree
- The Hitchhiker's Guide to Smart Contracts
- 11 Best Ethereum Development Tools
- Understanding Ethereum Smart Contract Storage
Beginner Tutorials
- Build Your First Blockchain Application in 5 Quick Steps
- CryptoZombies
- Build Your Own Ethereum Token
- Building a Voting System
Smart Contract Security
- Smart Contract Best Practices
- Secure Generation of Randomness
- Ethernaut - Smart Contract Hacking Game
- Hack This Contract Game
- Additional Resources
- Slither: Static Analyzer for Solidity
Tools of the Trade
Security Tools
- Slither: Solidity Static Text Analyzer
- Echidna: Smart Contract Fuzzer
- Mythril: Dynamic Analysis Swiss Army Knife
Ethereum Tutorials
- End to End Ethereum Tutorial
- Introduction to Ethereum Smart Contract Development
- Ethereum Programming for Web Developers
- Ethereum Petshop
- How to Create Your Own Token in 1 Hour
- How Launch Your Own Production Ready Cryptocurrency
- How to Create Your Own Crowdsale
- Building Battle Tested Contract w/ Open Zeppelin
Books
- Mastering Ethereum
- The Business Blockchain
- Mastering Ethereum
- Introducing Ethereum and Solidity
- Ethereum Development with Go
Blockchain Community
Blogs
- Coindesk
- ETH Research
- Vitalik Buterin
- Hacking, Distributed
- Unenumerated
- Money Stuff
- Chris Burniske
- Great Wall of Numbers