Blockchain Developer Program Learning Resources
Blockchain Developer Program External Learning Resources
General Learning tools
- Litepaper.com - LitePaper transforms the complex blockchain space into beautiful bundles of learning.
- EthereumDev.io
- Comprehensive Solidity tutorials
- Ethereum Development Walkthrough (5 part series) -- Hackernoon
- CryptoZombies
- Ethernaut Security game by Open Zeppelin
- Visual Overview of Ethereum in 116 slides
- Dan Finlay on How Ethereum Works
- Solidity by Example -- Solidity Docs
- Style Guide -- Solidity Docs
- Ethereum Wiki Main Page
General
- Week in Ethereum News
- A Vision of the Internet of Value by Long Vuong
- Difference between app coins and protocol tokens
- An Ethereum Technical Specification
Medium
Module 1: Review of Blockchain Technology
Consensus Mechanisms
Mining in Ethereum
Public and Private Blockchains
Module 2: Blockchain Primitives
Cryptographic Hash Functions
- Blockchain Underpinnings: Hashing by ConsenSys Media
- Cryptographic hash functions on Wikipedia
- Cryptographic hash functions - Kahn Academy
Merkle Trees
- Merkling in Ethereum by Vitalik Buterin
- Ever Wonder How Merkle Trees Work by ConsenSys Media
- Patricia Merkle Trees - Ethereum Wiki
Blockchain Structure
- A visual demonstration of a blockchain data structure
- Bitcoin Wiki - Blockchain
- Fat Protocols by Joel Monegro
- Solidity Documentation: Blockchain Basics
Smart Contracts
Nodes
Blockchain Forks
Module 3: Ethereum Structure
Accounts
Transactions
- An externally owned account on Etherscan
- A contract account on Etherscan
- How does Ethereum verify contract execution?
- Solidity Docs on Transactions
- What is the difference between a transaction and a contract message?
Gas and Fees
Ethereum Structure
- How does Ethereum work anyway?
- Ethereum Block Architecture
- The Ethereum Virtual Machine
- Ethereum Development tutorial
- Ethstats
Module 4: Traditional and Decentralized Application Development
Traditional and Decentralized App Development
- Why use a blockchain?
- Ethereum for Web Developers
- A Brief Overview of dApp Development
- Building for Blockchain: Transitioning from Web 2.0 to Web 3.0
Development Environment Setup Options
- Creating a private chain / testnet
- The Go-Ethereum (Geth) Github Repo
- Infura: A public API Interface for Ethereum
Key Developer Tools
-
Parity: A Rust-based Ethereum client
- Metamask: Chrome Extension for Ethereum
- Remix: an in-browser IDE for Smart Contract Development
- Truffle: A Blockchain Development Framework
- Truffle Ganache: A Private Testnet for Blockchain Development
- Web3.js: Javascript Library for Ethereum + front-end integration
- IPFS website: Distributed File Storage Mechanism
- Swarm documentation: Distributed File Storage within Geth (beta)
Module 5: Development Frameworks and Environment
Development Workflow: Ganache CLI
Install Truffle
- How to install Truffle and Ganache CLI on Windows for blockchain development
- The Truffle docs quickstart on working with Ganache
- Configuring Visual Studio Code for Blockchain Development
- Resolving naming conflicts on Windows
Initializing Truffle
- Truffle Boxes are helpful boilerplates that allow you to focus on what makes your dapp unique. In addition to Truffle, Truffle Boxes can contain other helpful modules, Solidity contracts & libraries, front-end views and more; all the way up to complete example dapps.
- For quick reference, the Truffle docs provide a concise, clear explanation of how to Initialize a project
- EthPM.com provides an interface to explore the Ethereum Package Registry. It currently lives on the Ropsten testnet.
- The ethpm registry is based on the ERC190 Smart Contract Packaging Specification
- Ethpm: Reusable smart contract packages
Module 6: Solidity Fundamentals
Data Types and Variables
Functions
Storage and Memory
Contract Structure
Reading Smart Contracts
Smart Contract ABI
Events and Logs
- Technical introduction to Events and Logs in Ethereum by Joseph Chow, Consensys Media
- Events - Solidity Docs
Factory Contracts
Module 7: Writing Smart Contracts
Introductory Smart Contracts
Inter-Contract Execution
- Inter-Contract Execution gist
- CALL vs CALLCODE vs DELEGATECALL in Solidity
- Difference between call, callcode and delegatecall - stackexchange
- Interactions between contracts
Inheritance
Libraries and the Ethereum Package Manager
- Library Driven Development in Solidity
- Libraries in the Solidity Docs
- What are the steps to compile and deploy a library in solidity?
- Package Management with EthPM in Truffle
- EthPM: Reusable Smart Contract Packages
Smart Contract System Design
- Towards better Ethereum voting protocols
- Token-weighted Voting Implementation Part 1
- Token-weighted Voting Implementation Part 2
- Other uses of Commit Reveal
Debugging Truffle Tests
Module 8: Ethereum and the End User
Introduction to Web 3.0
- A Warm Welcome to Web3 and the Future of the Internet
- Latest stable Javascript JSON-RPC API documentation (v 0.2x.x)
- Ethereum Web3.js library documentation v1.0
Building Truffle for the Web
Integrating with React
- Truffle box React
- If React isn't your thing - Truffle maintains a list of boxes that make getting started with Truffle and your favorite framework super easy. If you don't see one that suits your needs, feel free to create you own!
- React & Ethereum: Getting Started with the minimum tool set Required: Part 1 of 4
Generating Ethereum Accounts in Javascript
- Understanding the concept of private keys, public keys and addresses in Ethereum
- Ethereum yellow paper
Module 9: Smart Contract Pitfalls, Testing and Debugging
Writing Tests
- Writing Solidity tests in Truffle
- Writing Javascript tests in Truffle
- Testing for throws in Truffle Solidity tests
Smart Contract Best Practices
- Smart contract best practices
- Recommendations for Smart Contract Security in Solidity
- Common bugs, attacks and best practices
- Frontrunning
Exploits and Dangers
- A survey of attacks on Ethereum smart contracts
- A list of known bugs from the Solidity docs
- A hacker stole $31M of Ether - how it happened, and what it means for Ethereum
Optimizing Gas
Safety Checklist
Security Analysis Tools
Module 10: Ethereum Advanced Topics
Design Patterns
Upgradable Contracts
- Writing Upgradable Contracts in Solidity
- Software Engineering techniques - ConsenSys
- Upgradable smart contracts. What we’ve learned building Insurance on a Blockchain
- Summary of Ethereum Upgradeable Smart Contract R&D
Oracles
- Oraclize + Remix demo - click the tabs along the top to see implementations of different contracts
- Oraclize documentation
uPort
- uPort
- Developer Documentation
- Launch A Decentralized Identity Application using the Developer Friendly uPort/React Truffle Box
The Ethereum Name Service
IPFS
Formal Verification
- What is formal verification, and why is it important for smart contracts? - stackexchange
- Formal Verification of Ethereum Contracts
- Automated formal verification tool
Module 11: Further
LLL
- LLL documentation
- Compiling an LLL contract for the first time
- The Ethereum name service GitHub has some great examples of LLL code that is in production
Vyper
- Vyper Documentation
- Vyper browser IDE
- How I learned to stop worrying and love Viper — Part 1
- An Early Look At Vyper
Ethereum Improvement Proposals