Block Propagation — распространение нового блока между компьютерами сети Bitcoin. Доставка предоставляет данные; принимающий узел сам проверяет, действителен ли блок и может ли он войти в принятую историю.
Представим, что Анна занимается майнингом и только что нашла блок с транзакциями. Блок объединяет транзакции в пакет, добавляемый в общую историю. У Bitcoin нет центра, который рассылает его всем одновременно. Узел Анны сообщает соседям — компьютерам, с которыми он соединён. Новость идёт дальше и достигает разных участников в разное время. Этот путь называется Block Propagation. От его скорости зависит, как долго другие ещё будут работать на основе прежней истории. [1] [6]
Пётр запускает дома Full Node — программу, проверяющую блоки и транзакции Bitcoin по правилам. Сообщения о появлении блока недостаточно. Для проверки нужно полное содержимое. Его можно скачать целиком или восстановить из полученного сообщения и уже имеющихся транзакций. Это похоже на список страниц книги, которые можно найти в собственной библиотеке: передаётся меньше, но готовая книга должна быть той же самой. [1] [7]
У блока есть краткий заголовок, Block Header. Он, среди прочего, ссылается на предыдущий блок и позволяет проверить Proof of Work — доказательство вычислительной работы, необходимой для майнинга. Майнеры ищут это доказательство повторными вычислениями; остальные могут быстро проверить найденный результат. Это полезная первая проверка, а не подтверждение каждого платежа. Из одного заголовка Пётр не узнает, действительны ли подписи и действительно ли транзакции расходуют доступные, ещё не потраченные средства. Цифровая подпись подтверждает разрешение на платёж с помощью закрытого ключа — секретного числового значения, не раскрывая сам ключ. UTXO — это ещё не потраченный выход транзакции: запись суммы и условий, при которых её можно потратить. [6] [8]
Многие транзакции Пётр получил до появления блока. Они хранятся в его Mempool — местном наборе неподтверждённых транзакций. Compact Blocks по BIP 152 используют это: вместо повторной отправки каждой транзакции сообщение содержит в основном короткие идентификаторы и некоторые полные транзакции. Пётр располагает знакомые части в правильном порядке. Уменьшается сетевое сообщение, не проверяемый блок; правила его действительности остаются прежними. [2] [7]
Единого Mempool для всего мира нет. Каждый узел может знать немного другой набор транзакций, поэтому у Петра иногда чего-то не хватает. Он запрашивает недостающие данные либо скачивает полный блок. Запрос и ответ добавляют время. Это не повод угадывать содержимое или пропускать проверку. Реальная экономия поэтому зависит и от того, сколько транзакций уже известно получателю. [2] [7]
Более быстрый режим BIP 152 разрешает пересылку до завершения всех проверок транзакций. Это не отправка вслепую: отправитель должен проверить, в частности, связь с проверенной цепочкой, Proof of Work и криптографическое соответствие заголовка передаваемым транзакциям. Передача и оставшиеся проверки могут идти параллельно. Однако Full Node принимает блок в активную историю только после полной проверки. [2] [4] [7]
Пока блок Анны идёт к остальным, другой майнер может найти блок с тем же предшественником. Часть сети ненадолго видит одну действительную ветвь, часть — другую. Выбор между действительными ветвями определяет последующая накопленная работа, а не голосование компьютеров. Действительный блок, оставшийся в стороне, называют Stale Block. Более быстрое распространение сужает временное окно для такой конкуренции, но не устраняет её. [6] [8]
Если блок Анны распространяется медленно, растёт риск, что другие продолжат блок конкурента, а её блок останется вне принятой цепочки. В этой истории она не получит за него награду. Поэтому хорошая связь — больше, чем удобство. Её преимущество может способствовать концентрации майнинга у операторов с более качественными сетевыми соединениями. Но одна медленная линия сама по себе не измеряет централизацию и не доказывает атаку. [7] [8]
FIBRE — пример специализированной системы быстрой передачи блоков. Она стремится уменьшить сетевые задержки, включая последствия потери пакетов — небольших частей сообщения. Такой маршрут может доставить блок раньше, но его оператор не получает права решать за Петра, действителен ли блок. Full Node Петра должен проверить те же правила независимо от пути, по которому пришли данные. [3] [9]
Работа сети требует учитывать также объём данных, приватность и устойчивость соединений. Зависимость от единственного пути остаётся слабостью, даже если он быстрый. Нужно различать и задачи улучшений: BIP 330, составная часть Erlay, помогает соседним узлам выявлять различия между наборами объявлений о транзакциях. Он не заменяет передачу блоков BIP 152. Общая цель — более эффективная связь с сохранением самостоятельных проверок каждого узла. [1] [5]
Для полной картины прочитайте эту статью вместе с Compact Blocks, Selfish Mining, Eclipse Attack, Initial Block Download, Bitcoin, Full Node. На эту статью также ссылаются Sybil Attack, Eclipse Attack, Selfish Mining, Compact Blocks.