Data Availability (доступность данных) в блокчейнах и Ethereum

Data Availability (DA, доступность данных) — это свойство блокчейна или L2-системы, которое гарантирует, что все необходимые данные транзакций доступны сети для проверки и восстановления состояния.

Если упрощать: недостаточно «согласиться о новом состоянии» — участники должны иметь возможность увидеть все входные данные, чтобы убедиться, что это состояние честное и его можно восстановить.

В контексте Layer-1 (L1), L2 и роллапов Data Availability — один из ключевых элементов безопасности наряду с консенсусом и финальностью (finality).

Data Availability: сеть должна видеть данные, а не только хеши состояния

Зачем нужна доступность данных

В любом блокчейне есть два базовых шага:

  • вычислить новое состояние (балансы, storage контрактов) на основе входных данных;
  • убедиться, что это состояние корректно и все участники могут его проверить.

Если данные транзакций не доступны:

  • честные узлы не могут сами воспроизвести вычисления;
  • невозможно убедиться, что новое состояние не содержит скрытых манипуляций;
  • пользователи L2/роллапа не могут «эвакуировать» свои активы, если оператор ведёт себя злоумышленно.

Отсюда ключевое требование:

Чтобы система считалась безопасной, честный участник должен иметь возможность получить все данные, достаточные для верификации и восстановления состояния.

Data Availability на уровне L1

В классическом L1 (например, Ethereum) вопрос DA решается относительно прямолинейно:

  • транзакции и данные включаются в блоки;
  • блоки распространяются по p2p-сети;
  • каждый полный узел хранит (хотя бы временно) все данные, необходимые для проверки.

То есть сам протокол L1 гарантирует:

  • пока вы запускаете полноценный узел, вы видите все данные блоков;
  • вы можете самостоятельно проверить корректность состояния.

Подробнее об архитектуре см. Архитектура Ethereum и Layer-1 (L1).

Data Availability и роллапы/L2

С L2-системами и роллапами всё сложнее:

  • транзакции исполняются вне L1;
  • итоговое состояние или его сжатое представление публикуется в L1 (хеши, доказательства);
  • пользователи должны доверять, что данные, породившие это состояние, доступны.

Именно здесь DA становится критичным:

  • если оператор L2 публикует только хеши состояния, но не выкладывает сами данные, никто не может проверить честность вычислений;
  • в случае злонамеренного поведения пользователи могут оказаться «заложниками» чёрного ящика.

Поэтому роллапы считаются «настоящими» L2 только если они:

  • публикуют данные транзакций или их сжатое представление в L1 (on-chain DA);
  • или используют проверяемый и устойчивый DA-слой с чётко описанными гарантиями.

Подробнее о типах L2 см. Layer-2 (L2) на Ethereum и Layer-2 и роллапы — технический хаб.

On-chain DA vs внешние DA-слои

По способу обеспечения доступности данных выделяют несколько подходов.

On-chain Data Availability

Данные (inputs L2) публикуются на Ethereum L1:

  • через calldata в транзакциях;
  • через специальные структуры данных (например, blob-данные после EIP-4844).

Плюсы:

  • максимальные гарантии: пока жив Ethereum, данные можно восстановить;
  • пользователи L2 теоретически могут самостоятельно пересчитать состояние и забрать активы через L1-контракты.

Минусы:

  • дороже по gas (особенно до появления оптимизированных механизмов DA);
  • ограничение по throughput L1.

Это модель «классического» rollup, на которой строится rollup-centric roadmap Ethereum.

Внешние DA-слои (off-chain / external DA)

Часть систем выносит хранение данных за пределы L1:

  • специальные DA-сети;
  • комитеты валидаторов DA;
  • гибриды «validium»/«volition» (данные частично on-chain, частично off-chain).

Плюсы:

  • ниже стоимость хранения и публикации;
  • выше потенциальная пропускная способность.

Минусы:

  • безопасность зависит от DA-слоя;
  • при сбое DA или сговоре его операторов восстановить состояние может быть сложно или невозможно.

Обзор подходов см. Решения доступности данных для L2.

Атаки и риски, связанные с DA

Классический риск — атака скрытия данных (data withholding):

  • оператор L2 публикует в L1 заголовок блока, хеш состояния или даже zk-доказательство;
  • но не распространяет сами данные батча среди пользователей;
  • формально L1 видит «корректный» блок, но пользователи не могут проверить, что произошло и какие активы у них на самом деле.

Последствия:

  • пользователи не могут безопасно выходить из L2;
  • протоколы не могут провести «честное» принудительное закрытие позиций;
  • любая логика «escape hatch через L1» ломается без доступа к данным.

Поэтому проверка механизмов DA — не менее важная часть аудита L2/роллапа, чем анализ смарт-контрактов или консенсуса.

Как пользователю оценивать DA в L2

При выборе L2 или роллапа полезно задать несколько вопросов:

  • Куда публикуются данные?

В Ethereum (on-chain DA) или во внешний DA-слой/комитет?

  • Можно ли в теории пересчитать состояние только из данных L1?

Если да — это сильный плюс для безопасности.

  • Какие есть гарантии против data withholding?

Есть ли механизмы, которые:

  • заставляют sequencer публиковать данные;
  • позволяют пользователям «наказать» оператора за скрытие;
  • описаны ли в документации риски и процедуры аварийного выхода.
  • Кто контролирует DA-слой?

Это открытая сеть валидаторов или ограниченный набор операторов?

Подробный обзор рисков см. Риски использования L2 и роллапов и Безопасность мостов и L2-роллапов.

Связь DA с fraud-proof и validity-proof

Механизмы проверки состояния L2 тесно связаны с DA:

  • Fraud-proof в optimistic-роллапах:
    • требуется доступ ко всем данным спорного окна;
    • без DA честный участник не сможет корректно оспорить состояние.
  • Validity-proof (SNARK/STARK) в zk-роллапах:
    • даже при наличии криптодоказательства полезно иметь доступ к данным;
    • иначе пользователи не могут самостоятельно реконструировать своё состояние (балансы, позиции) и проверить off-chain логику.

Иными словами: доказательства корректности вычислений не заменяют проблему DA, а дополняют её.

См. также

Task Runner