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
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 covers the modern Solidity and EVM landscape. Everything here feeds directly into Part 2 — these concepts appear throughout Uniswap, Aave, and MakerDAO source code.
Modules
| # | Module | Duration | File |
|---|---|---|---|
| 1 | Solidity 0.8.x Modern Features | ~2 days | 1-solidity-modern.md |
| 2 | [EVM-Level Changes (EIP-1153, EIP-4844, EIP-7702)](2-evm-changes.md) | ~2 days | 2-evm-changes.md |
| 3 | [Modern Token Approvals (EIP-2612, Permit2)](3-token-approvals.md) | ~3 days | 3-token-approvals.md |
| 4 | [Account Abstraction (ERC-4337, EIP-7702, Paymasters)](4-account-abstraction.md) | ~3 days | 4-account-abstraction.md |
| 5 | Foundry Workflow & Testing (Fuzz, Invariant, Fork) | ~2-3 days | 5-foundry.md |
| 6 | Proxy Patterns & Upgradeability | ~1.5-2 days | 6-proxy-patterns.md |
| 7 | Deployment & Operations | ~0.5 day | 7-deployment.md |
Part 1 Checklist
Before moving to Part 2, verify you can:
- Explain when and why to use
uncheckedblocks - Define and use user-defined value types with custom operators
- Use custom errors in both
revertandrequiresyntax - 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 snapshotfor 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
initializerand_disableInitializers()are critical for proxy security - Write a deployment script that deploys, initializes, and verifies a contract
These concepts show up repeatedly in the production DeFi code covered in Part 2.