Customizing the EVM Intro to EVM & Precompiles Lesson 4 of 4

Different Versions of EVM

Learn about the different versions of the Ethereum Virtual Machine in the Avalanche ecosystem.

Geth

Geth (or go-ethereum) is the official implementation of an Ethereum client, written in the Go programming language. It is one of the original and most widely used Ethereum clients today. Geth handles transactions, deploys and executes smart contracts, and contains the Ethereum Virtual Machine.

Coreth

Coreth is a fork of Geth maintained by Ava Labs. It ran the C-Chain EVM with Avalanche Consensus until the Helicon upgrade (Fuji: 2026-07-28 15:00 UTC, Mainnet: 2026-09-22 15:00 UTC). Since Helicon, the C-Chain runs the SAE VM (Streaming Asynchronous Execution, ACP-194) at vms/saevm/cchain. Coreth executes only the blocks from before Helicon.

Subnet-EVM

Subnet-EVM is a fork of Coreth designed to facilitate launching customized EVM-based blockchains on an Avalanche L1. It differs from Coreth in the following ways:

  • Configurable Fees and Gas Limits: Customizable fees and gas limits can be set in the genesis file.
  • Network Upgrades: Subnet-EVM activates all Avalanche upgrades before Apricot Phase 6 together, with one "Subnet-EVM" upgrade (subnetEVMTimestamp). Each later upgrade (Durango, Etna, Fortuna, Granite, Helicon) has its own timestamp.
  • Atomic Transactions and Shared Memory Removed: Support for atomic transactions and shared memory has been removed.
  • Multicoin Contracts and State Removed: Multicoin contracts and state tracking are no longer supported.

Precompile-EVM

Precompile-EVM let you register precompiles with Subnet-EVM without a fork of the Subnet-EVM codebase.

Precompile-EVM is archived

Ava Labs archived the Precompile-EVM repository on 2026-10-02. It gets no more releases. Its last release (v0.4.0) builds a plugin with plugin version 44. An AvalancheGo node runs only plugins with its own plugin version: v1.15.0 and v1.15.1 use plugin version 46. Since Helicon, Fuji and Mainnet nodes must run v1.15.0 or later. This course uses the avalanche-academy-start branch, which builds with AvalancheGo v1.11.11 and Subnet-EVM v0.6.10 (plugin version 37). You can run its plugin on a local network, but not on a Fuji or Mainnet node. The current Subnet-EVM code and its precompilegen tool are in AvalancheGo at graft/subnet-evm.

Loading...

Is this guide helpful?