FAQ: Часто задаваемые вопросы о доступности данных
Last updated
Last updated
Доступность данных отвечает на вопрос, были ли эти данные опубликованы? В частности, узел проверяет доступность данных, когда получает новый блок, который добавляется в цепочку. Узел пытается загрузить все данные транзакций для нового блока, чтобы проверить их доступность. Если узел может загрузить все данные транзакций, доступность данных считается успешно доказанной, обозначая, что данные блока действительно были опубликованы в сеть.
Как вы увидите, модульные блокчейны, такие как Celestia, используют другие примитивы, которые позволяют узлам более эффективно проверять доступность данных. Доступность данных критична для безопасности любого блокчейна, поскольку она гарантирует, что каждый может проверить реестр транзакций и верифицировать его. Проблема доступности данных становится особенно острой при масштабировании блокчейнов. По мере увеличения размера блоков становится непрактичным для обычных пользователей загружать все данные, и поэтому они больше не могут проверять цепочку.
Проблема доступности данных возникает, когда данные транзакций для нового предложенного блока не могут быть загружены и проверены. Этот тип атаки со стороны производителя блоков называется атакой с сокрытием данных (withholding attack), при которой производитель блоков утаивает данные о транзакциях нового блока.
Поскольку данные транзакций удерживаются, узлы не могут обновиться до последнего состояния. Такая атака может иметь множество последствий, от остановки цепочки до получения возможности кражи средств. Серьезность последствий будет зависеть от типа блокчейна (L1 или L2) и от того, хранятся ли данные доступности на блокчейне или вне его. Проблема доступности данных часто возникает вокруг решений для масштабирования L2, таких как роллапы и валидиумы.
В большинстве блокчейнов узлы, проверяющие доступность данных, делают это путем загрузки всех данных о транзакциях блока. Если им удается загрузить все данные, считается, что их доступность проверена. В Celestia легкие узлы имеют доступ к новому механизму для проверки доступности данных без необходимости загружать все данные блока. Этот новый примитив для проверки доступности данных называется выборочным тестированием доступности данных (DAS).
Выборочное тестирование доступности данных — это механизм, позволяющий легким узлам проверять доступность данных, не загружая все данные блока. DAS работает путем выполнения легкими узлами нескольких раундов случайного тестирования небольших порций данных блока. По мере выполнения легким узлом большего числа раундов тестирования данных блока, его уверенность в доступности данных увеличивается. Как только легкий узел успешно достигает предопределенного уровня уверенности (например, 99%), он считает данные блока доступными.
Хотите более простое объяснение? Ознакомьтесь с этой веткой о том, как выборка доступности данных похожа на подбрасывание монетки.
Celestia предполагает, что существует минимальное количество легких узлов, выполняющих выборочное тестирование доступности данных для данного размера блока. Это предположение необходимо, чтобы полный узел мог восстановить весь блок из порций данных, протестированных и сохраненных легкими узлами. Количество необходимых легких узлов будет зависеть от размера блока — для больших блоков предполагается большее количество работающих легких узлов.
Второе важное предположение заключается в том, что легкие узлы подключены хотя бы к одному честному полному узлу. Это гарантирует, что они могут получать доказательства мошенничества для неправильно закодированных блоков. Если легкий узел не подключен к честному полному узлу, например, в случае атаки информационного затмения, он не сможет проверить правильность структуры блока.
В Celestia блоки должны быть закодированы с использованием кодирования данных для восстановления, чтобы были избыточные данные для поддержки процесса выборочного тестирования доступности данных. Однако узлы, ответственные за кодирование данных для восстановления, могут делать это неправильно. Поскольку Celestia использует доказательства мошенничества для проверки неправильного кодирования данных для восстановления, для создания доказательства мошенничества необходимы полные данные блока.
Может возникнуть ситуация, когда валидаторы предоставляют данные только легким узлам, а не полным узлам. Если полные узлы не могут восстановить весь блок из порций данных, сохраненных легкими узлами, они не смогут сгенерировать доказательство мошенничества при плохом кодировании.
Хранение данных связано со способностью сохранять и получать доступ к данным предыдущих транзакций.
Хранение и извлечение данных необходимы для множества целей, таких как:
Чтение информации о предыдущей транзакции
Синхронизация узла
Индексация и обслуживание данных транзакций
Извлечение информации об NFT
Проблема хранения данных заключается в том, можно ли сохранить данные о прошлых транзакциях и успешно извлечь их впоследствии. Невозможность извлечения исторических данных транзакций может вызвать проблемы, такие как невозможность пользователей получить доступ к информации о своих прошлых транзакциях или невозможность узлов синхронизироваться с момента создания цепи. К счастью, предположения о хранении и доступе к прошлым данным слабы. Достаточно, чтобы единственная копия истории блокчейна была доступна для пользователей, чтобы получить доступ к историческим данным транзакций. Иными словами, безопасность хранения данных основывается на предположении честности 1 из N.
Доступность данных касается проверки того, что данные транзакций для нового блока публичны и доступны. В отличие от этого, хранение данных включает в себя сохранение и доступ к прошлым данным транзакций из старых блоков.
До сих пор речь шла только о данных транзакций, но состояние блокчейна — это смежная тема. Состояние отличается от данных транзакций. В частности, состояние — это текущий снимок сети (снепшот), включающий информацию о балансах счетов, балансах смарт-контрактов и информации о наборе валидаторов. Проблемы, возникающие из-за размера состояния, по своей природе отличаются от проблем с доступностью и извлекаемостью данных.
Большинство блокчейнов не стимулирует хранение данных, потому что это не должно быть обязанностью блокчейна гарантировать, что прошлые данные будут доступны вечно. Кроме того, для решения проблемы хранения данных требуется только одна сторона, которая будет хранить и предоставлять данные пользователям, что не является сильной проблемой. Таким образом, цель Celestia — предоставить безопасный и масштабируемый способ проверки доступности данных. После проверки доступности данных работа по хранению и получению исторических данных ложится на плечи других субъектов, которым эти данные необходимы. К счастью, у сторонних организаций есть естественные стимулы для хранения и предоставления исторических данных пользователям.
Существует несколько типов участников, которые могут хранить исторические данные. К ним относятся:
Исследователи блоков, предоставляющие доступ к данным прошлых транзакций.
Индексеры, предоставляющие API-запросы к прошлым данным.
Приложения или роллапы, которым требуются исторические данные для определенных процессов.
Пользователи, которые хотят гарантировать, что у них будет доступ к истории своих транзакций.
Вознаграждать узлы на основе количества данных транзакций, которые они хранят, и запросов на данные, которые они обслуживают (как это происходит в некоторых блокчейнах хранения данных, таких как Filecoin).
Публиковать данные транзакций на блокчейн хранения данных, который стимулирует хранение и обслуживание запросов на исторические данные.