La communauté a découvert la semaine passée un « bug » majeur qui aurait pu crashé temporairement une partie significative du réseau Bitcoin ET permettre de créer davantage de Bitcoins via ce que l’on appelle dans le jargon le « double spending ».
Nous avons gardé le silence sur cette affaire en publiant simplement sur notre compte Twitter la marche à suivre pour les « Full Nodes », le temps que les choses se décantent.
Les développeurs ont d’ailleurs minimisé dans un premier temps l’ampleur du problème jusqu’à ce que la majorité des mineurs se mettent à jour.
Qu’est ce qui s’est passé ?
Les développeurs ont d’abord attiré l’attention des mineurs en mettant en lumière un bug de type « Denial of service » ainsi qu’en proposant une mise à jour. Ce bug aurait pu crashé le réseau temporairement mais ce n’était néanmoins pas le bug le plus dangereux que la mise-à- jour visait à réparer.
Une fois la mise à jour acceptée par la majorité des Nodes, les développeurs de Bitcoin Core ont révélé qu’elle a en réalité permis de corriger une vulnérabilité beaucoup plus inquiétante. Ce bug aurait pu permettre d’augmenter artificiellement la masse monétaire du Bitcoin via un type spécifique de double dépense (Double spending)!!
Il est où le problème exactement ?
Le protocole source de la Blockchain du Bitcoin a été conçu de manière à ce que la masse monétaire du Bitcoin augmente à mesure que les mineurs valident les blocs et qu’elle ne dépasse jamais 21 000 000 d’unités. Cette masse monétaire fixe du Bitcoin est l’une des caractéristiques principales qui donnent de la valeur au Bitcoin par rapport aux monnaies de singe constamment dévaluées par la création de nouvelles dettes payées avec la planche à billets.
Bon, cela étant dit, il faut tout de suite relativiser les choses en précisant que ce n’est pas parce que cette faille a existé qu’il aurait été facile de l’exploiter et que tout aurait été foutu pour toujours… Tout est irréversible dans la blockchain mais rien n’est irréversible…
Il faut déjà rappeler qu’il est évidemment dans l’intérêt des mineurs de protéger le Bitcoin, ce qui veut dire que les mineurs auraient rapidement mis en place un fork pour isoler la Blockchain malicieuse.
Exploiter cette faille aurait donc coûté au mineur sans scrupule la récompense de 12.5 Bitcoins qu’il aura « gâché » vu que le fork aurait eu pour but de rétablir le registre des transactions (blockchain) qui prévalait avant le bloc malicieux utilisé pour réaliser des doubles dépenses.
Soit dit en passant, voilà pourquoi les entreprises qui acceptent de grandes sommes de Bitcoins en paiement doivent attendre que leurs transactions soient validées par au moins 200 blocs avant d’envoyer les marchandises. Pourquoi 200 Blocs ? Parce que c’est à peu près le temps qu’il faudrait pour que les développeurs et les mineurs puissent décider de la marche à suivre si un tel bug permettant des doubles-dépenses venait à être exploité.
[La marche à suivre est toute simple. Comme nous venons de le dire, il s’agit d’un fork qui ferait repartir la Blockchain à partir d’une date antérieure à l’attaque. Soit dit en passant, cela ferait perdre 12.5 Bitcoins au mineur sans scrupule mais aussi bien davantage de Bitcoin à l’ensemble des mineurs à cause du temps perdu puisque la Blockchain repartirait d’un moment antérieur.]
Bitcoincore.org a publié un communiqué et parle dès la deuxième ligne d’une « vulnérabilité inflationniste critique ». Retrouvez ICI le communiqué.
Qui est responsable ?
Et si un développeur mal intentionné avait trouvé la faille ? Et s’il existait d’autres bugs ? Est-ce un sabotage de la part d’un développeur ayant la double casquette BTC Core / BTC CASH ? Et si toute une cabale s’était mise en place pour exploiter cette faille afin de faire le plus de dégâts possibles?
Nous aimerions bien savoir qui est le développeur qui a laissé traîner un tel bug dans le code source du Bitcoin version 0.14.0 qui date de Mars 2017 (Oui, cela fait deux ans et demi que le bug était dans le système !!).
Le but n’est pas d’accabler qui que ce soit mais si ce « bug » n’est PAS le fruit du hasard, alors nous avons le droit de savoir!! Il ne faut pas nous prendre pour des cons non plus.
Les déclarations du développeurs « Theymos » vont dans ce sens :
« Si les pratiques de Bitcoin Core n’évoluent pas, alors il est inévitable que des failles similaires finiront pas émerger de nouveau et il se pourrait que nous ne soyons pas aussi chanceux cette fois-ci. »
Cet épisode prouve que le Bitcoin n’est pas parfait et que les ajustements des développeurs, même si plein de bonne volonté (ou pas), font courir certains risques.
Il faudrait investir dans des équipes de testeurs professionnels financés par les mineurs car ce genre de bug sont un coup dur pour la réputation d’une cryptomonnaie qui a vocation à devenir la monnaie internationale.
Mais encore une fois, nous n’avons absolument pas risqué un « effondrement du Bitcoin » comme certains journalistes ont titré. Néanmoins, il ne sert à rien de minimiser ce bug qui nous rappelle que le si le Bitcoin est « indestructible », il peut y avoir des accidents de parcours et des gens lésés dans le processus de double spending.
Explication d’un développeur en Anglais à propos du bug de double spending :
“Thus, in Bitcoin Core 0.15.X, 0.16.0, 0.16.1, and 0.16.2, any attempts to double-spend a transaction output within a single transaction inside of a block where the output being spent was created in the same block, the same assertion failure will occur (as exists in the test case which was included in the 0.16.3 patch). However, if the output being double-spent was created in a previous block, an entry will still remain in the CCoin map with the DIRTY flag set and having been marked as spent, resulting in no such assertion. This could allow a miner to inflate the supply of Bitcoin as they would be then able to claim the value being spent twice.”
Donation :
BTC : 1Crsj83gGx7iGGNhSyYedxX7y5Jqo5gKbA
ETH : 0xe7110Aee7923d42F7AbF975bAF94b962e8c8e30F
Congratulations @cryptojournalfr! You received a personal award!
You can view your badges on your Steem Board and compare to others on the Steem Ranking
Vote for @Steemitboard as a witness to get one more award and increased upvotes!