Деплойментт смарт-контрактів в Polygon
Polygon PoS — це не окремий L1, а sidechain з власними валідаторами, який використовує Ethereum як checkpoint-шар. З точки зору розробника: повна EVM сумісність, MATIC як gas токен, block time близько 2 секунд, газ в 10-100 разів дешевше Ethereum mainnet. Деплойментт контракту, написаного для Ethereum, на Polygon займає хвилини.
Підготовка до деплойменту
Network конфігурація
Polygon має два публічних RPC:
- Офіційний:
https://polygon-rpc.com(часто перевантажений) - Рекомендований: Alchemy/Infura/QuickNode endpoints (надійніший)
В hardhat.config.ts:
import { HardhatUserConfig } from "hardhat/config"
const config: HardhatUserConfig = {
networks: {
polygon: {
url: process.env.POLYGON_RPC_URL || "https://polygon-rpc.com",
accounts: [process.env.DEPLOYER_PRIVATE_KEY!],
gasPrice: "auto", // або фіксована величина в gwei
chainId: 137
},
amoy: { // Polygon testnet (замінив Mumbai у 2024)
url: "https://rpc-amoy.polygon.technology",
accounts: [process.env.DEPLOYER_PRIVATE_KEY!],
chainId: 80002
}
},
etherscan: {
apiKey: {
polygon: process.env.POLYGONSCAN_API_KEY!,
polygonAmoy: process.env.POLYGONSCAN_API_KEY!
},
customChains: [
{
network: "polygonAmoy",
chainId: 80002,
urls: {
apiURL: "https://api-amoy.polygonscan.com/api",
browserURL: "https://amoy.polygonscan.com"
}
}
]
}
}
Важливо: Mumbai testnet виведений з експлуатації в квітні 2024. Використовуйте Amoy (chainId: 80002).
MATIC для газу
Для Amoy: безплатний faucet на faucet.polygon.technology. Для mainnet: bridge через Polygon Bridge (з Ethereum) або купівля MATIC на біржі з виводом на Polygon мережу напрямку.
Деплойментт
# Деплойментт на testnet
npx hardhat run scripts/deploy.ts --network amoy
# Верифікація на PolygonScan
npx hardhat verify --network amoy DEPLOYED_ADDRESS "constructor_arg1" "constructor_arg2"
# Деплойментт на mainnet
npx hardhat run scripts/deploy.ts --network polygon
npx hardhat verify --network polygon DEPLOYED_ADDRESS
Скрипт деплойменту з збереженням адреси:
import { ethers } from "hardhat"
import fs from "fs"
async function main() {
const [deployer] = await ethers.getSigners()
console.log("Deploying with:", deployer.address)
console.log("MATIC balance:", ethers.formatEther(await deployer.provider.getBalance(deployer.address)))
const Contract = await ethers.getContractFactory("MyContract")
const contract = await Contract.deploy(/* constructor args */)
await contract.waitForDeployment()
const address = await contract.getAddress()
console.log("Deployed to:", address)
// Зберігаємо адресу
const deployments = { polygon: { MyContract: address, deployedAt: new Date().toISOString() } }
fs.writeFileSync("deployments.json", JSON.stringify(deployments, null, 2))
}
main().catch(console.error)
Gas price на Polygon
Polygon використовує EIP-1559 з базовою комісією. Рекомендується не ставити занадто низький maxPriorityFeePerGas — інакше транзакція залипне в mempool:
// Отримання актуальних газових настроєк
const feeData = await provider.getFeeData()
// maxFeePerGas = baseFee * 2 + maxPriorityFeePerGas (автоматично через "auto")
Мінімальний baseFee на Polygon — 30 gwei (після EIP-1559 upgrade). При перевантаженні мережі може вирасти до 300-500 gwei — але в MATIC це все одно копійки відносно Ethereum.
Polygon zkEVM
Якщо потрібна більш сильна зв'язок з Ethereum security model — Polygon zkEVM (chainId: 1101) забезпечує validity proofs на L1. Повна EVM еквівалентність (Type 2 zkEVM). Ті ж інструменти, інші RPC та chainId. Деплойментт аналогічний, але газ дешевше mainnet Ethereum раза в 3-10.
Верифікація та безпека деплойменту
Після деплойменту обов'язково:
- Верифікація вихідного коду на PolygonScan — користувачі і інтеграції можуть видіти ABI і вихідник
- Перевірка конструктора: передані аргументи відповідають очікуваним
- Smoke test базових функцій через PolygonScan Read/Write Contract або hardhat task
Терміни
Деплойментт готового контракту на Polygon Amoy + верифікація: 2-4 години (включаючи налаштування мережі та отримання тестових токенів). Деплойментт на mainnet з перевіркою газових настроєк та верифікацією: 4-8 годин. З нуля, включаючи написання deploy скриптів та міграцій: до 2 днів.







