Розгортування сайдчейна
Сайдчейн — окремена блокчейн-мережа, пов'язана з основною мережею через мост. На відміну від L2 rollup, сайдчейн не наслідує безпеку батьківської мережі: він має власний консенсус, власний набір валідаторів, і фіналізація визначається його власними правилами. Це компроміс: більше гнучкості і менша вартість трансакцій в обмін на незалежну модель довіри.
Практичні причини будувати сайдчейн, а не використовувати існуючий L2: потрібен кастомний gas token, потрібна permissioned мережа (корпоративний блокчейн), потрібні специфічні правила консенсусу (наприклад, PoA для ігрового проекту з відомими валідаторами), потрібен повний контроль над параметрами мережи без governance.
Вибір стека
OP Stack (Optimism) — найпопулярніший вибір для EVM-сумісних мереж. Технічно це L2 архітектура (Optimistic Rollup), але може працювати як сайдчейн без settlement на Ethereum (sovereign mode). Використовується Coinbase Base, Worldcoin, Zora, десятками інших.
Polygon CDK (Chain Development Kit) — ZK-based, складніша в настройці, але забезпечує ZK-proof безпеку при бажанні інтеграції з Ethereum.
Cosmos SDK — для application-specific ланцюгів. Не EVM по умовчанню (але є Ethermint для EVM сумісності). IBC для міжсітьового взаємодії. Оправданий, коли потрібен повний контроль над консенсусом і custom gas economics.
Substrate (Polkadot екосистема) — для parachain або standalone ланцюга. Складний в розробці кастомної логіки, але потужний фреймворк.
Для більшості EVM-проектів рекомендую OP Stack як найбільш перевірений і задокументований шлях.
Розгортування OP Stack сайдчейна
Мінімальна інфраструктура OP Stack:
L1 (Ethereum mainnet або testnet)
├── SystemConfig контракт
├── OptimismPortal контракт (bridge deposits/withdrawals)
├── L1CrossDomainMessenger
└── L1StandardBridge
L2 (ваша мережа)
├── op-geth (execution client, форк Geth)
├── op-node (rollup node / sequencer)
├── op-batcher (батчинг трансакцій в L1)
└── op-proposer (публікація state roots в L1)
Крок 1: Деплой L1 контрактів
git clone https://github.com/ethereum-optimism/optimism && cd optimism
git checkout op-contracts/v1.6.0 # використовуйте конкретний тег
# Генерація конфігу
cd packages/contracts-bedrock
cp deploy-config/getting-started.json deploy-config/mychain.json
# Редагуйте: l2ChainID, baseFeeVaultRecipient, sequencerAddress, тощо
# Деплой
forge script scripts/deploy/Deploy.s.sol:Deploy \
--private-key $DEPLOYER_PRIVATE_KEY \
--broadcast \
--rpc-url $L1_RPC_URL \
--slow
Крок 2: Генерація genesis блока
cd op-node
go run ./cmd/main.go genesis l2 \
--deploy-config ../packages/contracts-bedrock/deploy-config/mychain.json \
--l1-deployments ../packages/contracts-bedrock/deployments/mychain/.deploy \
--outfile.l2 genesis.json \
--outfile.rollup rollup.json \
--l1-rpc $L1_RPC_URL
Крок 3: Запуск op-geth
geth init --datadir /data/op-geth genesis.json
geth \
--datadir /data/op-geth \
--networkid <L2_CHAIN_ID> \
--http --http.api eth,net,web3,debug \
--authrpc.jwtsecret /data/jwt.hex \
--syncmode full \
--gcmode archive # потрібен для op-node
Крок 4: Запуск op-node (sequencer)
op-node \
--l2=http://localhost:8551 \
--l2.jwt-secret=/data/jwt.hex \
--sequencer.enabled \
--sequencer.l1-confs=4 \
--verifier.l1-confs=4 \
--rollup.config=rollup.json \
--rpc.addr=0.0.0.0 \
--rpc.port=8547 \
--p2p.disable \ # включити при наявності другої ноди
--l1=$L1_RPC_WS \
--l1.beacon=$L1_BEACON_URL
Мост: депозити і виводи
Стандартний мост OP Stack працює через OptimismPortal на L1 і L2StandardBridge на L2.
Депозит (L1 → L2): користувач викликає depositETH() на L1StandardBridge, трансакція відбивається на L2 за ~2–3 хвилини (після включення в L2 batch).
Вивід (L2 → L1): триетапний процес:
- Трансакція виводу на L2
- Очікування публікації state root на L1 (op-proposer робить це кожні N блоків)
- Період dispute window (7 днів для mainnet) — після цього
finalizeWithdrawalна L1
7-денний dispute window — наслідок Optimistic Rollup архітектури (fraud proof window). Для sovereign сайдчейна без settlement цей період можна настроїти довільно або усунути повністю.
Кастомний gas token
OP Stack підтримує Custom Gas Token (починаючи з Bedrock) — ERC-20 токен замість ETH як нативна валюта для оплати gas. Параметри задаються при деплое:
{
"useCustomGasToken": true,
"customGasTokenAddress": "0xYOUR_TOKEN_ON_L1"
}
Популярно для gaming chains (платити gas ігровим токеном) і enterprise chains (газ в стейблкоїні).
Продуктивність і параметри
Ключові параметри, що впливають на throughput і UX:
| Параметр | Default | Коментарій |
|---|---|---|
l2BlockTime |
2 сек | Можна знизити до 1 сек для high-frequency додатків |
maxSequencerDrift |
600 сек | Скільки L2 може працювати без L1 даних |
channelTimeout |
300 блоків L1 | Максимальний lag для batcher |
GasLimit |
30M | Gas per block; збільшення вимагає більше ресурсів sequencer |
Безпека і централізація
Стандартний OP Stack деплой — повністю централізований sequencer. Це означає:
- Sequencer може цензурувати трансакції (хоча force-inclusion через L1 залишається)
- Sequencer downtime = мережа не виробляє блоки
Для decentralization sequencer: OP Stack Sequencer Decentralization (ще в розробці у Optimism Foundation) або зовнішні рішення типу Espresso Systems (shared sequencer marketplace).
Мінімальний набір для production:
- Multisig на всі upgrade admin roles (SystemConfig owner, ProxyAdmin owner)
- Timelock на критичні зміни параметрів
- Моніторинг L1 контрактів на przedмет unauthorized upgrade спроб
- Резервний L1 RPC (якщо основний впаде — batcher і proposer зупиняються)
Етапи розгортування
| Фаза | Вміст | Строк |
|---|---|---|
| Architecture & config | Вибір стека, параметри мережи, tokenomics gas | 1 тиждень |
| Testnet deployment | Деплой на Sepolia, внутрішнє тестування | 1–2 тиждні |
| Bridge testing | Депозити/виводи, stress test | 1 тиждень |
| Security review | Аудит L1 контрактів, конфігурація multisig | 2–4 тиждні |
| Infrastructure | Monitoring, alerting, DevOps | 1 тиждень |
| Public testnet | Відкритий тест, bug bounty | 2–4 тиждні |
| Mainnet | Деплой, поетапне відкриття | 1–2 тиждні |
Реалістичний строк: 2–3 місяці від початку до mainnet при виділеній команді.







