Архитектураdocs/architecture/synchronization.md

Синхронизация

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

Синхронизация по аутентифицированному снимку

Небольшое отставание

Каждая полная нода хранит тела последних 42 канонических блоков. Если подключающаяся нода отстаёт не более чем на 18 блоков, она аутентифицирует связанные заголовки, скачивает соответствующие тела и получает одно терминальное доказательство HistoryStep для вершины суффикса. Оно проверяется до фиксации первого тела. Рекурсия охватывает точную цепочку от уже установленной границы до этой вершины, поэтому повторно передавать промежуточные терминальные доказательства не требуется.

Затем тела обрабатываются по порядку. Для каждого тела проверяются:

  • соответствие аутентифицированному заголовку, непрерывность родителя и высоты;
  • точные правила сложности и времени;
  • PoW Poseidon2b;
  • криптографические обязательства транзакций и State;
  • точный корень State при материализации;
  • ограничения выбора ветви и жёсткой финальности.

Новый объявленный блок по-прежнему принимается как обычный атомарный пакет {block, HistoryStep terminal}. Компактная синхронизация суффикса устраняет только повторную передачу доказательств и не меняет отношение допустимости.

Синхронизация по снимку

При отставании на 19 блоков или больше используется протокол снимков:

  1. скачать и проверить постоянные заголовки;
  2. выбрать финализированную границу снимка;
  3. получить соответствующее терминальное доказательство HistoryStep;
  4. скачать манифест State;
  5. скачать и проверить указанные сегменты State;
  6. восстановить точный глобальный корень;
  7. транзакционно установить подготовленный State;
  8. получить и проверить одно терминальное доказательство для вершины сохранённого суффикса, затем применить связанные тела блоков.

Манифест связывает высоту границы, state_root, log_slots, active_slot_count, alloc_counter, а также точные идентификаторы, корни и длины сегментов. Содержимое сегментов сверяется с этими обязательствами.

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

Цепочка заголовков

Заголовки компактны и хранятся постоянно. Подключающаяся нода проверяет их от генезиса до вершины цепи-кандидата: связи родителей, высоты, временные метки, точные целевые значения ASERT и PoW. Она накапливает работу и применяет то же детерминированное правило выбора ветви, что и уже работающая нода.

Эта фаза линейна по числу заголовков. Затем рекурсивное терминальное доказательство с постоянной стоимостью проверки подтверждает корректность State на выбранной границе.

Полный профиль стоимости:

Фаза Зависит от
Проверка заголовков Высотой цепочки
Проверка терминального доказательства границы Постоянная стоимость
Передача и установка State Объёмом State
Недавний суффикс Не более 18 тел блоков и одно терминальное доказательство вершины

Parano1d устраняет повторное исполнение истории. При этом заголовки PoW всё равно нельзя сравнить, не прочитав заголовки, а Live State нельзя получить, не передав его.

Транзакционная установка

Данные снимка записываются во временную область. Каноническая база не меняется во время поступления сегментов. Установленный Live State заменяется только полным снимком, у которого согласованы корень, счётчики, граничный заголовок и терминальное доказательство.

Если процесс был прерван во время синхронизации, устаревшая временная область удаляется при запуске, а синхронизация начинается с последнего установленного Live State. Частично записанный снимок не требует ремонта, поскольку он не считается установленным.

Обслуживание во время обновления

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

Первоначальная синхронизация завершается после проверки и фиксации точной выбранной вершины. Готовность не требует повторного опроса той же вершины. Новые объявления обрабатываются обычным онлайн-путём. Кандидаты снимков от отключившихся источников снимаются, а уже проверенные точные объекты можно использовать при продолжении с другого источника.

Локальное окно обслуживания в 42 блока даёт операционный запас. Оно не увеличивает аутентифицированный суффикс и не сдвигает границу снимка.

Реорганизации

Финализированная граница не подлежит реорганизации. Выбор ветви рассматривает только цепочки, сохраняющие её, а допустимая глубина отката должна быть меньше 18. Максимальная каноническая реорганизация составляет 17 блоков.

Недавние данные отката и тела блоков покрывают этот суффикс. Более глубокая конкурирующая история отвергается, а не восстанавливается через снимок.

Точное правило выбора ветви приведено в разделе «Консенсус», а границы сетевых сообщений — в разделе «Сеть».

Техническая документация ParanO(1)dПоведение консенсуса определяется исходным кодом.