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

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Деплой смарт-контрактів у Optimism
Простий
від 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

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

Optimism — це EVM-еквівалентний L2 на базі OP Stack з Bedrock архітектурою. З точки зору деплойменту контракти компілюються точно як для Ethereum mainnet. Відмінності з'являються при роботі з L1↔L2 messaging, отриманні L1 block data та розрахунку gas fees.

Конфігурація для деплойменту

Додаємо 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

Gas на 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() для розрахунку повної вартості.

Верифікація контракту

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

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

Для proxy контрактів (OpenZeppelin TransparentUpgradeableProxy) верифікуємо implementation та proxy окремо, потім використовуємо Etherscan UI для лінкування.

Специфіка OP Stack

Predeploys — ряд системних контрактів задеплоєні по фіксованим адресам. Важливі:

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

Sequencer та finality — транзакції підтверджуються sequencer-ом швидко (2 секунди), але finality на L1 займає ~7 днів (challenge period). Для більшості dApp це не важливо, але враховуємо при роботі з L1 withdrawals.

Block time — 2 секунди. Якщо контракт використовує block.timestamp для timeouts або TWAP розрахунків — це впливає на параметри.

Деплойментт через 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 зберігає адреси деплойменту в broadcast/ директорії.

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

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