Un Stale Block n’est pas un bloc invalide. Lors de son acceptation, il respectait les règles de consensus, mais une autre branche valide a obtenu un chainwork supérieur et est devenue active. Ses transactions peuvent être confirmées ailleurs, tandis que la récompense coinbase de ce bloc ne fait pas partie de l’UTXO set actif. C’est une conséquence courante du minage décentralisé et d’un temps de propagation non nul.
Un Stale Block peut satisfaire aux vérifications du Proof of Work, de la structure, des transactions et des scripts, et néanmoins disparaître de la chaîne active. La validité indique si un bloc peut participer à la compétition ; la sélection de la chaîne détermine laquelle des histoires valides le nœud suit. [Bitcoin Developer Guide — Block Chain] [Bitcoin Core v29.0 — chain activation and mempool reconciliation]
Pendant la fenêtre de propagation, deux mineurs peuvent trouver presque simultanément chacun un bloc ayant le même parent. Différentes parties du réseau voient brièvement des pointes différentes, jusqu’à ce qu’une branche acquière davantage de travail cumulé. [Bitcoin Developer Guide — Block Chain]
Bitcoin compare le chainwork uniquement entre les branches que le nœud considère comme valides. La branche au travail cumulé supérieur devient active et les blocs de la branche perdante sont stale du point de vue du nœud. [Bitcoin Developer Guide — Block Chain] [Bitcoin Core v29.0 — chain activation and mempool reconciliation]
Dans le langage courant, Orphan Block est souvent employé comme synonyme de Stale Block, mais cette terminologie est imprécise. Orphan peut aussi désigner un bloc ou une transaction dont le parent ou les entrées manquent encore ; ce n’est pas la même chose qu’un bloc valide ayant perdu une course entre branches. [Bitcoin Developer Guide — Block Chain]
Les transactions autres que la coinbase d’un Stale Block ne sont pas automatiquement annulées. Elles peuvent aussi figurer dans la branche gagnante ou retourner dans le mempool après une réorganisation, si elles restent valides, n’entrent pas en conflit avec la nouvelle histoire et remplissent les conditions d’admission au mempool. [Bitcoin Core v29.0 — chain activation and mempool reconciliation]
La transaction coinbase d’un Stale Block ne figure pas dans le chainstate actif ; ni la subvention de bloc ni les frais de ce bloc ne constituent donc une récompense dépensable dans l’histoire gagnante. Le mineur bénéficie ainsi économiquement d’une propagation rapide et d’un choix correct de la pointe. [Bitcoin Developer Guide — Block Chain] [Bitcoin Core v29.0 — chain activation and mempool reconciliation]
Le stale rate représente la proportion des blocs valides trouvés qui ne restent pas dans la chaîne active. Il dépend de la vitesse de propagation, de la topologie du réseau et du rapport entre le temps de propagation et l’intervalle entre les blocs ; ce n’est pas une constante fixe du protocole. [Bitcoin Developer Guide — Block Chain] [BIP 152 — Compact Block Relay]
Compact Block Relay, défini par BIP152, permet de transmettre un bloc plus efficacement lorsque les pairs possèdent déjà la plupart de ses transactions dans leur mempool. Une reconstruction plus rapide peut réduire la durée pendant laquelle une partie du réseau ignore la nouvelle pointe, et ainsi limiter les courses accidentelles entre branches. Le destinataire doit demander les transactions manquantes ; une transmission plus rapide ne garantit pas l’absence de blocs concurrents. [BIP 152 — Compact Block Relay]
Un Reorg court (réorganisation) est une modification du chainstate qui peut transformer un bloc auparavant actif en Stale Block. Une attaque par double dépense peut exploiter le même mécanisme, mais un Stale Block ne prouve pas à lui seul une attaque ; il faut distinguer la cause du résultat de la sélection de la chaîne. [Bitcoin Developer Guide — Block Chain] [Bitcoin Core v29.0 — chain activation and mempool reconciliation]
L’opérateur peut comparer le hash du bloc à la chaîne active, vérifier son parent, sa hauteur, son chainwork, son nombre de confirmations et le devenir de ses transactions. Pour son propre modèle de sécurité, c’est l’état de son propre nœud de validation qui est déterminant. [Bitcoin Core v29.0 — getblock]
Pour une vision complète, lisez aussi Reorg, Confirmation, Bloc, En-tête de bloc, Proof of Work, Minage. Cette entrée est également citée par Reorg, Mining Pool, Hashrate, Selfish mining.