Course curriculum

  • 1

    Introduction

    • Welcome!

    • About You

    • Promotional Material Opt-in

    • How to be successful in this course

  • 2

    Tools for the Course

    • Slack

    • GitHub

    • Visual Studio Code (Optional)

    • Oracle VM VirtualBox (Optional)

    • External Resources

    • Request for Lessons

  • 3

    Module 1: Review of Blockchain Technology

    • Welcome to Module 1: Review of Blockchain Technology

    • Module 1 Pre-Assessment (Not Graded)

    • Contextualizing Blockchain

    • 1.1 Distributed Ledgers

    • 1.2 Consensus Mechanisms

    • 1.3 Mining in Ethereum

    • 1.4 Public and Private Blockchains

    • 1.5 Distributed Ledger Platforms

    • Module 1 Test

    • Module 1 Recap

  • 4

    Module 2: Blockchain Primitives

    • Welcome to Module 2: Blockchain Primitives

    • Module 2 Pre-Assessment (Not Graded)

    • 2.1 Cryptographic Hash Functions

    • 2.1.1 Playing with Cryptographic Hash Functions

    • 2.2 Public Key Cryptography

    • 2.3 Merkle Trees

    • 2.3.1 Playing with Merkle Trees

    • 2.4 Blockchain Structure

    • 2.4.1 Building a Blockchain

    • 2.5 Smart Contracts

    • 2.5.1 Smart Contracts

    • 2.6 Nodes

    • 2.7 Blockchain Forks

    • Module 2 Test

  • 5

    Module 3: Ethereum Basics

    • Welcome to Module 3: Ethereum Basics

    • Module 3 Pre-Assessment (Not Graded)

    • 3.1 Accounts

    • 3.2 Transactions

    • 3.3 Gas and Fees

    • 3.4 Ethereum Structure

    • 3.5 Externally Owned Accounts and Ethereum Transactions

    • 3.6 Generating Ethereum Addresses

    • Module 3 Test

    • Module 3 Recap

    • Module 3 Feedback

  • 6

    Module 4: Traditional and Decentralized Application Development

    • Welcome to Module 4: Traditional and Decentralized Application Development

    • Module 4 Pre-Assessment

    • 4.1 Decentralized Application Development

    • 4.2 Similarities and Differences

    • 4.3 Development Environment Setup Options

    • 4.4 Key Developer Tools

    • 4.5 Installing and Using Geth

    • 4.6 Connecting to a testnet

    • 4.7 Geth PoA Private Network Tutorial

    • Module 4 Test

    • Module 4 Recap

  • 7

    Module 5: Development Frameworks and Environment

    • Welcome to Module 5: Development Frameworks and Environment

    • Module 5 Pre-Assessment

    • Introducing Metamask

    • Interview with Dan Finlay from Metamask

    • 5.1 Development Workflow: A Low Level Overview

    • 5.2 Development Workflow: Ganache CLI

    • 5.3 The Truffle Development Environment

    • 5.4 Installing Truffle

    • 5.5 The Structure of a Truffle Project

    • 5.6 The Ethereum Package Manager

    • Ganache GUI

    • Module 5 Recap

    • Module 5 Feedback

  • 8

    Module 6: Solidity Fundamentals

    • Welcome to Module 6: Solidity Fundamentals

    • Module 6 Pre-Assessment

    • 6.1 Data Types and Variables

    • 6.2 Functions

    • 6.3 Storage and Memory

    • 6.4 Contract Structure

    • 6.5 Reading Smart Contracts with Remix

    • 6.6 Smart Contract ABI

    • 6.7 Events and Logs

    • 6.8 Factory Contracts

    • Module 6 Test

    • Module 6 Recap

  • 9

    Module 7: Writing Smart Contracts

    • In Module 7

    • Module 7 Pre-Assessment

    • 7.1 Introductory Smart Contracts

    • 7.2 Inter-Contract Execution

    • 7.3 Inheritance

    • 7.4 Libraries and the Ethereum Package Manager

    • 7.5 Smart Contract System Design

    • 7.6 Writing a Smart Contract (Proof of Existence Exercise)

    • 7.7 Deeper into Smart Contracts (Multi-Signature Wallet Exercise)

    • 7.8 Debugging Truffle Tests

    • 7.9 Practice Writing Smart Contracts

    • Module 7 Test

  • 10

    Module 8: Ethereum and the End User

    • Module 8

    • Module 8 Pre-Assessment

    • 8.1 Introduction to Web 3.0

    • 8.1.1 Using the Web3.js JavaScript Library

    • 8.1.2 Connecting Web3.js to a Contract

    • 8.2 Building Truffle for the Web

    • 8.2.1 Updates to Metamask

    • 8.3 Integrating with React

    • 8.3.1 Rimble UI

    • Module 8 Test

    • Module 8 Recap

  • 11

    Module 9: Smart Contracts Pitfalls, Testing and Debugging

    • In Module 9

    • Module 9 Pre-Assessment

    • 9.1 Writing Tests

    • 9.1.1 Catching Solidity Errors in Truffle Tests

    • 9.2 Smart Contract Best Practices

    • 9.3 Exploits and Dangers

    • 9.4 Optimizing Gas

    • 9.5 Safety Checklist

    • 9.6 Security Analysis Tools

    • 9.7 Attack Demos

    • 9.7.1 Denial of Service Attack Example

    • 9.7.2 Reentrancy Attack Example

    • 9.7.3 Integer Over/Underflow Example

    • Module 9 Test

    • Module 9 Recap

    • Feedback up to Module 9

  • 12

    Module 10: Advanced Topics

    • Module 10

    • 10.1 Smart Contract Design Patterns

    • 10.2 The Ethereum Name Service

    • 10.3 Introduction to IPFS

    • 10.4 Upgradable Contracts

    • 10.5 Oracles with Rhombus

    • 10.5.1 Rhombus Network

    • 10.5.2 Rhombus Network Tutorial

    • 10.6 Formal Verification

    • 10.7 What are Zero-Knowledge Proofs?

    • Module 10 Recap

  • 13

    Module 11: Additional Topics

    • Module 11

    • 11.1 Introduction to Vyper

    • 11.1.1 Writing Ethereum Smart Contracts in Vyper

    • 11.2 Ethereum Improvement Proposals (EIPs)