Деплойментт смарт-контрактів в 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. Стандартні розрахунки газу працюють без змін. Але в коді не має бути захардкодженого Ethereum gas price значення — вони будуть некоректні на 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, валідаторів, мосту до 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.







