#
About This Course
LearnEVM.com is designed to be a mix of two things:
- A reference manual you can return to when dealing with the gritty details of each chapter, and:
- 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.