Деплой смарт-контрактов в Cronos
Cronos — EVM-совместимый блокчейн от Crypto.com, работающий на базе Cosmos SDK с механизмом консенсуса Proof of Authority (переходит к PoS). С точки зрения деплоя контрактов — стандартный EVM, но есть нюансы с нативным токеном (CRO), RPC эндпоинтами и верификацией.
Сетевые параметры
| Параметр | Mainnet | Testnet |
|---|---|---|
| Chain ID | 25 | 338 |
| RPC | https://evm.cronos.org |
https://evm-t3.cronos.org |
| Explorer | cronoscan.com | testnet.cronoscan.com |
| Native token | CRO | TCRO |
| Block time | ~5.6 секунд | ~5.6 секунд |
Конфигурация Hardhat
// hardhat.config.ts
import { HardhatUserConfig } from "hardhat/config";
import "@nomicfoundation/hardhat-toolbox";
import "@nomicfoundation/hardhat-verify";
const config: HardhatUserConfig = {
solidity: {
version: "0.8.20",
settings: {
optimizer: { enabled: true, runs: 200 },
},
},
networks: {
cronos: {
url: process.env.CRONOS_RPC ?? "https://evm.cronos.org",
chainId: 25,
accounts: [process.env.DEPLOYER_PRIVATE_KEY!],
gasPrice: 5000000000000, // 5000 gwei — Cronos использует высокие значения
},
"cronos-testnet": {
url: "https://evm-t3.cronos.org",
chainId: 338,
accounts: [process.env.DEPLOYER_PRIVATE_KEY!],
},
},
etherscan: {
apiKey: {
cronos: process.env.CRONOSCAN_API_KEY!,
},
customChains: [
{
network: "cronos",
chainId: 25,
urls: {
apiURL: "https://api.cronoscan.com/api",
browserURL: "https://cronoscan.com",
},
},
],
},
};
Важно с gasPrice: Cronos использует нестандартно высокие числовые значения для gas price. Типичные значения 5000+ gwei в Wei — это нормально, не смущаемся. Фактическая стоимость транзакции в USD низкая из-за цены CRO.
Получение тестовых токенов
Для Cronos Testnet (chainId 338) тестовый TCRO получаем через официальный фосет: https://cronos.org/faucet. Ограничение — один запрос в сутки на адрес.
Деплой и верификация
# Деплой через Hardhat
npx hardhat run scripts/deploy.ts --network cronos
# Верификация
npx hardhat verify --network cronos DEPLOYED_ADDRESS "Constructor Arg"
# Foundry конфигурация
# foundry.toml
[profile.default]
solc_version = "0.8.20"
[rpc_endpoints]
cronos = "${CRONOS_RPC}"
cronos_testnet = "https://evm-t3.cronos.org"
[etherscan]
cronos = { key = "${CRONOSCAN_API_KEY}", url = "https://api.cronoscan.com/api" }
forge create src/MyContract.sol:MyContract \
--rpc-url cronos \
--private-key $DEPLOYER_PRIVATE_KEY \
--verify \
--etherscan-api-key $CRONOSCAN_API_KEY
Особенности Cronos
CRO как native token — в EVM контрактах CRO ведёт себя как ETH. msg.value, address.transfer(), payable функции работают стандартно. Wrapped CRO (WCRO) аналогичен WETH.
Cosmos IBC интеграция — Cronos может принимать активы из Cosmos экосистемы через IBC. Если контракт работает с bridged Cosmos assets, учитываем что адреса могут быть в формате Bech32 на уровне Cosmos, но в EVM слое это стандартные 0x адреса.
Finality — блоки финализируются быстро (~5-6 секунд). Для большинства dApp достаточно 1-2 подтверждения.
Совместимость — полная EVM эквивалентность. OpenZeppelin контракты, Uniswap v2/v3 форки, Chainlink Price Feeds (есть на Cronos mainnet) — всё работает без изменений.
Типичные проблемы при деплое
Nonce issues — если предыдущая транзакция зависла, следующий деплой падает с nonce error. Решение: отправить пустую транзакцию с тем же nonce и повышенным gas price для замены.
RPC нестабильность — публичный RPC evm.cronos.org иногда лагает. Для production используем платные ноды от Alchemy (есть поддержка Cronos) или Ankr.
Contract size limit — 24KB лимит как на Ethereum. При превышении — паттерн Diamond (EIP-2535) или разбивка на несколько контрактов.







