Розробка L3/appchain на базі OP Stack

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

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

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

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

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

Розроблення L3/appchain на базі OP Stack

Запуск власного appchain перестав бути прерогативою крупних протоколів з $10M+ бюджетом. OP Stack — модульний фреймворк, з якого зібрані Optimism, Base, Zora, Mode — дозволяє поднути EVM-сумісний L2 за дні, не місяці. L3 (appchain поверх L2) — це наступний крок: суверенний блокчейн з кастомним gas token, приватними транзакціями, специфічними precompiles, що працює поверх Base або OP Mainnet замість Ethereum L1.

Коли потрібен власний appchain

Запуск appchain виправданий якщо у вас принаймні два з наступних вимог:

Продуктивність. Shared L2 (Arbitrum, Base) має конкуренцію за блок-спейс — в пікові моменти gas растає. На власній цепочці весь throughput належить вашому застосунку.

Кастомний gas token. На shared L2 комісії платяться в ETH. На appchain можна зробити gas token — native token вашого протоколу. Економіка токена радикально змінюється: кожна транзакція спалює/захоплює value для держателів.

Приватність транзакцій. На публічних L2 всі транзакції видні. Для gaming (hidden moves), фінансових застосунків з корпоративними даними — потрібна ізоляція.

Кастомна логіка консенсусу. Permissioned sequencer з KYC, або fully decentralized sequencer set для censorship resistance.

Ні якщо: у вас < 100K транзакцій/день, немає команди для операційної підтримки ноди, немає ліквідності для bridge.

Архітектура OP Stack

OP Stack побудований на принципі modularity. Компоненти можуть замінюватися незалежно:

L1 (Ethereum / Base / OP Mainnet)
    ↑ settlements, DA
[OptimismPortal Contract]  ← bridge L1↔L2
[L2OutputOracle Contract]  ← state roots
    ↑
L2 / L3 Chain
    ├─ op-node (consensus client) ← derives chain from L1 data
    ├─ op-geth (execution client) ← EVM, state, mempool
    └─ op-batcher ← submits transaction batches to L1
        └─ op-proposer ← submits state roots to L1

op-node — "consensus client" L2. Читає дані з L1 (або батьківського L2), застосовує derivation rules, синхронізує op-geth через Engine API. Форк Ethereum consensus client під OP Stack.

op-geth — форк go-ethereum з мінімальними змінами: убрані proof-of-work, додано deposit transaction type (L1→L2 bridge), кастомні precompiles.

op-batcher — бере транзакції з L2 mempool, упаковує в batches, публікує в L1 як calldata або EIP-4844 blobs. Ключовий компонент для cost: EIP-4844 blobs в ~10x дешевше calldata.

Настройка кастомного L3

Крок 1: Розгортання контрактів на батьківській цепочці

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

# Конфігурація цепочки
cat > deploy-config/my-l3.json << EOF
{
  "l1ChainID": 8453,          // Base (батьківський L2)
  "l2ChainID": 12345678,      // наш L3
  "l2BlockTime": 2,
  "maxSequencerDrift": 600,
  "sequencerWindowSize": 3600,
  "channelTimeout": 300,
  "p2pSequencerAddress": "0x...",
  "batchInboxAddress": "0x...",
  "batchSenderAddress": "0x...",
  "l2OutputOracleSubmissionInterval": 120,
  "l2OutputOracleStartingBlockNumber": 0,
  "l2OutputOracleStartingTimestamp": 1700000000,
  "l2OutputOracleProposer": "0x...",
  "l2OutputOracleChallenger": "0x...",
  "finalizationPeriodSeconds": 604800,
  "proxyAdminOwner": "0x...",   // multisig
  "baseFeeVaultRecipient": "0x...",
  "l1FeeVaultRecipient": "0x...",
  "sequencerFeeVaultRecipient": "0x...",
  "governanceTokenName": "MyApp Token",
  "governanceTokenSymbol": "MYAPP",
  "governanceTokenOwner": "0x..."
}
EOF

forge script scripts/Deploy.s.sol --rpc-url $BASE_RPC_URL --broadcast

Крок 2: Кастомний gas token

OP Stack підтримує Custom Gas Token з OP Stack Fjord. Конфігурація в genesis:

{
  "customGasToken": {
    "enabled": true,
    "l1Address": "0x...MyToken на Base",
    "l2Address": "0x4200000000000000000000000000000000000023"
  }
}

Native L3 токен = ваш ERC-20 з батьківської мережі. Gas fees у транзакціях платяться ним. Важна нюанс: токен повинен бути стандартним ERC-20 без transfer fees (no-fee-on-transfer), інакше bridge ломається.

Крок 3: Запуск нод

# docker-compose для L3 секвенсера
services:
  op-geth:
    image: us-docker.pkg.dev/oplabs-tools-artifacts/images/op-geth:latest
    volumes:
      - ./data/geth:/data
      - ./genesis.json:/genesis.json
    command: >
      --datadir=/data
      --networkid=12345678
      --http --http.addr=0.0.0.0 --http.port=8545
      --http.api=web3,debug,eth,txpool,net,engine
      --ws --ws.addr=0.0.0.0 --ws.port=8546
      --authrpc.addr=0.0.0.0 --authrpc.port=8551
      --authrpc.jwtsecret=/data/jwt.txt
      --syncmode=full
      --gcmode=archive     # потрібен для indexer
      --override.fjord=1700000000

  op-node:
    image: us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node:latest
    depends_on:
      - op-geth
    command: >
      op-node
      --l1=$BASE_WS_RPC
      --l1.beacon=$BASE_BEACON_URL
      --l2=http://op-geth:8551
      --l2.jwt-secret=/data/jwt.txt
      --rollup.config=/rollup.json
      --p2p.sequencer.key=$SEQUENCER_PRIVATE_KEY
      --sequencer.enabled
      --sequencer.l1-confs=4
      --rpc.addr=0.0.0.0 --rpc.port=9545

Data Availability: вибір DA шару

За замовчанням OP Stack публікує дані на L1 (Ethereum або Base). Це дорого та створює залежність. Альтернативи:

EIP-4844 Blobs (Dencun). Вже вбудовано в OP Stack. Blobs дешевше calldata в ~5-10x, але зберігаються тільки ~18 днів (pruning). Достатньо для fraud proofs (7-денне вікно).

Celestia DA. OP Stack + Celestia через op-plasma або AltDA mode. Дані публікуються в Celestia (~$0.001 за KB vs ~$0.01+ на Ethereum), L1 зберігає тільки commitment. Режим: op-batcher → Celestia, op-node читає з Celestia. Зниження DA costs в 50-100x.

# Запуск op-node з Celestia DA
op-node \
  --altda.enabled=true \
  --altda.da-server=http://celestia-da-server:3100 \
  --altda.da-service=true \
  ...

EigenDA. Аналогічно Celestia, але через restaking на Ethereum. Молодше рішення, але з сильнішими економічними гарантіями безпеки.

Avail DA. Ще одна DA-спеціалізована мережа, популярна в Polygon екосистемі.

Кастомні precompiles

Precompiles — це вбудовані функції на рівні EVM, виконуються без bytecode (C++ у geth). Стандартні: ecrecover (0x01), SHA256 (0x02), BN254 pairing (0x08) та ін.

У op-geth можна додати кастомні precompiles для специфічних операцій: ZK верифікація, кастомні крипто-примітиви, швидкий доступ до L1 state:

// У op-geth: реєстрація кастомного precompile
var customPrecompiles = map[common.Address]vm.PrecompiledContract{
    common.HexToAddress("0x0000...1234"): &MyCustomPrecompile{},
}

type MyCustomPrecompile struct{}

func (c *MyCustomPrecompile) RequiredGas(input []byte) uint64 {
    return 1000 // фіксований gas cost
}

func (c *MyCustomPrecompile) Run(input []byte) ([]byte, error) {
    // кастомна логіка: наприклад верифікація Groth16 proof
    return verifyGroth16Proof(input)
}

Практичні застосунки: batch BLS signature verification для oracle networks, efficient Poseidon hashing для ZK applications, VRF verification.

Bridging та ліквідність

Стандартний OP Stack bridge — native, через OptimismPortal. Deposit (L2→L3): ~15 хвилин. Withdrawal (L3→L2): 7 днів (fraud proof window). 7-денне очікування неприйнятне для користувачів.

Рішення: fast bridge через liquidity providers. Протоколи типу Across, Hop, Stargate забезпечують "швидкі" withdrawals: LP fronts кошти одразу, отримує кошти з L3 після 7 днів + комісію за ризик. Інтеграція через Across Protocol SDK:

import { AcrossClient } from '@across-protocol/sdk';

const client = AcrossClient.create({ chains: [myL3Chain, base] });

const quote = await client.getQuote({
  route: { originChainId: myL3Chain.id, destinationChainId: base.id },
  inputToken: USDC_ON_L3,
  outputToken: USDC_ON_BASE,
  inputAmount: parseUnits('1000', 6),
});

// Виконуємо швидкий вивід (секунди, не 7 днів)
await client.executeQuote({ quote, walletClient });

Sequencer: централізований vs децентралізований

Centralized sequencer (стандарт для більшості appchain): один оператор впорядковує транзакції. Ризики: downtime (якщо sequencer упав — цепочка не рухається), censorship. Мітигація: force inclusion через L1 Portal контракт (транзакція включається примусово після 12+ годин якщо sequencer цензурує).

Decentralized sequencer через OP Stack + MEVA або через Espresso Systems Shared Sequencer. Складніше, потрібен leader election протокол. Для production appchain з $1M+ TVL варто розглядати.

Операційна інфраструктура

Мінімальна production setup:

Нода Назначение Вимоги
Sequencer Обробляє транзакції 32GB RAM, 500GB NVMe SSD, надійний uptime
op-batcher Публікує батчи на L1 8GB RAM, стабільний L1 RPC
op-proposer Публікує state roots 8GB RAM
RPC нода Публічний RPC для користувачів 32GB RAM, 1TB+ SSD
Archive нода Історичні дані для індексації 64GB RAM, 2TB+ SSD

Моніторинг: block production (алерт якщо немає нового блоку > 30 сек), batcher lag (непосубмітовані батчи), proposer status (пропущені proposals), L1 gas price (batcher може застрягти при екстремальному L1 gas).

Терміни та етапи

Фаза 1 — Testnet (3-4 тижні). Deploy контрактів на тестовій мережі, запуск нод, базовий bridge UI, тестування кастомного gas token.

Фаза 2 — Mainnet prep (2-3 тижні). Security review контрактів, настройка multisig для admin ключів, моніторинг, runbooks для операторів.

Фаза 3 — Mainnet launch (1 тиждень). Deploy, міграція ліквідності, публічний анонс, 24/7 моніторинг перші два тижні.

Ongoing: оновлення OP Stack (регулярні hardfork'и Optimism Superchain), моніторинг, підтримка bridge ліквідності.

Загальна вартість інфраструктури: ~$500-2000/місяць для нод + L1 DA costs ($500-5000/місяць залежно від активності).