Avalanche L1s (formerly Subnets, post-Avalanche9000 / ACP-77) are sovereign EVM chains that no longer need to validate the Primary Network and pay a flat continuous fee per validator (starts ~1.33 AVAX/month). The C-Chain (chain ID 43114) remains the default EVM, while custom L1s are launched and managed via avalanche-cli / Builder Console with native ICM (Teleporter) cross-chain messaging and ICTT for token transfers.
- 01sovereign app-specific EVM chains
- 02C-Chain DeFi and consumer apps
- 03Avalanche Warp Messaging / ICM cross-chain logic
- 04ICTT-based token bridging across L1s
- 05low-cost L1 deployment after Avalanche9000
- pnpm add viem wagmi
- # Optional: avalanche-cli for L1 deploy & ops
- curl -sSfL https://raw.githubusercontent.com/ava-labs/avalanche-cli/main/scripts/install.sh | sh -s
| Variable | Scope | Description |
|---|---|---|
| NEXT_PUBLIC_AVAX_RPC_URL | Client | RPC URL — C-Chain mainnet `https://api.avax.network/ext/bc/C/rpc`, or your L1's blockchain RPC. |
| NEXT_PUBLIC_AVAX_CHAIN_ID | Client | Chain ID — 43114 for C-Chain mainnet, 43113 for Fuji testnet, custom for L1s. |
| AVAX_CLI_KEY_NAME | Server | avalanche-cli key name used to sign L1 deploy / management transactions. |
For C-Chain dapps, use viem's built-in `avalanche` / `avalancheFuji` chains and standard wagmi connectors. To deploy a custom L1, use `avalanche-cli`: `avalanche blockchain create my-l1` (pick Subnet-EVM as VM), `avalanche blockchain deploy my-l1 --mainnet` to register validators on the P-Chain and pay the ACP-77 continuous fee, then export the EVM RPC. For cross-chain messaging, deploy `TeleporterMessenger` and call `sendCrossChainMessage({ destinationBlockchainID, destinationAddress, message, requiredGasLimit, allowedRelayerAddresses, feeInfo })`. For token transfers across L1s use ICTT contracts (`TokenHome` on the source, `TokenRemote` on the destination) rather than building a one-off bridge.
- ⚑Avalanche9000 / ACP-77 (Etna, Dec 2024) renamed Subnets to L1s and replaced the 2,000 AVAX validator stake with a per-validator continuous fee — old docs that talk about staking 2,000 AVAX or 'Subnets' are out of date.
- ⚑L1 validators are not required to validate the Primary Network anymore, but you must still pay the continuous P-Chain fee; missing payments deactivates validators and halts the L1.
- ⚑ICM / Teleporter messages require relayers — Ava Labs runs default relayers but for production you should run your own (`awm-relayer`) so liveness does not depend on a third party.
- ⚑Custom gas tokens on L1s break wallets that assume AVAX/ETH. The Core wallet has the best support; MetaMask works but balance UIs may look broken.
- ⚑C-Chain and L1s are independent EVMs — chain IDs, addresses (same EVM address but different state), and gas tokens differ. Multi-chain UX must explicitly switch chains and never assume balances port over.
- ⚑ICTT is the Avalanche-native bridge primitive; do not assume LayerZero/Wormhole/Axelar are deployed on a freshly launched L1 unless you (or the RaaS) wire them up.
- ⚑avalanche-cli is being partially superseded by the Builder Console for L1 management — check current docs at build.avax.network rather than older docs.avax.network pages.