Разработка 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
    1220
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    921
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1149
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    611
  • 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, etc. через 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 кластер — необходим серьёзный hardware:

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.