logoAcademy

Welcome to the Course

Learn how to customize the Ethereum Virtual Machine.

Why take this Course?

A significant innovation in blockchain is the development of multi-chain systems, such as Avalanche, which provide a significant improvement in scalability, interoperability, and flexibility. At the core of these multi-chain systems is the ability to run multiple blockchains powered by different virtual machines simultaneously. Each VM of a chain is optimized for specialized use cases, thereby boosting the network's overall performance.

Configuring and modifying the EVM is an efficient way to create a specialized virtual machine, as it allows developers to build upon years of active community work and leverage the extensive ecosystem surrounding the EVM, including wallets, explorers, and development frameworks.

Course Content

EVM Basics & Precompiles

In the first section of the course we will go through some basic concepts of the EVM, such as the account-based model, keys, addresses, transactions, and blocks. Furthermore, we will explain what a precompile is and show you how to interact with a precompile on the Fuji testnet.

Development Environment Setup

We will explore various ways to set up a development environment for building customized EVMs. You'll learn about GitHub Codespaces and Development Containers (.devcontainer). If you choose a local setup, you'll install a code editor, the Go language, configure your shell, and install additional dependencies.

Hands-On Exercises

The following sections contain hands-on exercises where you customize the EVM. The difficulty of the customizations will increase from section to section. Find out more about each exercise by clicking its name below:

Prerequisites

Avalanche

This course is intended for people with a solid understanding of the basic concepts of Avalanche. You should be familiar with these concepts:

  1. Virtual Machines: What they are and what VM customization means
  2. Blockchains: What the components are of a blockchain and how they interact, specifically how Avalanche L1s leverage precompiles.

If some of this is not clear, I strongly recommend taking the Avalanche Fundamentals and Multi-Chain Architecture courses first.

Coding

You will need a general understanding of software development. You won't have to write a lot of code, but you will have to be able to understand some. Therefore, we recommend:

  1. Solidity: Basic knowledge, familiarity with types and interfaces. Familiarity with Foundry will help in advanced sections.
  2. Go: You don't necessarily need to know Go, but should have some experience with an advanced object-oriented and typed language (C, C++, Java, Typescript)
  3. Testing: It will help you in later sections if you are generally familiar with the concept of unit testing

Learning Outcomes

By the end of this course, students will be able to:

  • Understand what Precompiles are and when to use them.
  • Understand how developing precompiles allows developers to create more optimized and capable blockchain systems, enabling them to address entirely new use cases that were previously unattainable.
  • Apply the knowledge gained in the course by building multiple precompiles

On this page