К основному содержимому

Введите слово из вопроса или названия статьи.

3 · Под капотом

Роллапы изнутри: батчи, доказательства мошенничества, ZK, блобы и вывод средств

Устройство роллапов: секвенсор и батчи, публикация данных (calldata и блобы EIP-4844), fraud и validity proofs, принудительное включение и вывод в L1.

4 мин чтенияОбновлено:
В этой статье

В статье Layer 2 и роллапы мы объяснили идею: выполнять транзакции вне Ethereum, а безопасность брать у него. Здесь заглянем в механизм: как данные попадают в Ethereum, как доказывается корректность и почему вывод средств устроен именно так.

Общий конвейер роллапа

  1. Пользователь отправляет транзакцию секвенсору (сервер оператора).
  2. Секвенсор упорядочивает транзакции, исполняет их на своём EVM-подобном движке и сразу отдаёт «предварительное подтверждение».
  3. Группа транзакций сжимается в батч и публикуется в Ethereum (данные).
  4. Вместе с батчем публикуется новое состояние L2 (корень состояния).
  5. Контракт роллапа на Ethereum принимает новый корень либо сразу, либо после проверки.

Критически важно: на L1 лежит достаточно данных, чтобы любой желающий мог заново воспроизвести состояние L2. Это называется доступностью данных. Без неё оператор мог бы «заморозить» пользователей.

Публикация данных: calldata и блобы

Раньше батчи публиковали как calldata обычных транзакций - дорого, потому что эти байты хранятся вечно и платить приходилось по цене газа L1.

С обновлением Dencun (март 2024) появился EIP-4844 и новый тип данных - блобы (blobs):

  • блоб - порция данных до 128 КиБ;
  • у блобов отдельный рынок комиссий, независимый от обычного газа;
  • узлы хранят блобы около 18 дней, затем удаляют (в L1 остаётся лишь обязательство - хеш-подобная «отметка»).

После внедрения блобов комиссии на L2 упали в разы, потому что дорогая часть - публикация данных - подешевела. Срок хранения 18 дней достаточен, чтобы любой успел забрать данные и проверить результат.

Два способа доказать корректность

Оптимистичные роллапы

«Верим, пока не докажут обратное».

  1. Оператор публикует новый корень состояния и не доказывает его.
  2. Начинается окно оспаривания (обычно 7 дней).
  3. Любой наблюдатель, обнаруживший ошибку, подаёт доказательство мошенничества (fraud proof). Контракт L1 проверяет его, повторно исполняя спорный участок.
  4. Если доказательство верно - неверный корень отменяется, оператор штрафуется. Иначе по истечении окна корень считается окончательным.

Для доказательства нужна лишь одна честная сторона, способная проверить и подать жалобу. Плюс: просто и совместимо с EVM. Минус: вывод средств идёт неделю.

ZK-роллапы (с доказательствами валидности)

«Докажи заранее».

  1. Оператор исполняет батч и строит криптографическое доказательство (SNARK или STARK) того, что переход от старого состояния к новому выполнен по правилам.
  2. Контракт L1 проверяет короткое доказательство (быстро и дёшево, независимо от размера батча).
  3. После проверки корень принимается сразу.

Плюс: нет окна ожидания, быстрый вывод. Минус: построение доказательства требует тяжёлых вычислений (затраты на «доказывающего»), а совместимость с EVM даётся труднее.

OptimisticZK
Проверка на L1только при споревсегда, но дёшево
Вывод~7 днейминуты - часы
Нагрузка на операторанижевыше (генерация доказательств)
Допущение безопасностиесть хотя бы один честный наблюдателькорректность математики и кода

Принудительное включение

Что если секвенсор цензурирует вашу транзакцию? У роллапа есть контракт-почтовый ящик на L1. Вы можете отправить туда транзакцию напрямую: через заданное время секвенсор обязан её включить, иначе любой может принудительно протолкнуть её. Так обеспечивается «цензуроустойчивость» ценой задержки и платы за L1.

Как работает вывод в L1

Сообщение L2 → L1 (например, вывод ETH) устроено так:

  1. На L2 пользователь сжигает или блокирует токены и создаёт сообщение.
  2. Сообщение попадает в данные, зафиксированные в корне состояния.
  3. После окончания окна оспаривания (или после проверки ZK-доказательства) пользователь на L1 предъявляет доказательство вхождения сообщения в этот корень - по сути, ветку дерева Меркла.
  4. Контракт моста L1 проверяет доказательство и освобождает активы.

Это объясняет и задержку вывода (ждём окончания окна), и зачем нужны быстрые сторонние мосты: они дают вам деньги сразу, а потом сами ждут вывода.

Структура комиссии

Транзакция на L2 платит за две вещи:

  • исполнение на L2 (дёшево);
  • публикацию данных на L1 (доля вашей транзакции в батче и блобе).

Чем эффективнее сжатие и больше батч, тем меньше доля. Подробнее о сравнении сетей - в статье как выбрать сеть.

Стадии децентрализации

Не все роллапы одинаково надёжны. Выделяют стадии:

  • Стадия 0: система работает, но во многом полагается на доверенных операторов и ключи администраторов.
  • Стадия 1: доказательства уже работают, а совет безопасности может вмешаться лишь в ограниченных случаях.
  • Стадия 2: полностью управляется кодом, администраторы почти не влияют.

Большинство L2 пока на ранних стадиях. Оценивая сеть для крупной суммы, смотрите, кто может обновить контракты и есть ли таймлок (прокси и обновляемость).

Что это значит для пользователя Coin-Trust

  • Сделка в Base исполняется быстро и дёшево, но окончательность в смысле Ethereum наступает после публикации и (для оптимистичного роллапа) окончания окна.
  • Контракт эскроу работает внутри L2 как обычный контракт; его адрес и правила те же (CREATE2).
  • Для крупных сумм учитывайте допущения безопасности L2.

Что почитать дальше

Узнайте, кто зарабатывает на упорядочивании транзакций, и чем это грозит: MEV и фронтраннинг. Или как сделать кошелёк умнее: абстракция аккаунтов.

Упоминается в статьях

Готовы попробовать?

Создайте первую сделку за пару минут. Деньги блокируются в смарт-контракте и выплачиваются по правилам, которые видны заранее.