This is a course for hackers, programmers, and software engineers who learn by doing!

By the end of this course, you’ll have an EVM implementation that can run almost any EVM program (including the Solidity contract you made last week!). Along the way, you’ll learn how EVM works, from simple stack operations to code deployment and proxy contracts.

When I built EVM from scratch for the first time, I was blown away at how simple and elegant it was. Now I hope to share my excitement with you!

The goal of this course is to be addictive. Working on the unit tests should feel like a game, solving one puzzle at a time.

Getting Started

Estimated time: 15-60 minutes

<aside> 💡 Students who complete all 5 steps in their first day have a much higher chance to finish the full course

</aside>

Step 1: Clone GitHub repo

The repo contains more than 100 test cases we’ll be working through, plus templates for the most popular programming languages:

git clone <https://github.com/w1nt3r-eth/evm-from-scratch>

Step 2: Choose the programming language

You can implement EVM in any programming language. I highly recommend using the programming language you already know. Many students from the previous cohorts decided to learn both EVM and Rust at the same time but ended up getting stuck a lot.

The repo already has templates for JavaScript, TypeScript, Python, Go, and Rust. You are welcome to use them, or create your own:

cd evm-from-scratch
tree
.
├── go
├── javascript
├── python
├── rust
├── scripts
└── typescript