Блокчейн
Rollups: идея масштабирования
Swap на Uniswap стоит $150, перевод USDC другу - $40, минт NFT - 300. Ethereum обрабатывает 15 транзакций в секунду и не может обрабатывать больше без жертв в децентрализации. Как сделать транзакции в 100 раз дешевле, не жертвуя безопасностью? Rollups решили эту задачу: выполняют тысячи транзакций на отдельном сервере, сжимают результат и публикуют на Ethereum. Блокчейн проверяет, всё ли честно. Стоимость транзакции: меньше цента.
- **Arbitrum и Optimism** обрабатывают больше транзакций, чем Ethereum L1, при стоимости перевода менее 0.01 после EIP-4844
- **Base** (rollup от Coinbase) за 2024-2025 привлёк миллионы пользователей для on-chain социальных приложений (Farcaster, friend.tech) - это было бы невозможно при 5-50 за транзакцию на L1
- **EIP-4844** (март 2024) снизил стоимость L2 транзакций в 10-100 раз за один день, введя blobs - специальное временное хранилище данных для rollups
Предварительные знания
L1 bottleneck и подходы к масштабированию
Ethereum обрабатывает **~15 TPS** (транзакций в секунду). Для сравнения, Visa обрабатывает ~1,700 TPS в среднем и до 65,000 TPS пиково. В моменты высокого спроса (NFT mint, DeFi summer, airdrop claim) gas fee на Ethereum взлетает до $50-200 за транзакцию. Простой перевод USDC за $10 может стоить 80 в комиссиях. Это **фундаментальное ограничение** - не баг, а следствие архитектуры.
Почему нельзя просто увеличить block gas limit? Больше вычислений на блок = больше нагрузка на каждую ноду. Если блок требует мощного сервера для верификации, обычные пользователи не смогут запускать ноды. Сеть **централизуется** - именно то, что блокчейн должен предотвращать. Это называется **blockchain trilemma**: невозможно одновременно максимизировать децентрализацию, безопасность и масштабируемость.
Какие подходы к масштабированию существуют? **Bigger blocks** (увеличение block gas limit) - просто, но жертвует децентрализацией. **Sharding** (разделение на параллельные цепочки) - Ethereum двигался в эту сторону, но пересмотрел roadmap. **Sidechains** (отдельные цепочки с мостом к L1) - работает, но имеет принципиальный недостаток. **Layer 2 (L2)** - выполнение транзакций за пределами L1, но с наследованием его безопасности.
| Подход | Безопасность | Пропускная способность | Компромисс |
|---|---|---|---|
| Bigger blocks | L1 | ~50-100 TPS | Централизация нод (нужны мощные серверы) |
| Sharding | L1 (частичная) | ~1000+ TPS | Сложность реализации, cross-shard atomicity |
| Sidechains (Polygon PoS) | Свой консенсус | ~7000 TPS | Отдельный набор валидаторов, NOT наследует L1 |
| Plasma | L1 (ограниченно) | ~1000 TPS | Проблема data withholding, только простые переводы |
| State channels | L1 | ∞ (off-chain) | Обе стороны онлайн, нет smart contracts |
| Rollups | L1 (полная) | ~2000-4000 TPS | Лучший баланс - наследует безопасность L1 |
Ключевое различие: **sidechain** (Polygon PoS) имеет **собственный набор валидаторов**. Если 2/3 валидаторов sidechain сговорятся - они могут украсть средства, и Ethereum не сможет этому помешать. **Rollup** публикует данные на L1, поэтому **любой** может проверить корректность и оспорить мошенничество. Безопасность rollup = безопасность Ethereum.
**Plasma** (предшественник rollups, 2017) имел фатальный недостаток: **data withholding attack**. Оператор Plasma мог опубликовать state root, но скрыть данные транзакций. Пользователям приходилось следить за каждым state root и вовремя подавать fraud proof - иначе средства терялись. Rollups решили эту проблему радикально: все данные транзакций публикуются на L1.
Чем rollup принципиально отличается от sidechain (например, Polygon PoS)?
Data Availability: зачем публиковать данные на L1
Главный принцип rollup: **выполняй транзакции off-chain, но публикуй данные on-chain**. Это звучит парадоксально - если мы публикуем данные на дорогом L1, как это может быть дешевле? Ответ: мы публикуем **сырые данные транзакций**, но **не выполняем** их на L1. Выполнение - дорого (gas за каждый opcode), а хранение данных - значительно дешевле.
Зачем вообще публиковать данные? Представь: rollup обработал 10,000 транзакций и опубликовал на L1 только итоговый state root (32 байта - хеш состояния). Это дёшево, но возникает проблема: **а что если оператор rollup опубликовал неправильный state root?** Без данных транзакций никто не может проверить. Оператор мог перевести все средства себе, и никто не сможет это доказать.
До марта 2024 rollups публиковали данные в **calldata** - поле транзакции, предназначенное для вызова smart contracts. Calldata хранится навечно каждой нодой Ethereum. Стоимость: 16 gas за ненулевой байт. Для батча из 1000 транзакций это обходилось в **500-2000** при высоком gas.
**EIP-4844 (Proto-Danksharding)**, активированный 13 марта 2024 в upgrade Dencun, изменил всё. Он ввёл новый тип данных - **blobs** (Binary Large Objects). Blobs живут отдельно от основных данных блока и автоматически удаляются через ~18 дней. Rollups больше не платят за вечное хранение - только за временную доступность.
Существуют компромиссные решения между полной on-chain и off-chain доступностью данных. **Validium** (zkPorter, Immutable X) - данные хранятся off-chain у комитета (Data Availability Committee, DAC). Дешевле, но если DAC сговорится - данные могут быть потеряны. **Volition** - пользователь **сам выбирает**: хочешь максимальную безопасность - данные на L1 (дороже). Хочешь дешёвый NFT минт - данные off-chain (дешевле, но менее безопасно).
| Модель | Где данные | Безопасность | Стоимость | Примеры |
|---|---|---|---|---|
| Rollup | L1 (calldata/blobs) | Наследует Ethereum | Средняя | Arbitrum, Optimism, zkSync Era |
| Validium | Off-chain (DAC) | Зависит от DAC | Низкая | Immutable X, zkPorter |
| Volition | Выбор пользователя | Гибкая | Гибкая | zkSync Era (в будущем), Starknet |
| Full Danksharding | L1 (16 MB/блок) | Наследует Ethereum | Очень низкая | Ethereum roadmap (будущее) |
**Full Danksharding** - следующий этап после EIP-4844. Вместо 3-6 blobs на блок Ethereum будет поддерживать **64-128 blobs** (~16 MB данных на блок). Это снизит стоимость L2 транзакций ещё на порядок. EIP-4844 - «прото-данкшардинг» - заложил формат blob-транзакций, чтобы будущий переход был бесшовным.
Sequencer: центральный оператор rollup
Кто именно собирает транзакции, упорядочивает их и отправляет батчи на L1? Это делает **sequencer** - специальная нода (или набор нод), которая выполняет роль «оператора» rollup. Сейчас практически все крупные rollups используют **единственный централизованный sequencer**, контролируемый командой проекта.
Sequencer даёт критически важное преимущество - **soft confirmation** (мягкое подтверждение). Когда пользователь отправляет транзакцию, sequencer подтверждает её за **200-500 мс** - быстрее, чем Ethereum L1 (12 сек). Это не финальное подтверждение (финальность приходит после публикации на L1), но sequencer экономически мотивирован не обманывать - его репутация и залог на кону.
**Риски централизованного sequencer:** 1. **Censorship (цензура)** - sequencer может отказаться включать определённые транзакции. Если единственный sequencer решил заблокировать твой адрес - ты не можешь взаимодействовать с rollup 2. **Downtime (простой)** - если sequencer падает, весь rollup останавливается. Arbitrum пережил несколько часовых outages из-за сбоев sequencer 3. **MEV extraction** - sequencer видит все транзакции и может переупорядочивать их для извлечения MEV (sandwich атаки, frontrunning) 4. **Single point of failure** - один сервер контролирует порядок транзакций на миллиарды долларов TVL
Как rollups защищаются от цензуры? Через механизм **forced inclusion** (принудительное включение). Пользователь может отправить транзакцию напрямую в L1 контракт rollup. Sequencer **обязан** включить эту транзакцию в течение определённого времени (обычно 24 часа на Arbitrum). Если sequencer этого не сделает - контракт позволяет принудительное включение. Это «аварийный выход», гарантирующий, что средства нельзя заморозить навсегда.
Проекты активно работают над **decentralized sequencing**. Несколько направлений: **based sequencing** (Ethereum L1 валидаторы выступают sequencer-ами, предложено Justin Drake), **shared sequencers** (Espresso, Astria - единый decentralized sequencer для нескольких rollups, что даёт ещё и atomic cross-rollup composability), **distributed sequencer** (собственный набор валидаторов rollup, как в Metis). Arbitrum и Optimism анонсировали roadmaps по децентрализации sequencer, но на март 2026 прогресс ограничен.
| Подход | Кто sequencer | Плюсы | Минусы |
|---|---|---|---|
| Централизованный | Команда проекта | Быстро, просто, дёшево | Цензура, MEV, downtime |
| Based | Ethereum L1 валидаторы | Максимальная децентрализация, liveness | Медленнее (L1 block time), MEV на L1 |
| Shared (Espresso, Astria) | Общий набор валидаторов | Cross-rollup atomicity, нейтральность | Новый trust assumption, сложность |
Сжатие: как rollups снижают стоимость в 100 раз
Основная стоимость rollup-транзакции - публикация данных на L1. Выполнение (computation) происходит на дешёвом L2, а вот каждый байт на L1 стоит денег. Поэтому **сжатие данных** - критически важная оптимизация. Чем меньше байт публикуется на L1, тем дешевле транзакция для пользователя.
Как достигается такое сжатие? Несколько техник работают вместе: 1. **Address indexing** - вместо 20-байтовых адресов используются 3-4 байтовые индексы. Rollup ведёт таблицу «адрес → индекс». Адрес 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 (Виталик) → индекс #42. 2. **Zero-byte optimization** - нулевые байты стоят 4 gas (vs 16 gas для ненулевых). Сжатие максимизирует количество нулей. 3. **Signature aggregation** - в zk-rollups подписи не публикуются на L1, потому что validity proof математически доказывает корректность. В optimistic rollups подписи всё ещё нужны, но могут быть агрегированы через BLS signatures. 4. **State diff vs transaction data** - вместо публикации всех транзакций, rollup может публиковать только **итоговые изменения state** (state diff). Если один адрес отправил 100 транзакций - публикуется только финальный баланс.
Давай посчитаем реальную стоимость. До EIP-4844 calldata стоил 16 gas/ненулевой байт. Сжатая транзакция ~16 байт = ~256 gas на L1. При gas price 30 gwei: 256 × 30 = 7,680 gwei ≈ **$0.025**. Плюс amortized cost state root + proof ≈ ещё $0.01. Итого: **~0.03-0.05** за транзакцию на Arbitrum/Optimism (до 4844).
После EIP-4844 стоимость упала ещё радикальнее. Blob gas - отдельный рынок с собственным base fee. В периоды низкой нагрузки blob gas price падает до **1 wei** (минимум). Те же 16 байт в blob вместо calldata: стоимость стремится к **0.001 или ниже**. Это делает L2 транзакции дешевле, чем комиссия банковского перевода.
**Full Danksharding** планирует увеличить количество blobs с 3-6 до 64-128 на блок (~16 MB данных). При пропорциональном снижении blob gas price стоимость L2 транзакции может упасть до **0.0001** - на уровне отправки SMS. Ethereum roadmap формулирует это как «сделать L2 дешевле, чем L1 Solana».
Rollups просто «переносят» транзакции с L1 на другой блокчейн, ничего не меняя - это те же sidechains, только с другим названием
Rollups фундаментально отличаются от sidechains: они **публикуют данные на L1** и используют **fraud proofs или validity proofs** для гарантии корректности. Безопасность rollup привязана к безопасности Ethereum, а не к отдельному набору валидаторов. Сжатие данных, batching и blobs (EIP-4844) позволяют достичь 100x снижения стоимости при сохранении L1-уровня безопасности.
Путаница возникает потому, что и rollups, и sidechains выполняют транзакции «за пределами L1». Но ключевое различие - **кто гарантирует безопасность**. Sidechain полагается на свой консенсус (если 2/3 валидаторов сговорятся - средства потеряны). Rollup математически привязан к L1: все данные публичны, а корректность гарантирована proofs. Это не ребрендинг - это принципиально другая архитектура.
Итоги
- **Blockchain trilemma** - L1 не может масштабироваться без потери децентрализации. Rollups обходят трилемму: выполняют транзакции off-chain, но наследуют безопасность L1 через публикацию данных и proofs
- **Data availability** - фундаментальный принцип rollups: все данные транзакций публикуются на L1 (в calldata или blobs), чтобы любой мог проверить корректность. EIP-4844 ввёл blobs - временное хранилище, снизившее стоимость в 10-100 раз
- **Sequencer** - центральный оператор rollup, который собирает транзакции, даёт мгновенные soft confirmations (200 мс) и публикует батчи на L1. Сейчас централизован, но forced inclusion гарантирует защиту от цензуры
- **Сжатие** - address indexing, state diffs, signature aggregation уменьшают данные в 7x+. L1 data fee = 95%+ стоимости L2 транзакции, поэтому каждый сэкономленный байт напрямую снижает цену
- Те самые 150 за swap, с которых мы начали, на rollup стоят меньше цента - и это при полном наследовании безопасности Ethereum. Full danksharding обещает ещё на порядок дешевле
Связанные темы
Rollups - центральная часть Ethereum scaling roadmap, связывающая gas-экономику L1 с конкретными реализациями L2:
- Gas: модель вычислений — L1 gas определяет стоимость публикации данных rollup - понимание calldata pricing и EIP-1559 необходимо для расчёта L2 fee
- Optimistic Rollups — Один из двух типов rollups - использует fraud proofs и 7-дневный challenge period для гарантии корректности
- ZK-Rollups — Второй тип rollups - использует validity proofs (zero-knowledge), мгновенная финальность, но дорогая генерация доказательств
- Data Availability (глубже) — Расширенное изучение DA-слоя: DAS, erasure coding, Celestia, EigenDA, full danksharding
Вопросы для размышления
- Если централизованный sequencer даёт soft confirmation за 200 мс и пока ни разу не обманул пользователей - есть ли практическая разница с decentralized sequencer? Какие сценарии могут показать разницу?
- Validium хранит данные off-chain и стоит дешевле rollup. Для каких приложений это допустимый компромисс, а для каких - нет? Где проходит граница?
- Если full danksharding снизит стоимость L2 транзакций до 0.0001 - как это повлияет на экономическую модель Ethereum (fee burn, ценность ETH, стимулы валидаторов)?