Деплой смарт-контрактов в 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 как чекпоинт-слой. С точки зрения разработчика: полная 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. Деплой аналогичен, но gas дешевле 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 дней.