Розгортання смарт-контрактів у 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 |
| Оглядач | cronoscan.com | testnet.cronoscan.com |
| Нативний токен | CRO | TCRO |
| Час блоку | ~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 як нативний токен — у EVM контрактах CRO поводиться як ETH. msg.value, address.transfer(), payable функції працюють стандартно. Wrapped CRO (WCRO) аналогічний WETH.
Інтеграція з Cosmos IBC — Cronos може отримувати активи з екосистеми Cosmos через IBC. Якщо контракт працює з мостованими активами Cosmos, враховуйте, що адреси можуть бути у форматі Bech32 на рівні Cosmos, але у EVM шарі це стандартні адреси 0x.
Фіналізація — блоки фіналізуються швидко (~5-6 секунд). Для більшості dApps достатньо 1-2 підтвердження.
Сумісність — повна EVM еквівалентність. Контракти OpenZeppelin, форки Uniswap v2/v3, ціндерфіди Chainlink (доступні на Cronos mainnet) — всё працює без змін.
Типові проблеми при розгортанні
Проблеми з nonce — якщо попередня транзакція застрягла, наступне розгортання падає з помилкою nonce. Рішення: надіслати порожню транзакцію з тим же nonce та підвищеною газовою ціною для заміни.
Нестабільність RPC — публічний RPC evm.cronos.org іноді працює з затримками. Для production використовуйте платні вузли від Alchemy (підтримка Cronos доступна) або Ankr.
Ліміт розміру контракту — лімітація 24KB як на Ethereum. При перевищенні використовуйте паттерн Diamond (EIP-2535) або розділіть на кілька контрактів.







