Деплой смарт-контрактів в Optimism: налаштування, верифікація, газ

Ви написали смарт-контракт на Solidity, протестували на Hardhat, але при деплої в Optimism раптом отримуєте рахунок за газ у $2000. Або контракт не верифікується на optimistic.etherscan, тому що забули врахувати predeploy-адреси. Знайома ситуація? Один наш клієнт втратив $1500 на L1 data fee через н

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

Часті запитання

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

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

Ви написали смарт-контракт на Solidity, протестували на Hardhat, але при деплої в Optimism раптом отримуєте рахунок за газ у $2000. Або контракт не верифікується на optimistic.etherscan, тому що забули врахувати predeploy-адреси. Знайома ситуація? Один наш клієнт втратив $1500 на L1 data fee через неоптимізований calldata — ми переписали скрипт деплою, і комісія впала до $300. Наша команда має 5+ років досвіду в блокчейн-розробці та виконала більше 30 успішних деплоїв на L2. Розберемося, як правильно розгорнути контракт в OP Mainnet, налаштувати інструменти, оптимізувати газ та верифікувати код під ключ. Деплой смарт-контрактів Optimism — процес, який потребує врахування особливостей L2: двокомпонентної комісії, системних контрактів та окремих API-ключів для сканування. Ми розповімо, як уникнути типових помилок та заощадити на газі.

Конфігурація для деплою

Додаємо Optimism в Hardhat або Foundry:

// hardhat.config.ts networks: { optimism: { url: process.env.OPTIMISM_RPC ?? "https://mainnet.optimism.io", accounts: [process.env.DEPLOYER_PRIVATE_KEY!], chainId: 10, }, "optimism-sepolia": { url: "https://sepolia.optimism.io", accounts: [process.env.DEPLOYER_PRIVATE_KEY!], chainId: 11155420, }, } 
# Foundry forge create src/MyContract.sol:MyContract \ --rpc-url https://mainnet.optimism.io \ --private-key $DEPLOYER_PRIVATE_KEY \ --etherscan-api-key $OPTIMISM_ETHERSCAN_KEY \ --verify 

Як влаштований газ на Optimism і як його оптимізувати?

Головна особливість Optimism (і всіх OP Stack чейнів) — gas fee складається з двох частин:

  • L2 execution gas — як звичайний Ethereum gas, але значно дешевший (оплачується в ETH).
  • L1 data fee — вартість публікації calldata транзакції в Ethereum mainnet (для data availability). Після EIP-4844 (blobs) вартість знизилася на 90%+.

Контракт GasPriceOracle (адреса 0x420000000000000000000000000000000000000F) надає методи l1BaseFee(), baseFee(), gasPrice() для розрахунку повної вартості.

Тип комісії Опис Типова частка
L2 execution gas За обчислення на L2, як в Ethereum 10-30%
L1 data fee За публікацію calldata в L1 (Ethereum) 70-90% (до EIP-4844)
Після EIP-4844 Blobs здешевили L1 data fee на 90%+ ~30-50% від загального

Щоб знизити L1 data fee, мінімізуйте розмір calldata: використовуйте події замість storage, передавайте короткі аргументи (uint128 замість uint256), робіть batch-деплой контрактів однією транзакцією. Деплой через Create2 з фіксованою адресою також знижує накладні витрати.

Верифікація проксі-контрактів

Optimism має власний Etherscan (optimistic.etherscan.io) з окремим API ключем:

npx hardhat verify --network optimism \ --contract contracts/MyToken.sol:MyToken \ DEPLOYED_ADDRESS \ "Constructor Arg 1" "Constructor Arg 2" 

Для проксі (OpenZeppelin TransparentUpgradeableProxy) верифікуйте implementation і proxy окремо, потім через Etherscan UI зв'яжіть proxy з implementation.

Специфіка OP Stack

Predeploys — системні контракти за фіксованими адресами:

  • 0x4200...0006 — L2CrossDomainMessenger (для L1↔L2 messages)
  • 0x4200...0010 — L2StandardBridge (бридж ERC-20)
  • 0x4200...000F — GasPriceOracle

Sequencer підтверджує транзакції за ~2 секунди, але фінальність на L1 настає через ~7 днів (challenge period). Для більшості dApp це не критично, але враховуйте при роботі з L1 withdrawals. Block time — 2 секунди: це впливає на параметри, якщо контракт використовує block.timestamp для timeouts або TWAP.

Типові помилки при деплої на Optimism

  • Забули вказати chainId = 10 (Mainnet) або 11155420 (Sepolia) — транзакції не проходять.
  • Не налаштували окремий API ключ для Optimism Etherscan — верифікація падає.
  • Проксі-контракти верифікуються в неправильному порядку — спочатку implementation, потім proxy.
  • L1 data fee розраховується після EIP-4844 — використовуйте GasPriceOracle для актуальних значень.

Деплой через Foundry script

// script/Deploy.s.sol pragma solidity ^0.8.20; import "forge-std/Script.sol"; import "../src/MyProtocol.sol"; contract DeployScript is Script { function run() external { uint256 deployerKey = vm.envUint("DEPLOYER_PRIVATE_KEY"); vm.startBroadcast(deployerKey); MyProtocol protocol = new MyProtocol( 0x4200000000000000000000000000000000000006 // L2CrossDomainMessenger ); console.log("Deployed at:", address(protocol)); vm.stopBroadcast(); } } 
forge script script/Deploy.s.sol:DeployScript \ --rpc-url https://mainnet.optimism.io \ --broadcast \ --verify \ -vvvv 

Флаг --verify автоматично верифікує контракт після деплою. Foundry зберігає deployment адреси в broadcast/ директорії.

Чому варто обрати Optimism для вашого dApp?

Optimism — EVM-еквівалентний L2: ваші контракти на Solidity працюють без змін. Комісії в 10–50 разів нижчі, ніж на Ethereum mainnet. Фінальність — ~2 секунди. Екосистема підтримує Hardhat, Foundry, ethers.js, viem. Типова економія на газі після EIP-4844 становить значну суму.

Що входить в роботу

  • Розробка та конфігурація скриптів деплою (Hardhat/Foundry)
  • Оптимізація газу: мінімізація L1 data fee, використання batch-деплою
  • Верифікація всіх контрактів (включаючи проксі) на optimistic.etherscan
  • Налаштування CI/CD для автоматичного деплою на Sepolia та Mainnet
  • Документація з розгортання та управління контрактами
  • Підтримка протягом місяця після деплою

Процес роботи

Етап Тривалість Результат
Аналітика 1-2 дні Архітектура, список контрактів
Проектування 2-3 дні Скрипти, конфігурації
Реалізація 3-5 днів Деплой на Sepolia
Тестування 2-3 дні Звіт про тести
Деплой 1 день Контракти на Mainnet, верифікація
Підтримка 1 місяць Моніторинг, hotfix при необхідності

Тестування на Optimism Sepolia

Перед mainnet деплоєм тестуємо на Optimism Sepolia (chainId 11155420). Тестовий ETH отримуємо через офіційний faucet або Alchemy/Infura. Optimism Sepolia дзеркалює mainnet конфігурацію, включаючи системні контракти.

Якщо вам потрібно розгорнути контракт на Optimism з гарантією оптимізації газу та коректною верифікацією, зв'яжіться з нами — обговоримо ваш проєкт. Замовте послугу та отримайте надійне розгортання на Optimism.