Деплой смарт-контрактов в Avalanche
Avalanche — это не одна цепь, а три: C-Chain (EVM совместимая, где деплоятся смарт-контракты), X-Chain (UTXO для нативного AVAX), P-Chain (управление validator нодами). Для деплоя Solidity контрактов работаем исключительно с C-Chain. Tooling идентичен Ethereum — те же Hardhat, Foundry, те же ABI и bytecode. Отличие в RPC endpoint, chainId и нюансах gas модели.
Chain параметры
Mainnet C-Chain:
- RPC:
https://api.avax.network/ext/bc/C/rpc - Chain ID:
43114 - Explorer: snowtrace.io (форк Etherscan)
- Native token: AVAX
- Block time: ~2 секунды
Fuji Testnet:
- RPC:
https://api.avax-test.network/ext/bc/C/rpc - Chain ID:
43113 - Explorer: testnet.snowtrace.io
- Faucet: faucet.avax.network (1 AVAX в день)
Avalanche C-Chain использует EIP-1559 gas модель. baseFee меняется в зависимости от congestion. Минимальный baseFee на практике — 25 nAVAX. Gas значительно дешевле Ethereum mainnet: деплой типичного ERC-20 контракта обходится в $0.05-0.30 при нормальных условиях.
Конфигурация Foundry
В foundry.toml:
[profile.default]
src = "src"
out = "out"
libs = ["lib"]
solc = "0.8.20"
[rpc_endpoints]
avalanche = "https://api.avax.network/ext/bc/C/rpc"
fuji = "https://api.avax-test.network/ext/bc/C/rpc"
[etherscan]
avalanche = { key = "${SNOWTRACE_API_KEY}", url = "https://api.snowtrace.io/api" }
fuji = { key = "${SNOWTRACE_API_KEY}", url = "https://api-testnet.snowtrace.io/api" }
Деплой скрипт:
# Деплой на Fuji testnet
forge script script/Deploy.s.sol:DeployScript \
--rpc-url fuji \
--broadcast \
--verify \
-vvvv
# Деплой на mainnet
forge script script/Deploy.s.sol:DeployScript \
--rpc-url avalanche \
--broadcast \
--verify \
--ledger \ # Hardware wallet для mainnet
-vvvv
--verify верифицирует контракт на Snowtrace автоматически после деплоя. Snowtrace использует тот же Sourcify/Etherscan API — работает из коробки.
Конфигурация Hardhat
// hardhat.config.ts
const config: HardhatUserConfig = {
solidity: '0.8.20',
networks: {
fuji: {
url: 'https://api.avax-test.network/ext/bc/C/rpc',
chainId: 43113,
accounts: [process.env.PRIVATE_KEY!],
gasPrice: 'auto',
},
avalanche: {
url: 'https://api.avax.network/ext/bc/C/rpc',
chainId: 43114,
accounts: [process.env.PRIVATE_KEY!],
},
},
etherscan: {
apiKey: {
avalanche: process.env.SNOWTRACE_API_KEY!,
fuji: process.env.SNOWTRACE_API_KEY!,
},
customChains: [
{
network: 'avalanche',
chainId: 43114,
urls: {
apiURL: 'https://api.snowtrace.io/api',
browserURL: 'https://snowtrace.io',
},
},
{
network: 'fuji',
chainId: 43113,
urls: {
apiURL: 'https://api-testnet.snowtrace.io/api',
browserURL: 'https://testnet.snowtrace.io',
},
},
],
},
};
Подводные камни при деплое
AVAX decimals. AVAX имеет 18 decimals, как ETH. Стандартные расчёты газа работают без изменений. Но в коде не должно быть захардкоженных gas price значений для Ethereum — они будут некорректны на Avalanche.
Блок газ лимит. C-Chain gas limit: 15,000,000 gas per block — идентично Ethereum mainnet. Контракты с размером близким к 24KB лимиту Ethereum компилируются и деплоятся аналогично.
RPC rate limits. Публичный RPC api.avax.network имеет rate limits. Для production фронтенда и бэкенда использовать платные ноды: Infura (поддерживает Avalanche), Alchemy, QuickNode, или собственную ноду.
Chainlink на Avalanche. Chainlink Price Feeds, VRF v2 и Automation — все доступны на C-Chain mainnet. Chainlink VRF v2 на Fuji testnet тоже доступен. Адреса контрактов Chainlink отличаются от Ethereum — всегда брать с docs.chain.link/avalanche.
Avalanche Subnets
Если стандартная C-Chain не подходит по причинам privacy, кастомного gas токена или специфических правил валидации — Avalanche позволяет деплоить собственные Subnets. Subnet — это независимая цепь с собственными валидаторами, полностью EVM-совместимая.
Subnet деплой — отдельный проект (настройка genesis, валидаторов, bridge к C-Chain). Для запуска production Subnet минимально нужно 5 валидаторов, каждый должен также валидировать C-Chain (требование Avalanche).
Для большинства проектов C-Chain mainnet достаточен. Subnet — для enterprise или gaming приложений с очень высоким TPS требованием или кастомным fee токеном.
Ориентиры по срокам
Деплой существующего Ethereum контракта на Avalanche C-Chain с верификацией на Snowtrace — от 4 часов (настройка tooling + тест на Fuji + mainnet деплой). Если контракт использует Chainlink или другие внешние зависимости — дополнительный день на верификацию корректности адресов в Avalanche ecosystem.







