/blockchain-learning-path

A suggested learning path for blockchain development

Blockchain Learning Path

An opinionated learning path for getting into speed with Blockchain (specially Ethereum). This is a work in progress, please open an issue or send a pull request to help improving it.

Pre-requisites

Besides a programming background, this path assumes that the reader is at least a little comfortable with:

Blockchain

  1. Read Blockchain Explained. (Est.time: 26 minutes)
  2. Watch Blockchain - A visual demo. (Est. time: 18 minutes)

Bitcoin

  1. Read How the Bitcoin protocol actually works. (Est. time: 45 minutes)
  2. Watch this video (lighter than the previous article but useful to solidify your knowledge). (Est. time: 26 minutes)

Ethereum

Theory

  1. Read How does Ethereum work, anyway? (Est. time: 38 minutes)
  2. Read this article on smart contracts development. (Est. time: 15 minutes)
  3. Read the Truffle Documentation / Hardhat Documentation
  4. Read the Web3 Documentation / Ethers Documentation
  5. Book Mastering Ethereum

Practice

  1. Learn Ethereum development by making a Zombie Game (Est. time: 8 hs)
  2. Read and make and example: Pet shop tutorial
  3. Time-locked Wallets: An Introduction to Ethereum Smart Contracts
  4. The Ultimate ENS and ĐApp Tutorial
  5. Ultimate Introduction to Ethereum Ðapp Development (Est. time: 4 hs)
  6. Ethernaut is a Web3/Solidity based wargame for those interested in learning ethereum

Courses

  1. Do this course Ethereum and Solidity: The Complete Developer's Guide (Est. time: 24 hs)
  2. Free tutorial Learning Solidity
  3. Introduction to Smart Contract Development with Solidity (Est. time: 2 hs)

Concepts

  1. Crypto vocabulary
  2. Blockchain Oracles, Explained (Est. time: 4 minutes)
  3. ABI (Est. time: 15 minutes)
  4. Keccak256 (Est. time: 15 minutes)
  5. Random numbers (Est. time: 5 minutes)
  6. Velocity of Tokens (Est. time: 9 minutes)
  7. Gas (Est. time: 5 minutes)
  8. Weth
  9. Decentralized Finance (DeFi):

Under the hood

  1. Inside an Ethereum transaction
  2. Diving Into the Ethereum VM

Best Practices

  • Consensys best practices - This document provides a baseline knowledge of security considerations for intermediate Solidity programmers. It is maintained by ConsenSys Diligence, and the broader Ethereum community.
  • Solidity Patterns - A compilation of patterns and best practices.

Libraries

  • dapp-bin - Ethereum repo providing implementations for many common data structures and utilities in Solidity, Serpent and LLL.
  • Solidity Collections - Collections of code snippets and utility libraries.
  • OpenZeppelin - Framework to build secure smart contracts.

Examples

Ethereum vs. Bitcoin

Smart Contract Standards

The Ethereum Request for Comment repository

  • ERCs - Ethereum Improvement Proposals

Tokens

  • ERC-20 - Token contract for fungible assets.
  • ERC-721 - Token standard for non-fungible assets.
  • ERC-918 - Mineable Token Standard.

Others

  • ERC-165 - Creates a standard method to publish and detect what interfaces a smart contract implements.
  • ERC-725 - A standard interface for a simple proxy account.
  • ERC-173 - A standard interface for ownership of contracts.

Toolbox

List of tools curated by Protofire team to better apply best practices to the Protocol and DApps development projects.

General

  • eth-cli - CLI tools.
  • REPL - Solidity REPL.
  • Remix - Online realtime compiler and runtime.

Audit

  • SmartCheck - Online tool for checking smart contracts for vulnerabilities and bad practices.

Utility

  • solhint - Solidity linter that provides security, style guide and best practice rules for smart contract validation.
  • solium - Linter to identify and fix style & security issues in Solidity smart contracts.
  • sol-tester - Utilities for building, linking and testing contracts using go-ethereum and the simulated chain.
  • solidity-coverage - Code coverage tool.
  • TypeChain - TypeScript bindings for Ethereum Smart Contracts.

Miscellaneous

Newsletters

  • Week in Ethereum News - Ethereum news and links, layer 1, layer 2, client releases, stuff for developers, interviews, podcasts, videos, talks, etc
  • Reddit: /r/ethereum/ - Reddit about next-generation platform for decentralised applications.
  • Reddit: /r/ethdev - Reddit about ethereum-related dev talk: Contracts, DApps, Wallets, Clients, Infrastructure, Tooling, UIs, Patterns, and others.
  • Ethereum Research - Civilized discussion furthering Ethereum research

Talks