Часть III · Глава 43 из 43 · Fulu · Osaka (Fusaka)

EIP-7594: PeerDAS — данные блобов, не скачивая их целиком

Блобы удешевили данные роллапов — но каждый узел всё ещё скачивал каждый блоб, и пропускную способность нельзя было растить. Выведем PeerDAS шаг за шагом: закодируем блоб, разрежем на колонки, оставим у себя срез и опросим остальное, пока отсутствие данных не станет почти невозможным.

Обновлено 13 сент. 2026 г. · 12 мин
Предполагается
  • EIP-4844 blobs
  • how a node syncs

EIP-4844 дал роллапам дешёвую полосу данных — но одного не тронул: каждый полный узел всё ещё скачивает и хранит каждый блоб. При трёх блобах на блок это нормально; это стена в тот момент, когда захочется тридцать. PeerDAS (EIP-7594), главная фича апгрейда Fusaka (mainnet 3 декабря 2025), убирает стену, чтобы пропускная способность блобов росла, не заставляя каждый узел хранить больше. Выглядит как магия — узел, хранящий долю данных, всё равно знает, что все они на месте, — пока вы это не построите, по одному исправлению за раз.

1 step Стена скачивания

Дешёвые данные всё равно значили: скачивают все

Блобы решили цену — отдельная полоса, удаление через ~18 дней, собственный рынок комиссий. Чего они не решили — это масштабирование. Чтобы убедиться, что блоб действительно опубликован, каждый полный узел всё равно должен был скачать весь блоб и держать его до момента, когда его можно удалить. Так что затраты на узел растут линейно с числом блобов: удвойте блобы — и удвоите то, что каждый узел на Земле обязан вытянуть каждый блок. Именно эта линейная связка и держит цель на горстке блобов — подними её, и домашние стейкеры на обычном канале выбывают по цене.

→ Шаг 2: сделать так, чтобы половины данных хватало для восстановления целого.

2 step Хватит половины

Кодирование с избыточностью: любые 50% восстанавливают остальное

Прежде чем резать блоб, сделаем его избыточным. Рассмотрим блоб как многочлен и расширим его кодом Рида — Соломона Кодирование, добавляющее избыточность, так что исходные данные восстанавливаются из любого достаточно большого подмножества кусков. Здесь каждый блоб расширяется так, что любых 50% расширенных данных хватает, чтобы восстановить все. так, что закодированных данных вдвое больше — и любые 50% из них полностью восстанавливают оригинал. Это превращает вопрос доступности из хрупкого в устойчивый. Без кодирования спрятать один недостающий байт — значит заставить проверять каждый байт. С ним данные невосстановимы, только если пропало больше половины, — а «пропала больше половины» ловится взглядом на несколько случайных мест.

→ Шаг 3: разрезать закодированный блоб на колонки и держать лишь несколько.

3 step Режем и храним срез

128 колонок, распределённых по сети

Разложим расширенные блобы в сетку и нарежем на колонки — их NUMBER_OF_COLUMNS = 128, — каждая расходится по своей p2p-подсети. Теперь узел не подписан на все данные; он хранит (custody) лишь настраиваемое подмножество колонок (полный узел целится примерно на 1/8 из них). Данные по-прежнему существуют целиком в масштабе сети — каждую колонку держат многие узлы, — но ни один узел не несёт всё. Хранилище и трафик узла отвязаны от общего числа блобов: подними число блобов — и срез каждого узла почти не сдвинется.

→ Шаг 4: опрашивать случайные колонки, пока отсутствие не станет почти невозможным.

4 step Опрашиваем, пока не уверены

Выборочная проверка доступности: превращаем шансы в уверенность

Чтобы счесть данные блока доступными, узел просит у пиров горсть случайных колонок, которых сам не хранит. Вот почему этого достаточно. Благодаря коду с избыточностью блоб невосстановим, только если пропало больше половины его колонок. Значит, если атакующий пытается утаить достаточно, чтобы данные стали невосстановимы, то у каждой случайной колонки, которую просит узел, шанс быть отвеченной — меньше 50%. Спросите k независимых колонок — и вероятность обмана узла, то есть принятия блока, чьи данные на деле пропали, обрушивается.

Formula
P(fooled) ≤ ( 1/2 1 )^ k 2
  1. 1 кодирование с избыточностью требует, чтобы пропало >50% колонок для невосстановимости, так что у каждой случайной выборки шанс попасть на доступную колонку — меньше 50%
  2. 2 число независимых колонок, которые опрашивает узел
Опросите несколько десятков колонок — и шанс принять блок, чьи данные блобов на деле недоступны, падает примерно до одного на 10^20–10^24: криптографически пренебрежимо, при этом ни один узел не держит больше среза.

В этом весь разворот: уверенность во всех данных из случайной пробы части их. Каждый узел проверяет полную доступность, скачивая долю, — поэтому ёмкость блобов может расти, не поднимая нагрузку на узел.

Выборочная проверка доступности (DAS) Проверка того, что данные блока полностью опубликованы, забором нескольких случайных кусков вместо целого. В связке с кодированием с избыточностью — которое заставляет атакующего утаить большинство данных, чтобы спрятать хоть что-то, — несколько десятков выборок делают незамеченное сокрытие астрономически маловероятным.

Куда это ведёт. Блобы (4844) удешевили данные роллапов; PeerDAS (7594) делает их масштабируемыми — отвязывая то, что сеть может нести, от того, что должен держать один узел, и делая это через границу вероятности, а не доверие.

04 Go Deeper Where to take it from here