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

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

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

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

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

Каждая полная нода хранит последние 18 полностью принятых блоков. Если подключающаяся нода отстаёт не более чем на 18 блоков, она запрашивает атомарные пакеты {block, HistoryStep terminal}, содержащие соответствующее терминальное доказательство, и обрабатывает их по порядку.

Для каждого пакета проверяются:

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

Затем нода материализует доказанные записи.

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

При отставании на 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 и применения суффикса, чтобы оператор видел, что ограничивает скорость: процессор, диск или пир.

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

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

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

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

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