Деплой смарт-контрактів у Polygon

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Деплой смарт-контрактів у Polygon
Простий
від 4 годин до 2 днів
Часті запитання

Напрямки блокчейн-розробки

Етапи блокчейн-розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1306
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1217
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    919
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1146
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    609
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    884

Деплойментт смарт-контрактів в 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.

Верифікація та безпека деплойменту

Після деплойменту обов'язково:

  1. Верифікація вихідного коду на PolygonScan — користувачі і інтеграції можуть видіти ABI і вихідник
  2. Перевірка конструктора: передані аргументи відповідають очікуваним
  3. Smoke test базових функцій через PolygonScan Read/Write Contract або hardhat task

Терміни

Деплойментт готового контракту на Polygon Amoy + верифікація: 2-4 години (включаючи налаштування мережі та отримання тестових токенів). Деплойментт на mainnet з перевіркою газових настроєк та верифікацією: 4-8 годин. З нуля, включаючи написання deploy скриптів та міграцій: до 2 днів.