Intermediate
How to Create an EVM-Based Subnet Configuration
This tutorial explains how to create an Ethereum Virtual Machine (EVM) based Subnet configuration in Avalanche-CLI. The tutorial walks through the process of creating the Subnet using the Subnet Creation Wizard. The wizard asks several questions to configure the Subnet such as choosing the SubnetEVM as the virtual machine, selecting a unique ChainID, naming the Subnet’s native token, selecting the latest version of Subnet-EVM, choosing a gas fee configuration, airdropping tokens, and adding precompiles. The tutorial also explains how to use a custom Genesis and overwrite an existing Subnet configuration.
To create an Ethereum Virtual Machine (EVM) compatible Subnet, Avalanche-CLI runs Subnet-EVM as its virtual machine.
Prerequisites
Using the Subnet Creation Wizard
The Subnet Creation Wizard walks you through the process of creating your Subnet. To get started, pick a name for your Subnet and run
avalanche subnet create <subnetName>
The following sections walk through each question in the wizard.
Choose Your VM
Select SubnetEVM
.
Enter Your Subnet’s ChainID
Choose a unique positive integer for your EVM-style ChainID. Visit chainlist to verify that your selection is indeed unique.
Token Symbol
Enter a string to name your Subnet’s native token. The token symbol doesn’t necessarily need to be unique. Example token symbols are AVAX, JOE, and BTC.
Subnet-EVM Version
Select Use latest version
.
Gas Fee Configuration
Select your fee configuration. The Ava Labs team highly recommends Low disk use / Low Throughput 1.5 mil gas/s (C-Chain's setting)
.
Airdrop
For development Subnets, select Airdrop 1 million tokens to the default address (do not use in production)
.
When you are ready to start more mature testing, select Customize your airdrop
to distribute funds to additional addresses.
Precompiles
If you’d like to add precompiles to customize your Subnet, select Yes
.
If you don’t or don’t know what that means, select No
.
Wrapping Up
If the command works successfully, it prints Successfully created subnet configuration
.
Using a Custom Genesis
The Subnet Creation Wizard won’t customize every aspect of the Subnet-EVM genesis for you. If you’d like complete control, you can specify a custom genesis by providing a path to the file you’d like to use. This bypasses most of the wizard’s prompts. Run with:
avalanche subnet create <subnetName> --file <filepath>
Overwriting an Existing Subnet Config
By default, creating a Subnet configuration with the same subnetName
as one that already exists fails. To overwrite an existing config, use the -f
force flag:
avalanche subnet create <existingSubnetName> -f