121 / 691IBD

Initial block download

IBD — первая синхронизация нового узла с историей Bitcoin. Она включает получение данных, проверку блоков и построение состояния неизрасходованных выходов, а не только передачу файлов.

IBD — больше, чем загрузка файлов. Full Node строит проверенный набор UTXO из истории; проверки старых скриптов зависят также от assumevalid.

Узел находит адреса других узлов и синхронизирует заголовки. Заголовок связывает историю и содержит Proof of Work, но сам не доказывает допустимость всех транзакций блока. [Bitcoin Developer Guide — Initial Block Download] [Satoshi Nakamoto — Bitcoin whitepaper]

Накопленная работа определяет ветвь-кандидата для проверки. Ни наибольшее число заголовков, ни утверждение другого узла не заменяют работу и полные проверки блоков. [Bitcoin Developer Guide — Initial Block Download] [Bitcoin Core — validation] [Satoshi Nakamoto — Bitcoin whitepaper]

Блоки можно загружать параллельно от нескольких узлов. Подключение к допустимой цепи учитывает прежнее состояние: выходы нельзя проверить без необходимой истории. [Bitcoin Developer Guide — Initial Block Download] [Bitcoin Core — validation]

Full Node проверяет структуру, Merkle root, правила расходования и пределы эмиссии, среди прочего. Правила консенсуса применяются по высоте и активациям; заголовки не являются полной валидацией. [Bitcoin Core — validation] [Bitcoin Core — chainstate]

Подключение блоков удаляет потраченные выходы и добавляет новые UTXO. База отражает текущие возможности расходования, а не все исторические транзакции или балансы адресов. [Bitcoin Core — validation] [Bitcoin Core — chainstate]

При достаточно глубокой известной истории и необходимых условиях assumevalid может пропускать старые проверки скриптов. Это не принятие произвольной истории без проверки; assumevalid=0 отключает оптимизацию. [Bitcoin Core — validation]

Обрезка удаляет старые файлы блоков после обработки и сохраняет UTXO и нужные метаданные. Она экономит постоянное место, но не отменяет получение и обработку истории при обычном IBD. [Bitcoin Core — validation] [Bitcoin Core — chainstate]

Bitcoin Core v29.0 учитывает возраст вершины, минимальную работу и состояние загрузки; после завершения флаг не возвращается к true в этом процессе. Это рабочая эвристика, не доказательство знания последней глобальной вершины. [Bitcoin Core — validation] [Bitcoin Core — getblockchaininfo]

Время зависит от процессора, памяти, диска, сети и доступных узлов. verificationprogress из getblockchaininfo оценивает работу проверки, а не гарантированное время завершения или только долю загруженных байтов. [Bitcoin Developer Guide — Initial Block Download] [Bitcoin Core — getblockchaininfo]

AssumeUTXO может использовать поддерживаемый снимок UTXO для ранней работы у вершины. История проверяется в фоне, результат сравнивается со снимком; ранняя пригодность не означает завершённую проверку истории. [Bitcoin Core — validation] [Bitcoin Core — AssumeUTXO design]

Для полной картины прочитайте эту статью вместе с Pruned node, AssumeUTXO, Block propagation, Compact block relay. На эту статью также ссылаются Pruned node, AssumeUTXO.

DOC · 001Bitcoin Developer Guide — Initial Block DownloadДокументация ↗DOC · 002Bitcoin Core — validationДокументация ↗DOC · 003Bitcoin Core — chainstateДокументация ↗DOC · 004Bitcoin Core — AssumeUTXO designДокументация ↗DOC · 005Bitcoin Core — getblockchaininfoДокументация ↗DOC · 006Satoshi Nakamoto — Bitcoin whitepaperПервичный источник ↗
Сначала источники · Не является инвестиционной рекомендацией