Синхронизация ноды
Синхронизация ноды — это процесс, в котором нода получает актуальное состояние блокчейна и подтверждённую историю, начиная с известной стартовой точки. На практике это означает, что нода загружает и применяет данные сети так, чтобы локальная БД и рабочие компоненты соответствовали текущей цепочке.
Холодный старт
Холодный старт — это первичная инициализация ноды. В этом состоянии у ноды нет сохраненного состояния, поэтому она начинает синхронизацию с первого блока сети.
Для старта синхронизации ноде нужна информация о zerostate сети и список публичных узлов, к которым можно подключиться, чтобы получить данные для синхронизации.
Эта информация берётся из global config, в котором указан zerostate и набор bootstrap peers.
Порядок холодного старта и дальнейшей синхронизации с сетью:
- Из
global configизвлекается информация оzerostateиbootstrap peers. Нода подключается к публичномуoverlayи запрашивает информацию у соседей. - Загружается
zerostateи сохраняются состояния masterchain и шардов, указанных вzerostate. - Загружается цепочка
key blocksмастерчейна, чтобы быстро пройти историческую часть сети, проверяя переходы между наборами валидаторов. - После загрузки
key blockзагружаетсяpersistent state, это верифицированный снимок состояний сети на момент выпускаkey block. - После этого нода докачивает все блоки, выпущенные после
persistent state, и применяет их по порядку. Для ускорения синхронизации блоки скачиваются архивами. Архив содержит упакованный и сжатый набор блоков. - Самые свежие блоки докачиваются последовательно.
Тёплый старт
Тёплый старт — это сценарий, когда нода уже работала с сетью и имеет локальную БД с ранее загруженными данными. В таком случае она может опираться на уже сохраненное состояние и стартовать синхронизацию не с нуля. Часть шагов из алгоритма холодного старта можно пропустить, это зависит от актуальности имеющихся данных.
Ключевые особенности
Эти механизмы позволяют быстро догонять сеть и не применять всю историю блоков с самого начала.
key blocks— это блоки мастерчейна, которые ссылаются на предыдущийkey blockмастерчейна и содержат информацию о текущем наборе валидаторов. Это позволяет верифицировать цепочку измененийvalidator setбез необходимости загружать и применять все блоки сети.persistent state— это полное состояние сети, привязанное кkey block. По сути это бэкап состояния блокчейна, который ноды формируют примерно раз в два дня. Новые участники могут поднимать ноду, используя этот бэкап, а его корректность проверяется через цепочкуkey blocks.- Архив блоков — это файл, в который ноды упаковывают и сжимают диапазон блоков. Скачивание и применение блоков из архива обычно существенно быстрее, чем последовательная загрузка. Это помогает новым нодам быстрее догонять актуальное состояние даже при высокой нагрузке в сети.