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

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1 услугВсе 1306 услуг
Деплой смарт-контрактов в Optimism
Простая
от 4 часов до 2 рабочих дней
Часто задаваемые вопросы
Направления блокчейн-разработки
Этапы блокчейн-разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1221
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1163
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    855
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1056
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    828

Деплой смарт-контрактов в 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 сохраняет deployment адреса в broadcast/ директории.

Тестирование на Optimism Sepolia

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