Что такое «легкая» синхронизация Geth и почему она такая быстрая?

Этот вопрос аналогичен прошлым вопросам о geth --fastи parity --warp.

Был недавний вопрос , когда ОП хотел сделать как можно меньше синхронизации, и один из ответов предложил следующее:

Попробуйте geth --light, доступно начиная с версии 1.5.2 . Синхронизируется за минуты , если не секунды .

Как это возможно? Что на самом деле синхронизируется?

Я только что протестировал извлечение событий из исторических блоков с помощью geth --light, и результаты немного нестабильны - если исторические данные не были синхронизированы, результаты не отображаются. После синхронизации исторических данных события отображаются как полный узел geth. См. ссылку на недавний вопрос.

Ответы (1)

Я возьму свой выстрел. Знатоки, поправьте меня.

  • «Полная» синхронизация: получает заголовки блоков, тела блоков и проверяет каждый элемент из исходного блока.

  • Быстрая синхронизация: получает заголовки блоков, тела блоков, не обрабатывает транзакции до current block - 64(*). Затем он получает состояние моментального снимка и проходит как полная синхронизация.

  • Light Sync: получает только текущее состояние. Чтобы проверить элементы, необходимо запросить полные (архивные) узлы для соответствующих листьев дерева.

РЕДАКТИРОВАТЬ (*) в более новой версии geth это -64

fsMinFullBlocks        = 64              // Number of blocks to retrieve fully even in fast sync
Это немного связанный вопрос - я надеюсь, что ваш опыт может прояснить мое недоразумение. Я хочу построить карту транзакций между учетными записями Ethereum для создания кошелька. «Быстро» пропускает какую-то информацию или результирующие данные цепочки такие же, как и при полной синхронизации?
@MikkoOhtamaa Если у вас есть другой вопрос, задайте его, нажав кнопку « Задать вопрос» . Эта тема посвящена световому режиму.
@MikkoOhtamaa быстро получает последние данные о состоянии, транзакциях и квитанциях. Но вы «теряете» старую историю из-за того, что ваш узел не выполнял проверки (т.е. не запускал эти транзакции, чтобы эта информация была доступна). Например, вы будете знать, что на вашей учетной записи А есть эфир E, но если это произошло из-за старого tx, вы не будете знать, почему у вас есть эти эфиры.
Итак, если я использую облегченную версию, могу ли я создать токен и развернуть контракты, используя его?
@remedcu Энди Грей говорит «Да» здесь (в комментариях)
Что насчет снапа? --syncmode Режим синхронизации блокчейна («быстрый», «полный», «моментальный» или «легкий») (по умолчанию: быстрый)