Глоссарий / Узлы и ПО
Начальная загрузка блоков
Другие названия: IBD.
- Что такое начальная загрузка блоков?
- Начальная загрузка блоков представляет собой этап догоняющей синхронизации, который проходит новый узел биткоина: он получает и проверяет каждый блок от генезис-блока до текущей вершины цепи.
Это единственная по-настоящему медленная часть работы собственного узла, и происходит она один раз. По состоянию на август 2026 года узлу нужно собрать и проверить 759 ГБ истории, а это занимает часы на быстрой машине с твердотельным накопителем и дни на слабой. Bitcoin Core понимает, что закончил, когда вершина его цепи моложе 24 часов и накопленной работы в хранимой им цепи достаточно.
Как это работает
Начальная загрузка блоков намеренно начинается с самых дешевых доказательств.
Сначала идут заголовки. Начиная с версии 0.10.0, выпущенной 16 февраля 2015 года, Bitcoin Core запрашивает у пиров цепь заголовков блоков по 80 байт, прежде чем запросить тела каких-либо блоков. Проверка этих заголовков проходит быстро, она устанавливает, в какой цепи больше доказательства работы, и благодаря ей программа заранее знает, сколько блоков ищет. Затем блоки можно запрашивать у нескольких пиров параллельно, а не по одному, и это разница между синхронизацией, измеряемой часами, и синхронизацией, измеряемой неделями.
Проверка подписей является дорогой частью, поэтому существует сокращенный путь с переключателем. Bitcoin Core 0.14.0 ввел настройку, которая называет конкретный исторический блок, жестко прописанный в каждой версии после проверки, и пропускает проверку подписей скриптов для всего, что погребено под ним. Все остальные правила по-прежнему действуют: суммы, двойные траты, субсидии, корни Меркла, доказательство работы. Установите параметр в ноль, и узел проверит каждую подпись с 2009 года, что стоит сделать один раз, если вы не хотите доверять вообще ничему.
Теперь есть способ быть полезным до завершения. Bitcoin Core 28.0 включил параметры для загрузки снимка набора неистраченных выходов, снятого на высоте блока 840 000, что позволяет узлу обслуживать ваш кошелек за считаные минуты, пока он незаметно восстанавливает более раннюю историю в фоновом режиме. Когда фоновая синхронизация достигает высоты снимка, она сравнивает собственный вычисленный хеш с хешем из версии; при несовпадении узел выключается.
Память является рычагом, который большинство людей никогда не тянет. Кэш базы данных по умолчанию составляет 450 мебибайт, а повышение его до нескольких гигабайт на машине с запасом мощности удерживает набор неистраченных выходов в оперативной памяти, а не заставляет диск работать на износ, сокращая общее время на несколько часов.
Где вы это видите
С начальной загрузкой блоков вы сталкиваетесь при первом запуске Bitcoin Core и снова после того, как узел был выключен месяцами.
Интерфейс сообщит вам, что синхронизирует заголовки, затем покажет, на сколько недель он отстает, и на раннем этапе оценка ненадежна, потому что блоки 2011 года крошечные, а блоки прошлого года нет. Прогресс не является линейным, и узел, который выглядит застрявшим на 60 процентах, обычно обрабатывает самые тяжелые годы цепи.
Три практических правила охватывают почти все, что идет не так. Используйте твердотельный накопитель, потому что механический диск превращает задачу на один день в задачу на неделю. Дайте процессу пропускную способность и стабильное соединение, поскольку весь архив должен поступить. И не подключайте кошелек и не паникуйте из-за отсутствующего баланса, пока синхронизация на самом деле не завершилась, потому что частично синхронизированный узел не имеет мнения о биткоинах в блоках, до которых еще не дошел.
Начальная загрузка блоков vs синхронизация blocks-first
Начальная загрузка блоков является целью; синхронизация blocks-first была одним устаревшим способом ее достижения. Различие важно при чтении старой документации, которая часто описывает оба понятия так, будто это одно и то же. Любой догоняющий узел выполняет начальную загрузку блоков, будь то последовательный запрос блоков у одного пира, сначала загрузка заголовков и затем получение тел у многих пиров одновременно или загрузка снимка и последующее заполнение истории. Этап имеет название потому, что у него иные характеристики производительности и иная поверхность атаки, чем у работы в установившемся режиме, а не потому, что он предписывает метод.