Все предполагают, что идентификаторы блобов просты: хэшируйте данные, используйте это как ID. Walrus доказывает, что такое мышление слишком ограничено. Истинная идентичность блоба включает как хэш данных, так и метаданные кодировки. Этот единственный выбор дизайна позволяет осуществлять верификацию, дедупликацию, версионирование и безопасность против византийских ошибок — все одновременно.

Проблема идентичности только по хэшу

Традиционное блоб-хранилище использует идентификаторы, основанные на содержимом: хэшируйте данные, это ваш ID. Простой, элегантный, очевидный.

Вот что ломается: изменения кодировки. Блоб, хранящийся с использованием Рида-Соломона (10,5), имеет другую кодировку, чем те же данные, хранящиеся с использованием Рида-Соломона (20,10). Это одни и те же логические данные, но требуют различных процессов извлечения.

Используя идентификаторы только с хешами, они идентичны. Валидаторы извлекают блоб и не имеют возможности узнать, какую кодировку они должны восстановить. Клиенты, запрашивающие блоб, не знают, какую кодировку ожидать.

Это заставляет принимать дорогие решения: хранить несколько кодировок одних и тех же данных (расточительно) или заставить клиентов знать кодировку вне канала (хрупко и подвержено ошибкам).

Магия идентификатора блоба моржа лучше.

Хеш-коммитмент + метаданные = уникальная идентичность

Идентификаторы блобов моржа более сложные: они объединяют хеш содержимого с метаданными кодировки. Идентификатор уникально идентифицирует не только данные, но и точную схему кодировки и параметры.

Вот что это вам дает:

Во-первых, византийская безопасность. Идентификатор блоба доказывает, что валидаторы хранят точную кодировку, к которой они обязались. Валидатор, утверждающий, что хранит блоб с идентификатором X, должен предоставить данные, которые повторно кодируются для получения идентификатора X. Они не могут утверждать, что хранят данные с другой кодировкой.

Во-вторых, дедупликация. Если одни и те же данные хранятся с несколькими кодировками, несколько идентификаторов делают это видимым. Вы можете дедуплицировать базовые данные, сохраняя при этом разные идентификаторы блоба для разных схем кодирования.

В-третьих, простота проверки. Когда вы извлекаете блоб, идентификатор точно говорит вам, какую кодировку ожидать. Вам не нужно вести переговоры с валидаторами или проверять отдельно. Сам идентификатор является якорем проверки.

В-четвертых, версионирование. Если вы перекодируете блоб в другую схему, он получает новый идентификатор. История кодировок видима и отслеживаема.

Как это работает архитектурно

Идентификатор блоба вычисляется как: Хеш(данные || схема_кодировки || параметры_кодировки)

Это создает уникальный идентификатор, который захватывает:

  • Какие данные хранятся (через хеш)

  • Как они кодируются (Рид-Соломон с конкретными параметрами)

  • Сколько шардов (значения k и n)

  • Назначения комитетов и информация об эпохах

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

Когда вы запрашиваете блоб с идентификатором X, сеть знает:

  • Точно какие данные вам нужны

  • Точно как они закодированы

  • Точно какие валидаторы должны иметь шардов

  • Точно как это проверить

Без двусмысленности. Без переговоров.

Византийская безопасность через идентичность

Вот где проявляется элегантность дизайна: сам идентификатор блоба является криптографическим доказательством византийской безопасности.

Валидатор, утверждающий, что хранит блоб с идентификатором X, неявно обязуется:

  • Имея данные, которые хешируются в хеш содержимого в X

  • Используя точную схему кодировки, указанную в X

  • Поддерживая точные параметры шардов в X

Если они отклоняются — другая кодировка, другие параметры, поврежденные данные — проверка идентификатора терпит неудачу. Их поймают.

Идентификатор — это механизм византийской безопасности. Это не подпись от валидаторов. Это не обязательство кворума. Это математическая уникальность кодировки.

Дедупликация без двусмысленности

Традиционно дедупликация создает проблемы: если вы храните данные в цепочке дважды с разными кодировками, как валидаторы знают, какую версию обслуживать?

С магией идентификатора блоба это ясно. Данные, хранящиеся с кодировкой A, имеют идентификатор X. Данные, хранящиеся с кодировкой B, имеют идентификатор Y. Несмотря на то, что они имеют одинаковые базовые байты, идентификаторы делают их различными.

Валидаторы могут дедуплицировать необработанные данные, сохраняя отдельные идентификаторы блоба. Система знает, какую кодировку требует каждый идентификатор.

Это экономит место для хранения, сохраняя ясность.

Проверка без дополнительных раундов

Традиционным системам нужны дополнительные раунды проверки: запросить блоб, получить данные, проверить, соответствуют ли они вашим ожиданиям, подтвердить, что кодировка правильная.

Магия идентификатора блоба делает это мгновенным. Идентификатор говорит вам, чего ожидать. Возвращаемые данные либо соответствуют идентификатору, либо нет. Одна проверка, детерминированный результат.

Это и есть то, что делает проверку чтения эффективной. Идентификатор предварительно вычислен. Проверка — это проверка, соответствует ли возвращаемые данные хешу и кодируются так, чтобы соответствовать идентификатору. Готово.

Метаданные как ограничение безопасности

Метаданные кодировки — это не просто информация. Это ограничение безопасности, которое валидаторы не могут нарушить.

Хотите использовать меньше шардов для уменьшения хранения? Это изменяет идентификатор блоба. Вы больше не храните тот же блоб. Вы храните другой блоб с другим идентификатором.

Хотите изменить схемы кодировки? Новый идентификатор. Другой блоб.

Это создает ответственность. Вы не можете молча ухудшить безопасность блоба, используя меньшее количество шардов. Изменение видно через изменение идентификатора.

Версионирование и эволюция

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

Система поддерживает обе версии. Вы можете отслеживать, когда блобы перемещались между кодировками. Вы можете доказать эволюцию кодировки каждого блоба.

Это радикальная прозрачность по сравнению с традиционным хранением, где изменения кодировки невидимы.

Вычислительная эффективность

Вот практическая выгода: вычисление идентификатора блоба дешево. Хешируйте данные один раз, добавьте метаданные, еще раз хешируйте. Невыразимые накладные расходы.

Проверка с использованием идентификатора также дешева. Сравните один хеш с идентификатором. Готово.

Это отличается от систем, которые требуют проверки подписей, проверок кворума или нескольких раундов. Проверка идентификатора блоба — это O(1) и почти бесплатна.

Предотвращение атак на кодировку

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

С идентификаторами блоба это невозможно. Идентификатор уникально указывает на кодировку. Обслуживание различной кодировки нарушает идентификатор. Атака обнаруживается немедленно.

Сравнение с хранилищем, адресованным по содержимому

Адресованный по содержимому (только хеш):

  • Простые идентификаторы

  • Двусмысленны, когда данные имеют несколько кодировок

  • Требует информации о кодировке вне канала

  • Уязвимы к атакам на кодировку

  • Трудно отслеживать эволюцию кодировки

Магия идентификатора блоба:

  • Идентификаторы кодируют метаданные

  • Недвусмысленная спецификация кодировки

  • Самопоясняющие блобы

  • Атаки на кодировку обнаруживаются немедленно

  • Эволюция видима и отслеживаема

Разница является категорической.

Реальные последствия

Для приложений, хранящих блобы:

  • Дедупликация ясна (разные кодировки имеют разные идентификаторы)

  • Кодировка самопоясняющая (идентификатор говорит вам, как извлекать)

  • Эволюция отслеживаема (новая кодировка = новый идентификатор)

  • Безопасность проверяема (идентификатор — доказательство византийской безопасности)

Больше не нужно догадываться, какая кодировка активна. Больше не нужно предполагать метаданные кодировки. Больше не нужно задумываться, изменили ли валидаторы что-то молча.

Психология ясности

Есть что-то удовлетворительное в идентификаторах, которые являются самопоясняющими. Идентификатор говорит вам все, что нужно знать о том, что вы извлекаете.

Это смещает инфраструктуру с "доверяйте валидатору, который сказал вам правду" на "идентификатор сам по себе является доказательством того, что вы получаете."

Магия идентификатора блоба моржа преобразует идентичность блоба из простого хеша содержимого в комплексную спецификацию, которая включает данные, кодировку и метаданные. Этот единственный выбор дизайна обеспечивает византийскую безопасность, дедупликацию, простоту проверки и эволюцию кодировки — все одновременно.

Для децентрализованного хранения, которое должно быть прозрачным относительно того, что оно хранит и как это кодируется, это основополагающе. Идентификатор блоба становится вашим доказательством того, что данные хранятся правильно, закодированы безопасно и полностью проверены. Морж доказывает, что простые идентификаторы слишком просты. Умные идентификаторы являются тем, что позволяет инфраструктуре быть действительно надежной.

@Walrus 🦭/acc #Walrus $WAL

WALSui
WAL
0.1138
-7.25%