Розробка rollup-рішення (Optimistic/ZK)

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Розробка rollup-рішення (Optimistic/ZK)
Складний
від 2 тижнів до 3 місяців
Часті запитання

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

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

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

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

Розробка rollup-рішення (Optimistic/ZK)

Rollup — це L2-рішення, яке виконує транзакції поза основним блокчейном (off-chain) та публікує результат на L1. Два принципово різних підходи до доказу коректності цих результатів ділять простір на Optimistic Rollups та ZK Rollups. Вибір між ними — одне з ключових архітектурних рішень, що визначає весь стек розробки.

Optimistic vs ZK: принципіальна різниця

Optimistic Rollup вважає транзакції коректними за замовчуванням ("оптимістично"). Якщо хтось вважає транзакцію шахрайською — він подає fraud proof протягом challenge window (зазвичай 7 днів). Якщо fraud proof прийнято — транзакція скасовується, challenger отримує винагороду, sequencer втрачає stake.

ZK Rollup публікує разом з пакетом транзакцій криптографічний доказ коректності (validity proof). L1 верифікує proof через смарт-контракт. Якщо proof пройшов перевірку — транзакції гарантовано коректні без довіри до sequencer.

Характеристика Optimistic Rollup ZK Rollup
Finality на L1 7 днів (withdrawal) ~1–30 хв (після публікації proof)
Trust assumptions Честний challenger (1-of-N) Коректність ZK схеми + код verifier
Computation overhead Низький (немає proof generation) Високий (proof generation CPU/GPU intensive)
EVM сумісність Повна (EVM-equivalent) Часткова або повна (залежить від реалізації)
Складність розробки Помірна Висока
Зрілість Висока (Arbitrum, OP з 2021) Зростає (zkSync, Scroll, Polygon zkEVM)

Для більшості application-specific rollup задач у 2024 році вибір — OP Stack або Arbitrum Orbit. ZK стек виправданий, якщо: вам потрібна швидка finality, специфічні privacy вимоги, або rollup для кастомної ZK логіки.

OP Stack: розгортування Optimistic Rollup

OP Stack — фреймворк від Optimism для створення власних L2/L3 цепочок (superchain). Використовується Base, Zora, Mode, Blast.

Компоненти OP Stack

L1 (Ethereum) ← → op-batcher (публікує tx дані в L1)
                  op-proposer (публікує state roots в L1)

L2:
  op-geth (modified geth, execution engine)
  op-node (consensus/derivation layer, читає L1 дані)

Вимоги для development/testnet

L1 нода (або Sepolia RPC endpoint від Alchemy/Infura)
L2 сервер: 8 CPU, 16 GB RAM, 500 GB SSD

Деплой OP Stack через optimism-package

# Установка kurtosis (orchestration tool)
curl -s https://raw.githubusercontent.com/kurtosis-tech/kurtosis/main/install.sh | bash

# Запуск повного OP Stack локально
kurtosis run github.com/ethpandaops/optimism-package \
  --args-file local-config.yaml

Конфігурація local-config.yaml:

optimism_package:
  chains:
    - participants:
        - el_type: op-geth
          cl_type: op-node
      network_params:
        network_id: "42069"
        seconds_per_slot: 2
        name: "my-rollup"
      additional_services:
        - blockscout    # explorer
        - prometheus_grafana

Production деплой: L1 контракти

git clone https://github.com/ethereum-optimism/optimism
cd optimism

# Установка залежностей
pnpm install
pnpm build

# Налаштування змінних
export L1_RPC_URL="https://eth-sepolia.g.alchemy.com/v2/YOUR_KEY"
export PRIVATE_KEY="0x..."  # deployer key з ETH на L1

# Деплой L1 смарт-контрактів (DisputeGameFactory, OptimismPortal, L1CrossDomainMessenger...)
cd packages/contracts-bedrock
forge script scripts/Deploy.s.sol:Deploy \
  --rpc-url $L1_RPC_URL \
  --private-key $PRIVATE_KEY \
  --broadcast \
  --verify

Після деплоя контрактів сохраняется директорія deployments/ з адресами — вони потрібні для конфігурації L2 компонентів.

Arbitrum Orbit: альтернатива для L2/L3

Arbitrum Orbit дозволяє створити L2 (відносно Ethereum) або L3 (відносно Arbitrum One/Nova) цепочку:

# Orbit chain deployer
git clone https://github.com/OffchainLabs/orbit-setup-script
cd orbit-setup-script
yarn install

# Конфігурація
cp config.example.json config.json
# Редагувати: chain ID, owner address, validators

# Деплой (на Sepolia або Arbitrum Sepolia для testnet)
PRIVATE_KEY=0x... yarn run deploy-rollup-chain

Orbit дає вибір: AnyTrust (доступність даних через DAC committee, дешевше) або Rollup (дані на L1, безпечніше).

ZK Rollup: ZK Stack (zkSync)

Для ZK rollup розробки найбільш зрілий фреймворк — ZK Stack від Matter Labs:

# Установка ZK Stack CLI
curl -L https://raw.githubusercontent.com/matter-labs/zksync-era/main/zkstack_cli/zkstackup/install | bash

# Ініціалізація екосистеми (розгортає L1 ноду, postgres, тощо через docker)
zkstack ecosystem init --dev

# Створення нової цепочки
zkstack chain create \
  --chain-name my-zk-chain \
  --chain-id 12345 \
  --prover-mode no-proofs \  # для development без ZK доказів
  --wallet-creation localhost

# Деплой L1 контрактів
zkstack chain deploy-l1 --chain my-zk-chain

# Запуск
zkstack server --chain my-zk-chain

У production режимі замість --prover-mode no-proofs потрібен реальний prover. Boojum (система доказів zkSync Era) потребує сервер з GPU (A100/H100) або масштабований CPU кластер для proof generation.

Proof Generation: найдорожче у ZK

Для ZK rollup production deployment найдорожчий компонент — це prover. Варіанти:

Власний prover кластер — потребує серйозного железа:

GPU prover: 1x NVIDIA A100 80GB → ~100-200 TPS throughput
CPU prover: 64-core AMD EPYC → у 10-20x повільніше GPU

Outsourced proving — Gevulot, Lagrange, Fermah (proof marketplace, платите за proof generation).

Validium режим — дані зберігаються off-chain в Data Availability Committee, не публікуються на L1. Значно дешевше, але знижує security guarantees.

Data Availability: ключовий компонент

Rollup повинен публікувати transaction data так, щоб будь-хто міг пересчитати state. Варіанти:

Ethereum calldata — максимальна безпека, найдорожчий. Після EIP-4844 (blobs) дешевше у 10-100x.

EIP-4844 Blobs — з Dencun upgrade (Ethereum березень 2024) rollup публікують дані як blob транзакції. Blobs зберігаються 18 днів, коштують на порядок дешевше calldata.

Celestia / EigenDA / Avail — зовнішні DA слої. Ще дешевше, але потребують довіри до окремої мережі.

Для нового rollup: використовувати EIP-4844 blobs як DA — оптимальний баланс вартості та безпеки на 2024–2025.

Sequencer: централізація та шляхи до decentralization

Усі production rollup сьогодні мають centralized sequencer — це чесний компромісс з продуктивністю. Поточний стан:

  • Arbitrum — працює над BoLD (Bounded Liquidity Delay) для permissionless validation
  • Optimism — Bedrock + модель з fault proofs (Cannon), рухається до decentralized sequencer
  • zkSync — централізований sequencer, roadmap до shared sequencing

Для кастомного rollup: centralized sequencer на старті нормально, головне — escape hatch механізм (можливість виводу коштів без згоди sequencer через L1 напрямо).

Етапи розробки

Фаза Зміст Строк
Вибір стека та архітектура OP Stack vs Orbit vs ZK Stack, DA вибір 1 тиждень
Testnet деплой (devnet) Локальне окруження, тестування 2–3 тижні
L1 контракти та bridges Деплой, тестування мостів 2 тижні
L2 інфраструктура Sequencer, RPC, explorer 2–3 тижні
Публічний testnet Нагрузкове тестування, bug bounty 2–4 тижні
Mainnet Постійний запуск, моніторинг 1–2 тижні
ZK prover (лише ZK) Setup, оптимізація, outsourcing +4–8 тижнів

Реалістичний строк від початку до production mainnet: 2–4 місяці для Optimistic (OP Stack/Orbit), 4–6+ місяців для ZK з реальними proof.

Моніторинг та операційна безпека

// Моніторинг здоров'я rollup: перевіряємо, що batcher не відстає
const l1Block = await l1Provider.getBlockNumber()
const latestBatch = await l2Bridge.latestBatchIndex()
// Якщо розрив росте — batcher не публікує дані

// Алерт, якщо withdrawals не финалізуються
const pendingWithdrawals = await portal.pendingWithdrawals()
if (pendingWithdrawals > THRESHOLD) {
  alert('Withdrawal queue growing, check proposer')
}

Для production rollup обов'язковий 24/7 моніторинг з алертами: стан sequencer, batcher lag, proposer health, bridge balance, та dispute window для Optimistic rollup.