Как это работает

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

Синхронизация ноды — это процесс, в котором нода получает актуальное состояние блокчейна и подтверждённую историю, начиная с известной стартовой точки. На практике это означает, что нода загружает и применяет данные сети так, чтобы локальная БД и рабочие компоненты соответствовали текущей цепочке.

Холодный старт

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

Для старта синхронизации ноде нужна информация о zerostate сети и список публичных узлов, к которым можно подключиться, чтобы получить данные для синхронизации. Эта информация берётся из глобальной конфигурации сети, где указан zerostate и набор стартовых публичных узлов (bootstrap peers).

Порядок холодного старта и дальнейшей синхронизации с сетью:

  1. Из глобальной конфигурации извлекается информация о zerostate и bootstrap peers. Нода подключается к публичному overlay и запрашивает данные у соседей.
  2. Загружается zerostate и сохраняются состояния мастерчейна и рабочих цепочек, указанных в zerostate.
  3. Загружается цепочка ключевых блоков мастерчейна, чтобы быстро пройти историческую часть сети, проверяя переходы между наборами валидаторов.
  4. После загрузки ключевого блока загружается устойчивое состояние (persistent state) — верифицированный снимок состояния сети на момент выпуска этого блока.
  5. После этого нода докачивает все блоки, выпущенные после устойчивого состояния, и применяет их по порядку. Для ускорения синхронизации блоки скачиваются архивами. Архив содержит упакованный и сжатый набор блоков.
  6. Самые свежие блоки докачиваются последовательно.

Тёплый старт

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

Ключевые особенности

Эти механизмы позволяют быстро догонять сеть и не применять всю историю блоков с самого начала.

  • ключевые блоки — это блоки мастерчейна, которые ссылаются на предыдущий ключевой блок и содержат информацию о текущем наборе валидаторов. Это позволяет верифицировать цепочку изменений набора валидаторов без необходимости загружать и применять все блоки сети.
  • устойчивое состояние (persistent state) — это полное состояние сети, привязанное к ключевому блоку. По сути это снимок состояния блокчейна, который ноды формируют примерно раз в два дня. Новые участники могут поднимать ноду, используя этот снимок, а его корректность проверяется через цепочку ключевых блоков.
  • Архив блоков — это файл, в который ноды упаковывают и сжимают диапазон блоков. Скачивание и применение блоков из архива обычно существенно быстрее, чем последовательная загрузка. Это помогает новым нодам быстрее догонять актуальное состояние даже при высокой нагрузке в сети.