Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Part 1 — Solidity, EVM & Modern Tooling

Duration: ~16 days (3-4 hours/day) Prerequisites: Prior Solidity experience (0.6.x-0.7.x era), familiarity with EVM basics Pattern: Concept → Read production code → Build → Extend


Why Part 1 Exists

You know Solidity. You’ve written contracts, deployed them, tested them. But the language, the EVM, and the tooling have all evolved significantly since mid-2022. Solidity 0.8.x introduced features that change how production DeFi code is written. The EVM gained new opcodes that protocols like Uniswap V4 depend on. Token approval patterns shifted from raw approve toward signature-based flows. Account abstraction went from theory to 40+ million deployed smart accounts. And Foundry replaced Hardhat as the default for serious protocol work.

This part gets you current. Everything here feeds directly into Part 2 — you’ll encounter every one of these concepts when reading Uniswap, Aave, and MakerDAO source code.


Modules

#ModuleDurationFile
1Solidity 0.8.x Modern Features~2 days1-solidity-modern.md
2[EVM-Level Changes (EIP-1153, EIP-4844, EIP-7702)](2-evm-changes.md)~2 days2-evm-changes.md
3[Modern Token Approvals (EIP-2612, Permit2)](3-token-approvals.md)~3 days3-token-approvals.md
4[Account Abstraction (ERC-4337, EIP-7702, Paymasters)](4-account-abstraction.md)~3 days4-account-abstraction.md
5Foundry Workflow & Testing (Fuzz, Invariant, Fork)~2-3 days5-foundry.md
6Proxy Patterns & Upgradeability~1.5-2 days6-proxy-patterns.md
7Deployment & Operations~0.5 day7-deployment.md

Part 1 Checklist

Before moving to Part 2, verify you can:

  • Explain when and why to use unchecked blocks
  • Define and use user-defined value types with custom operators
  • Use custom errors in both revert and require syntax
  • Explain what transient storage is and implement a reentrancy guard using it
  • Describe EIP-4844’s impact on L2 DeFi costs
  • Explain why SELFDESTRUCT-based upgrade patterns are dead
  • Describe EIP-7702 and how it relates to ERC-4337
  • Build a contract that accepts EIP-2612 permit signatures
  • Integrate with Permit2 using both SignatureTransfer and AllowanceTransfer
  • Implement EIP-1271 signature verification for smart account compatibility
  • Explain the ERC-4337 flow: UserOp → Bundler → EntryPoint → Smart Account
  • Build a basic paymaster
  • Write fuzz tests with bound() for input constraints
  • Write invariant tests with handler contracts
  • Run fork tests against mainnet with specific block pinning
  • Use forge snapshot for gas comparison
  • Deploy contracts with Foundry scripts
  • Explain the difference between Transparent Proxy, UUPS, and Beacon patterns
  • Deploy a UUPS-upgradeable contract and perform an upgrade
  • Identify storage layout collisions using forge inspect
  • Explain why initializer and _disableInitializers() are critical for proxy security
  • Write a deployment script that deploys, initializes, and verifies a contract

Once you’re confident on all of these, you’re ready for Part 2 — and you’ll find that every single concept here shows up in the production DeFi code you’ll be reading.