46 / 691STALE

Stale Block

Валидный блок вне активной цепочки

Stale Block — валидный блок Bitcoin, проигравший временное соревнование конкурирующих ветвей и не оставшийся в активной цепочке, выбранной по совокупному proof of work.

Stale Block не является невалидным блоком. При принятии он соответствовал правилам консенсуса, но другая валидная ветвь накопила больший chainwork и стала активной. Его транзакции могут подтвердиться в другом месте, а награда coinbase этого блока не входит в активный набор UTXO. Это обычное следствие децентрализованного майнинга и ненулевого времени распространения.

Stale Block может пройти проверки proof of work, структуры, транзакций и скриптов и всё же исчезнуть из активной цепочки. Валидность определяет, может ли блок участвовать в соревновании; выбор цепочки определяет, какой валидной истории следует узел. [Bitcoin Developer Guide — Block Chain] [Bitcoin Core v29.0 — chain activation and mempool reconciliation]

Два майнера могут почти одновременно найти блоки над одним родительским блоком за время распространения. Разные части сети ненадолго видят разные вершины, пока одна ветвь не накопит больше работы. [Bitcoin Developer Guide — Block Chain]

Bitcoin сравнивает chainwork только между ветвями, которые узел считает валидными. Ветвь с большей совокупной работой становится активной, а блоки проигравшей ветви являются stale с точки зрения этого узла. [Bitcoin Developer Guide — Block Chain] [Bitcoin Core v29.0 — chain activation and mempool reconciliation]

В обычной речи Orphan Block часто используют как синоним Stale Block, но такая терминология неточна. Orphan также может означать блок с пока неизвестным родителем или транзакцию с отсутствующими входами. Это не то же самое, что валидный блок, проигравший соревнование ветвей. [Bitcoin Developer Guide — Block Chain]

Транзакции Stale Block, кроме coinbase, не отменяются автоматически. Они могут также находиться в победившей ветви или вернуться в mempool после Reorg, если остаются валидными, не конфликтуют с новой историей и соответствуют условиям приёма в mempool. [Bitcoin Core v29.0 — chain activation and mempool reconciliation]

Coinbase из Stale Block не входит в активный chainstate, поэтому субсидия и комиссии этого блока не являются наградой, которую можно потратить в победившей истории. Следовательно, майнеру экономически выгодны быстрое распространение и правильный выбор вершины. [Bitcoin Developer Guide — Block Chain] [Bitcoin Core v29.0 — chain activation and mempool reconciliation]

Stale Rate выражает долю найденных валидных блоков, которые не остаются в активной цепочке. На неё влияют скорость распространения, топология сети и отношение времени распространения к интервалу между блоками; это не фиксированная константа протокола. [Bitcoin Developer Guide — Block Chain] [BIP 152 — Compact Block Relay]

BIP152 compact block relay позволяет передавать блок экономнее, когда у соседних узлов большинство транзакций уже есть в mempool. Более быстрая реконструкция может сократить время, в течение которого часть сети не знает о новой вершине, и уменьшить случайные соревнования ветвей. Недостающие транзакции получатель должен запросить; более быстрая передача не гарантирует отсутствия конкурирующих блоков. [BIP 152 — Compact Block Relay]

Короткий Reorg — изменение chainstate, способное превратить ранее активный блок в Stale Block. Тот же механизм может использовать атака Double Spend, но Stale Block сам по себе не доказывает атаку. Необходимо отделять причину от результата выбора цепочки. [Bitcoin Developer Guide — Block Chain] [Bitcoin Core v29.0 — chain activation and mempool reconciliation]

Оператор может сверить хеш блока с активной цепочкой, проверить родительский блок, высоту, chainwork, число подтверждений и судьбу транзакций. Для собственной модели безопасности решающим является состояние собственного проверяющего узла. [Bitcoin Core v29.0 — getblock]

Для полной картины прочитайте эту статью вместе с Reorg, Подтверждение, Блок, Заголовок блока, Proof of Work, Майнинг. На эту статью также ссылаются Reorg, Mining Pool, Hashrate, Selfish mining.

DOC · 001Bitcoin Developer Guide — Block ChainДокументация ↗DOC · 002Bitcoin Core v29.0 — chain activation and mempool reconciliationПервичный источник ↗DOC · 003BIP 152 — Compact Block RelayСпецификация ↗DOC · 004Bitcoin Core v29.0 — getblockДокументация ↗
Сначала источники · Не является инвестиционной рекомендацией