# About This Course

LearnEVM.com is designed to be a mix of two things:

  1. A reference manual you can return to when dealing with the gritty details of each chapter, and:
  2. A linear course, with its content sorted such that you can read from beginning to end in a progressive manner.

# Prerequisites

To get the most out of this course, you should be familiar with:

  • What Ethereum is and why we can run code on it.
  • Generally what the fields for a transaction are.
  • How transactions make it from wallet to chain.
  • A rough mental model of how contracts run on-chain.
  • Writing smart contracts in Solidity or a similar language.
  • A basic idea of how CPUs run low-level instructions.

# Learning Objectives

After going through this course, you will:

  • Understand what it means for the EVM to be a virtual machine.
  • Understand what the EVM’s execution environment is and how to work with it.
  • Have a deep understanding of how contract deployment works, and how Solidity deployment patterns work under the hood.
  • Understand how function calls work, and the differences between the CALL variants.
  • Understand the anatomy of ABI encoded function calls.
  • The inner workings of common Solidity idioms.
  • The inner workings of Solidity data structures and their security implications.
  • Common Solidity gas optimizations based on their compiled SLOAD/SSTORE opcodes.
  • How to write smart contracts in raw opcodes 😎

Each chapter has its own collection of intricate details; the above list only describes concepts at high level.

# Exercises

In an ideal world, each chapter and section would have self-paced checkpoints and exercises. However, our audits team is also busy with audits, so we're releasing the first version without exercises in the interest of launching sooner than later.

# Incremental

Also in the interest of launching sooner than later, you'll find many chapters are still (coming soon). We will be releasing new chapters periodically; follow us on Twitter to stay updated.