Блокчейн

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

Предварительные знания

  • Gas: Computation Model
  • Transactions and Receipts in Ethereum

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 blocksL1~50-100 TPSЦентрализация нод (нужны мощные серверы)
ShardingL1 (частичная)~1000+ TPSСложность реализации, cross-shard atomicity
Sidechains (Polygon PoS)Свой консенсус~7000 TPSОтдельный набор валидаторов, NOT наследует L1
PlasmaL1 (ограниченно)~1000 TPSПроблема data withholding, только простые переводы
State channelsL1∞ (off-chain)Обе стороны онлайн, нет smart contracts
RollupsL1 (полная)~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 (дешевле, но менее безопасно).

МодельГде данныеБезопасностьСтоимостьПримеры
RollupL1 (calldata/blobs)Наследует EthereumСредняяArbitrum, Optimism, zkSync Era
ValidiumOff-chain (DAC)Зависит от DACНизкаяImmutable X, zkPorter
VolitionВыбор пользователяГибкаяГибкаяzkSync Era (в будущем), Starknet
Full DankshardingL1 (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
BasedEthereum 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, стимулы валидаторов)?

Связанные уроки

  • dist-14-sharding
Rollups: идея масштабирования

0

1

Войти

Что изменил EIP-4844 (Proto-Danksharding) для rollups?

Distributed (Metis)Свой набор валидаторов rollupДецентрализация внутри rollupНовый консенсус, медленнее

Что такое forced inclusion и зачем оно нужно?

Какой компонент составляет более 95% стоимости L2 транзакции?