Glossaire / Minage et consensus
Réorganisation de chaîne
Aussi appelé Réorganisation de la blockchain, Chain reorganization, Reorg.
- Qu'est-ce qu'une réorganisation de chaîne ?
- Une réorganisation de chaîne se produit lorsque votre nœud découvre une branche totalisant davantage de travail, déconnecte les blocs qu'il avait acceptés et reconstruit l'extrémité de la chaîne le long de cette nouvelle branche.
Les nœuds ne suivent pas la chaîne qu'ils ont vue en premier. Ils suivent celle qui porte le plus de preuve de travail, et lorsqu'une meilleure branche apparaît, ils reviennent au point de bifurcation et rejouent les blocs vers l'avant. Presque toutes les réorganisations sur la chaîne principale du bitcoin ont une profondeur d'un bloc et se terminent en quelques secondes ; la plus profonde jamais enregistrée, 24 blocs en mars 2013, a été causée par un bug logiciel plutôt que par un attaquant.
Comment cela fonctionne
Une réorganisation de chaîne comporte trois étapes, et un nœud les exécute seul, sans consulter personne.
D'abord, il remonte depuis l'extrémité actuelle de sa chaîne jusqu'au dernier bloc que les deux branches partagent, en annulant chaque bloc au passage : les sorties que ce bloc a créées sont retirées de l'ensemble des sorties non dépensées, les sorties qu'il a consommées sont restaurées, et ses transactions retournent dans la mempool. Ensuite, il connecte les blocs de la branche concurrente dans l'ordre, en validant chacun exactement comme s'il venait d'arriver. Enfin, il recalcule la mempool, en écartant tout ce qui est désormais confirmé et en conservant tout ce qui ne l'est pas.
C'est la deuxième étape qui porte la sécurité. Plus de travail est nécessaire mais pas suffisant. Si un bloc de la branche concurrente échoue à un seul contrôle de consensus, le nœud s'arrête, marque cette branche comme invalide et conserve la chaîne qu'il avait déjà. Un mineur disposant d'une puissance de hachage illimitée ne peut toujours pas faire accepter à un nœud un bloc qui se paie trop ou qui dépense deux fois une sortie.
La règle est le plus grand travail cumulé, pas la chaîne la plus longue. Le travail est additionné à partir de la difficulté à laquelle chaque bloc a été miné, de sorte qu'une branche comptant moins de blocs minés à une difficulté plus élevée peut dépasser une branche plus longue. Sur le bitcoin, les deux mesures coïncident presque toujours, car la difficulté ne change que tous les 2 016 blocs.
C'est la profondeur qui sépare la routine de l'inquiétude. Une profondeur d'un bloc relève de l'entretien courant. Bitcoin Core considère toute réorganisation substantielle comme digne d'être signalée et adresse à l'opérateur un avertissement de bifurcation à fort travail lorsqu'il voit une branche concurrente diverger de plus de six blocs par rapport à la chaîne active.
Pourquoi cela compte quand vous achetez du bitcoin
Les nombres de confirmations sont un pari sur la profondeur de réorganisation, et chaque plateforme que vous utilisez en a discrètement placé un pour votre compte.
Une plateforme d'échange qui crédite un dépôt après trois blocs a jugé qu'une inversion de trois blocs ne valait pas la peine d'être assurée. Une plateforme qui attend six blocs a évalué le risque plus haut. Aucun de ces deux nombres ne vient du protocole ; les deux relèvent d'une politique, ce qui explique que le même dépôt soit crédité en vingt minutes sur une plateforme et en plus d'une heure sur une autre. Lorsque vous déplacez des bitcoins entre les plateformes d'échange que notre classement examine, cette différence mérite d'être vérifiée avant de supposer que quelque chose a mal tourné.
Vos clés ne sont en rien concernées. Une réorganisation peut changer quelles transactions figurent dans la chaîne et dans quel ordre, mais elle ne peut pas produire de signature, de sorte que les bitcoins qui se trouvent dans un portefeuille que vous contrôlez ne font pas partie de l'exposition. Ce qui se trouve dans le rayon d'impact, c'est la valeur en mouvement : un dépôt qui a été crédité mais pas enfoui, un paiement que vous avez accepté en échange de biens, un échange pair-à-pair où vous avez libéré des fonds contre une seule confirmation.
L'histoire offre un avertissement instructif. Le 4 juillet 2015, plusieurs grands pools construisaient sur des blocs qu'ils n'avaient pas validés, une pratique appelée SPV mining, et ont produit une chaîne de six blocs qui s'est révélée invalide. Bitcoin.org a publié une alerte conseillant aux utilisateurs d'attendre 30 confirmations jusqu'à ce que la situation se règle. La leçon n'était pas que le bitcoin est fragile ; elle était que la profondeur nécessaire dépend de ce qui ne va pas, et qu'une confirmation n'est jamais beaucoup.
Si vous détenez aussi des cryptomonnaies plus petites à preuve de travail, traitez leur historique de réorganisation comme une question entièrement distincte. Les plateformes d'échange exigent bien plus de confirmations pour les chaînes qui ont réellement été réorganisées, et cette exigence est un signal public utile sur le degré réel de sécurité d'une chaîne.
La réorganisation de 24 blocs de mars 2013
La réorganisation la plus profonde qu'ait jamais connue la chaîne principale du bitcoin a été causée par deux versions du logiciel en désaccord sur un bloc que toutes deux auraient dû accepter.
Bitcoin 0,8, publié en février 2013, a remplacé le moteur de stockage Berkeley DB par LevelDB. Le 11 mars, le bloc 225 430 est arrivé en transportant un nombre inhabituellement élevé d'entrées. Les nœuds exécutant la version 0,8 l'ont accepté. Les nœuds exécutant la version 0,7 ont atteint une limite de verrouillage de Berkeley DB au-delà de laquelle ils n'avaient jamais été configurés et l'ont rejeté. Le réseau s'est scindé en deux, chaque camp étant parfaitement certain que l'autre avait tort.
Les développeurs se sont coordonnés sur IRC en l'espace d'une heure et ont pris une décision inconfortable : demander aux pools de revenir à la version 0,7, abandonnant délibérément la branche portant le plus de travail, parce que cette branche était celle qu'une majorité de nœuds en fonctionnement ne pouvait pas suivre. La scission a duré environ six heures. Lorsque la chaîne 0,7 a pris le dessus, la branche abandonnée a atteint 24 blocs. Un processeur de paiements, OKPay, a signalé avoir été victime d'une double dépense pendant cette fenêtre.
Le correctif est sorti quelques jours plus tard dans la version 0.8.1, qui a amené les nouveaux nœuds à imiter l'ancienne limite jusqu'à une date de bascule coordonnée. Le BIP50 documente tout l'épisode en détail et constitue la meilleure chose à lire sur la manière dont le bitcoin gère une véritable urgence. C'est aussi la raison pour laquelle la réorganisation la plus profonde de l'histoire du bitcoin est une histoire de configuration de base de données plutôt qu'une histoire de puissance de minage.
Réorganisation de chaîne vs hard fork
Une réorganisation de chaîne se produit à l'intérieur d'un même ensemble de règles et se termine avec tout le monde revenu sur la même chaîne. Un hard fork change les règles de sorte que les deux branches ne peuvent jamais se réconcilier, et toutes deux continuent de croître comme des actifs distincts, ce qui est arrivé à Bitcoin Cash le 1er août 2017. L'une est un désaccord temporaire sur la question de savoir quelle chaîne valide est la meilleure chaîne. L'autre est un désaccord permanent sur ce que signifie valide.
Réorganisation de chaîne vs double dépense
Une réorganisation est un mécanisme ; une double dépense est l'une des choses que vous pourriez en faire, et rarement celle qui se produit réellement. L'immense majorité des réorganisations se contentent de re-miner les mêmes transactions dans un bloc différent, de sorte qu'aucun paiement ne change. Une inversion exige que la branche gagnante contienne une transaction conflictuelle que l'attaquant y a placée volontairement, ce qui suppose soit une puissance de hachage énorme, soit une chance extraordinaire. Les tentatives de double dépense moins coûteuses n'impliquent jamais de réorganisation, car elles visent des paiements qui n'ont jamais été confirmés.