Blockchain & Smart Contracts (Solidity)

Learn blockchain and Solidity: the EVM and gas, contract design, ERC-20 and NFTs, upgrades, oracles, security and audits, Foundry testing and dApps.

Start course →

What you'll learn

  • Explain how blockchains, Ethereum accounts, the EVM, gas fees, keys and layer 2s work.
  • Write Solidity contracts with correct types, data locations, functions, modifiers, events and errors.
  • Design contracts with inheritance, interfaces, libraries, OpenZeppelin and role-based access control.
  • Implement ERC-20, ERC-721 and ERC-1155 tokens, pull payments, upgradeable proxies and oracle integrations.
  • Prevent reentrancy and other common vulnerabilities with secure patterns, fuzzing, invariants and audits.
  • Test, deploy, verify and optimise contracts with Foundry and Hardhat, and connect dApp front ends with viem and wagmi.

Syllabus

Blockchain and Ethereum Foundations

  1. What a Blockchain Is
  2. Ethereum, the EVM, Accounts and Gas
  3. Keys, Wallets, Testnets and Layer 2s

Solidity Basics

  1. Your First Contract
  2. Types, Mappings and Structs
  3. Functions, Modifiers, Events and Errors

Contract Design and Reuse

  1. Storage, Memory, Calldata and Transient Storage
  2. Inheritance, Interfaces, Abstract Contracts and Libraries
  3. OpenZeppelin and Access Control

Token Standards

  1. ERC-20 Fungible Tokens
  2. ERC-721 NFTs
  3. ERC-1155, Signatures and Merkle Allowlists

Ether, External Calls and Upgrades

  1. Sending and Receiving Ether
  2. Calling Other Contracts and Upgradeability
  3. Oracles, Time and Randomness

Smart Contract Security

  1. Reentrancy and Checks-Effects-Interactions
  2. Common Vulnerabilities
  3. Security Process: Testing, Tools and Audits

Development Tooling and Deployment

  1. Foundry: forge, cast and anvil
  2. Hardhat, ethers.js and viem
  3. Deploying, Verifying and Operating Contracts

Gas, dApps, DeFi and Revision

  1. Gas Optimisation
  2. Building dApp Front Ends
  3. DeFi Building Blocks and Layer 2s
  4. Revision and Interview Questions