Поговорим о другом проекте хранения данных, разработанном командой @SuiNetwork, @WalrusProtocol 🧐🧐
Компания-разработчик Sui, Mysten Labs, на самом деле также разработала проект уровня данных @WalrusProtocol.
Walrus — это проект, занимающийся хранением данных и их доступностью. После изучения у меня осталось одно впечатление — "круто". Это лучший проект хранения данных, который я когда-либо видел.
Вот основной текст,
Существуют два основных типа децентрализованных проектов хранения.
Первый тип использует полное дублирование (full replication), чтобы обеспечить безопасность за счет неэффективного избыточного хранения, то есть каждый узел хранит полную копию данных, представляя проект @Filecoin Arweave.
Второй тип использует кодирование с исправлением ошибок Рида-Соломона (Reed-Solomon), разбивая оригинальные данные на фрагменты, представляя проекты @Storj, Sia и другие.
————————————————————————————————
Объяснение кодов исправления ошибок (Erasure Codes) простым языком
Способ хранения с использованием кодов исправления ошибок (Erasure Codes) требует объяснения. Строго говоря, он разбивает оригинальный файл на f+1 оригинальных фрагментов и генерирует 2f дополнительных фрагментов для восстановления (repair slivers), каждый узел хранит один уникальный фрагмент, и любые f+1 фрагментов могут восстановить оригинальный файл.
Ладно, вы можете пропустить это сложное объяснение и перейти к следующему.
Предположим, мы хотим сохранить 4 важных числа: [3, 7, 2, 5], эти 4 числа — это наши "оригинальные фрагменты".
Теперь мы должны сгенерировать дополнительные фрагменты,
Фрагмент восстановления 1 = 3 + 7 + 2 + 5 = 17
Фрагмент восстановления 2 = 3×1 + 7×2 + 2×3 + 5×4 = 47
Фрагмент восстановления 3 = 3×1² + 7×2² + 2×3² + 5×4² = 131
Теперь у нас есть 7 фрагментов: [3, 7, 2, 5, 17, 47, 131], верно?
Предположим, в системе 7 узлов, мы распределяем их,
Чжан Сан: 3
Ли Сы: 7
Ван У: 2
Чжао Лю: 5
Цянь Ци: 17
Сун Ба: 47
Чжоу Цзю: 131
Предположим, Ли Сы, Чжао Лю и Чжоу Цзю потеряли данные, у нас остались только: [3, _, 2, _, 17, 47, _].
Как восстановить оригинальные данные?
Помните формулы для дополнительных фрагментов? Верно, решаем систему линейных уравнений.
3 + X + 2 + Y = 17
3×1 + X×2 + 2×3 + Y×4 = 47
Получаем X=7, Y=5.
Конечно, это всего лишь очень простой пример.
Вам нужно просто запомнить эффект, достигаемый кодами исправления ошибок. Эффект заключается в том, что достаточно, чтобы более 1/3 узлов работали нормально.
Иными словами, в системе с кодами исправления ошибок узлы могут хранить только фрагменты данных, и если более 1/3 узлов функционируют, данные могут быть восстановлены, но узлы должны быть стабильными, так как стоимость замены высока.
Но в системе полного дублирования необходимо наличие полных узлов, которые загружают все копии данных.
Первый тип жертвует частью безопасности ради низкой стоимости, в то время как второй тип жертвует избыточностью ради безопасности и стабильности системы.
————————————————————————————————
Инновация Walrus в двухмерных (two-dimensional, 2D) кодах исправления ошибок
Метод Walrus на самом деле находит среднюю точку, достигая определенного баланса между двумя подходами. Основной принцип также основан на кодах исправления ошибок, но с улучшенной технологией Red Stuff.
Red Stuff использует более изящный способ кодирования для фрагментации данных. Помните пример с кодами исправления ошибок?
Чтобы сохранить 4 важных числа: [3, 7, 2, 5], нужно сгенерировать дополнительные фрагменты и в конечном итоге решить систему линейных уравнений.
Все тот же пример, чтобы объяснить Red Stuff. Метод кодирования Red Stuff — это двухмерный (two-dimensional, 2D) алгоритм кодирования, вы можете представить его как "судоку".
3 7 25 в кодировании Red Stuff превращается в,
[3 7]
[2 5]
Предположим, правила кодирования таковы,
3-й столбец = 1-й столбец + 2-й столбец
4-й столбец = 1-й столбец×2 + 2-й столбец×2
3-я строка = 1-я строка + 2-я строка
4-я строка = 1-я строка×2 + 2-я строка×2
Это дополнительные фрагменты превращаются в
[3 7 10 20]
[2 5 7 14]
[5 12 18 34]
[10 24 34 68]
Теперь мы распределяем по строкам и столбцам узлам,
Чжан Сан: 3 7 10 20, то есть первая строка
Ли Сы: 2 5 7 14, вторая строка
Ван У: 5 12 18 34, …
Чжао Лю: 10 24 35 68, …
Цянь Ци: 3 2 5 10, первый столбец
Сун Ба: 7 5 12 24, …
Чжоу Цзю: 10 7 18 34, …
Чжэн Ши: 20 14 34 68, …
Предположим, Ван У потерял данные, то есть данные 3-й строки потеряны. На самом деле ему нужно просто спросить Чжан Сана из первой строки и Ли Сы из второй строки, чтобы получить числа 10 и 7.
Снова решаем систему линейных уравнений, получаем результат.
Из вышеизложенного простого, но не очень строгого примера, мы можем подвести итоги о характеристиках Red Stuff,
При восстановлении данных не требуется полная строка или столбец, достаточно данных из определенных позиций. Эта особенность может быть названа "локальностью".
Кроме того, одно число может быть восстановлено из двух измерений: строки и столбца, то есть "повторное использование информации".
Кроме того, для сложных данных можно сначала восстановить более "легкие" измерения для вычислений, а затем использовать восстановленные данные для вычисления более сложных измерений, то есть "постепенность".
В реальном применении, предположим, что какой-то файл в архитектуре кодов исправления ошибок закодирован в 301 фрагмент.
Обычно для восстановления 1 фрагмента в системе кодов исправления ошибок требуется 101 фрагмент, тогда как в Red Stuff для восстановления 1 пары фрагментов требуется всего около 200 отдельных символов.
Предположим, что мы храним файл размером 1 ГБ, в системе 301 узел, в обычной системе кодов исправления ошибок после сбоя узла необходимо загрузить 1 ГБ, чтобы восстановить фрагмент, тогда как в Red Stuff каждый узел хранит: основной фрагмент (3.3 МБ) + вторичный фрагмент (3.3 МБ) = 6.6 МБ.
При восстановлении нужно загрузить всего около 10 МБ символов данных, что экономит 99% пропускной способности.
Этот дизайн позволяет Walrus поддерживать крупномасштабную децентрализованную сеть хранения с крайне низкими затратами на пропускную способность, снижая стоимость восстановления с O(|blob|) до O(|blob|/n). Вот почему Red Stuff называется "самовосстанавливающимся".
Кроме того, Walrus добавил множество функций безопасности, например, это первый протокол, поддерживающий проверку хранения в асинхронных сетях.
Здесь под "проверкой" подразумевается нечто похожее на механизм Optimistic для выборочной проверки состояния хранения данных узлов.
Каждый фрагмент Red Stuff добавляет проверяемые криптографические обязательства (commitments), каждый символ можно проверять независимо и так далее.
Подводя итоги, можно выделить следующие характеристики:
1) Первый асинхронный уровень безопасности: решает проблему доверия к узлам в распределенном хранении;
2) Самопроверка: встроенный механизм защиты от подделки;
3) Постепенность: обработка динамических изменений узлов;
4) Масштабируемость: поддержка от сотен до тысяч узлов;
Для нахождения оптимального баланса между безопасностью и эффективностью.
(Это первая часть статьи)
Показать оригинал26,42 тыс.
13
Содержание этой страницы предоставляется третьими сторонами. OKX не является автором цитируемых статей и не имеет на них авторских прав, если не указано иное. Материалы предоставляются исключительно в информационных целях и не отражают мнения OKX. Материалы не являются инвестиционным советом и призывом к покупке или продаже цифровых активов. Раздел использует ИИ для создания обзоров и кратких содержаний предоставленных материалов. Обратите внимание, что информация, сгенерированная ИИ, может быть неточной и непоследовательной. Для получения полной информации изучите соответствующую оригинальную статью. OKX не несет ответственности за материалы, содержащиеся на сторонних сайтах. Цифровые активы, в том числе стейблкоины и NFT, подвержены высокому риску, а их стоимость может сильно колебаться. Перед торговлей и покупкой цифровых активов оцените ваше финансовое состояние и принимайте только взвешенные решения.