EIP-7594: PeerDAS — данные блобов, не скачивая их целиком
Блобы удешевили данные роллапов — но каждый узел всё ещё скачивал каждый блоб, и пропускную способность нельзя было растить. Выведем PeerDAS шаг за шагом: закодируем блоб, разрежем на колонки, оставим у себя срез и опросим остальное, пока отсутствие данных не станет почти невозможным.
- EIP-4844 blobs
- how a node syncs
EIP-4844 дал роллапам дешёвую полосу данных — но одного не тронул: каждый полный узел всё ещё скачивает и хранит каждый блоб. При трёх блобах на блок это нормально; это стена в тот момент, когда захочется тридцать. PeerDAS (EIP-7594), главная фича апгрейда Fusaka (mainnet 3 декабря 2025), убирает стену, чтобы пропускная способность блобов росла, не заставляя каждый узел хранить больше. Выглядит как магия — узел, хранящий долю данных, всё равно знает, что все они на месте, — пока вы это не построите, по одному исправлению за раз.
Дешёвые данные всё равно значили: скачивают все
Блобы решили цену — отдельная полоса, удаление через ~18 дней, собственный рынок комиссий. Чего они не решили — это масштабирование. Чтобы убедиться, что блоб действительно опубликован, каждый полный узел всё равно должен был скачать весь блоб и держать его до момента, когда его можно удалить. Так что затраты на узел растут линейно с числом блобов: удвойте блобы — и удвоите то, что каждый узел на Земле обязан вытянуть каждый блок. Именно эта линейная связка и держит цель на горстке блобов — подними её, и домашние стейкеры на обычном канале выбывают по цене.
→ Шаг 2: сделать так, чтобы половины данных хватало для восстановления целого.
Кодирование с избыточностью: любые 50% восстанавливают остальное
Прежде чем резать блоб, сделаем его избыточным. Рассмотрим блоб как многочлен и расширим его кодом Рида — Соломона Кодирование, добавляющее избыточность, так что исходные данные восстанавливаются из любого достаточно большого подмножества кусков. Здесь каждый блоб расширяется так, что любых 50% расширенных данных хватает, чтобы восстановить все. так, что закодированных данных вдвое больше — и любые 50% из них полностью восстанавливают оригинал. Это превращает вопрос доступности из хрупкого в устойчивый. Без кодирования спрятать один недостающий байт — значит заставить проверять каждый байт. С ним данные невосстановимы, только если пропало больше половины, — а «пропала больше половины» ловится взглядом на несколько случайных мест.
→ Шаг 3: разрезать закодированный блоб на колонки и держать лишь несколько.
128 колонок, распределённых по сети
Разложим расширенные блобы в сетку и нарежем на колонки — их NUMBER_OF_COLUMNS = 128, — каждая расходится по своей p2p-подсети. Теперь узел не подписан на все данные; он хранит (custody) лишь настраиваемое подмножество колонок (полный узел целится примерно на 1/8 из них). Данные по-прежнему существуют целиком в масштабе сети — каждую колонку держат многие узлы, — но ни один узел не несёт всё. Хранилище и трафик узла отвязаны от общего числа блобов: подними число блобов — и срез каждого узла почти не сдвинется.
→ Шаг 4: опрашивать случайные колонки, пока отсутствие не станет почти невозможным.
Выборочная проверка доступности: превращаем шансы в уверенность
Чтобы счесть данные блока доступными, узел просит у пиров горсть случайных колонок, которых сам не хранит. Вот почему этого достаточно. Благодаря коду с избыточностью блоб невосстановим, только если пропало больше половины его колонок. Значит, если атакующий пытается утаить достаточно, чтобы данные стали невосстановимы, то у каждой случайной колонки, которую просит узел, шанс быть отвеченной — меньше 50%. Спросите k независимых колонок — и вероятность обмана узла, то есть принятия блока, чьи данные на деле пропали, обрушивается.
- 1 кодирование с избыточностью требует, чтобы пропало >50% колонок для невосстановимости, так что у каждой случайной выборки шанс попасть на доступную колонку — меньше 50%
- 2 число независимых колонок, которые опрашивает узел
В этом весь разворот: уверенность во всех данных из случайной пробы части их. Каждый узел проверяет полную доступность, скачивая долю, — поэтому ёмкость блобов может расти, не поднимая нагрузку на узел.
Выборочная проверка доступности (DAS) Проверка того, что данные блока полностью опубликованы, забором нескольких случайных кусков вместо целого. В связке с кодированием с избыточностью — которое заставляет атакующего утаить большинство данных, чтобы спрятать хоть что-то, — несколько десятков выборок делают незамеченное сокрытие астрономически маловероятным.Куда это ведёт. Блобы (4844) удешевили данные роллапов; PeerDAS (7594) делает их масштабируемыми — отвязывая то, что сеть может нести, от того, что должен держать один узел, и делая это через границу вероятности, а не доверие.