XT, le « Bitcoin amélioré » qui a déclenché la guerre civile de la taille des blocs

Le débat sur la scalabilité de Bitcoin s’est développé dès 2013 autour de l’enjeu de l’augmentation de la taille limite des blocs. Ce débat a conduit à une véritable guerre civile, qui a été déclenchée par l’implémentation alternative Bitcoin XT, développée par Mike Hearn.

La logique des gros blocs

Comme nous l’avons dit dans l’article précédent, le débat sur la scalabilité de Bitcoin a vu émerger deux camps principaux qui s’opposaient : les partisans des petits blocs, souhaitant restreindre la taille limite des blocs à un minimum, et les partisans des gros blocs, voulant augmenter cette limite. Les partisans des gros blocs étaient majoritairement représentés par les développeurs Gavin Andresen et Mike Hearn.

Dans les premières années de Bitcoin, les partisans des gros blocs étaient largement majoritaires dans la communauté, où l’on ne pensait pas que l’augmentation de l’activité allait poser problème au réseau. Cependant, avec le développement de la logique des petits blocs à partir de 2013, la première vision a commencé à décliner. Ce n’est qu’à partir de 2014, alors que leurs adversaires gagnaient en influence, qu’il leur a fallu articuler leur vision de Bitcoin et tenter de réfuter les arguments en faveur des petits blocs.

Tout d’abord, la logique des gros blocs est fidèle à la vision de Satoshi, détail dont se réclament ses partisans, car (pour reprendre les mots de Gavin Andresen) « c’est cette vision qui incite les gens à investir leur temps, leur énergie et leur fortune dans cette nouvelle technologie risquée » .

Ils militent pour une taille limite des blocs plus élevée afin de conserver les qualités monétaires de Bitcoin, en particulier sa fonction de moyen d’échange. En effet, en 2015, il devient pour eux très urgent d’augmenter cette limite, sans quoi le réseau connaîtrait des congestions régulières et deviendrait inutilisable pour les paiements de tous les jours. Ils sont par ailleurs critiques des surcouches comme les chaînes latérales et le réseau Lightning, qui ont leurs défauts propres, qui sont loin d’être prêtes et qui reposent finalement sur la chaîne de base.

Cette tolérance pour une augmentation de la taille des blocs se base sur une vision plus optimiste de la capacité de Bitcoin à fonctionner correctement. Les big blockers ne voient pas de problème, du moins dans une certaine mesure, à la centralisation du minage et et de la vérification, conformément au développement décrit par Satoshi en 2008. Ils considèrent que la la majorité des utilisateurs devraient utiliser des portefeuilles légers utilisant la vérification de paiement simplifiée (SPV), et que seuls les gros commerçants devraient faire fonctionner un nœud complet.

Un usage défendu par les partisans des gros blocs est l’acceptation de transactions sans confirmation (0-conf) après leur vérification par le réseau, ce qui consiste à faire confiance aux mineurs pour qu’ils ne confirment que la première transaction reçue, et ne la rejette pas au profit d’une transaction dépensant cette même transaction. Cette acceptation sans confirmation est particulièrement adaptée aux petits montants, et est généralement pratiquée dans le commerce de détail. C’est pour cela qu’ils s’opposent de front à Replace-by-Fee qui détruit cette first-seen rule sur le réseau.

Enfin, ils soutiennent plutôt les mineurs, et croient parfois que ces derniers sont en charge du protocole, croyance qui provient d’une phrase ambiguë du livre blanc :

« [Les nœuds] votent avec leur puissance de calcul, exprimant leur acceptation des blocs valides en travaillant à leur extension et rejetant les blocs invalides en refusant d’y travailler. Toutes les règles et incitations nécessaires peuvent être appliquées grâce à ce mécanisme de consensus. »

La naissance de Bitcoin XT

L’année 2014 marque un tournant dans l’évolution du logiciel Bitcoin. Celui-ci est renommé en « Bitcoin Core » le 19 mars de cette année. Le 7 avril. Wladimir van der Laan devient mainteneur en chef de Bitcoin Core en lieu et place de Gavin Andresen, qui est absorbé par ses activités de scientifique en chef de la fondation Bitcoin depuis sa création en septembre 2012.

Cela provoque un changement dans la politique du logiciel, qui devient beaucoup plus conservatrice : tout changement nécessite en effet le consensus des cinq mainteneurs ayant un « commit access » qui sont Wladimir lui-même, Gavin Andresen, Pieter Wuille, Jeff Garzik et Gregory Maxwell.

Wladimir van der Laan Peter Wuille Gregory Maxwell développeurs Bitcoin

L’une des premières victimes de cette politique est Mike Hearn qui développe alors Lighthouse, une application de financement participatif décentralisé, basé sur le fonctionnement de la signature des transactions dans Bitcoin. Le 10 juin 2014, il crée le BIP-64 dans le but de faciliter l’implémentation des applications SPV (dont Lighthouse fait partie) par l’ajout d’un message de réseau appelé getutxo. Cependant, malgré sa persévérance, le changement finit par être refusé par Bitcoin Core.

Mike Hearn Bitcoin 2015
Mike Hearn en 2015

Par la suite, Mike Hearn décide de créer une autre implémentation logicielle de Bitcoin, un fork de Bitcoin Core appelé Bitcoin XT, et d’y ajouter les changements qu’il désire. La version 0.10 est publiée le 25 décembre 2014 et annoncée le 28. Elle inclut :

  • Le relais des doubles dépenses, développé par Gavin Andresen et Tom Harding (dgenr818) ;
  • L’ajout du message getutxo décrit dans le BIP-64.

Bien entendu, Bitcoin XT reste entièrement compatible avec les autres implémentations de Bitcoin, du moins au départ…

>> Anticipez le prochain cycle de croissance de Bitcoin en vous inscrivant sur la plateforme de référence Swissborg <<

La préparation à la guerre

Au printemps 2015, l’idée d’accroître la limite de la taille des blocs est remise sur la table. Du 4 au 8 mai, Gavin Andresen publie sur son blog personnel, une série d’articles soutenant une augmentation prochaine. Le 6 mai au soir, Matt Corallo le fait remarquer dans la liste de diffusion de développement et s’exprime contre « tout engagement » d’augmentation à court terme. Le lendemain, Wladimir van der Laan s’exprime contre : « Je suis opposé sans conviction à une augmentation de la taille des blocs dans un avenir proche. » C’est à partir de ce moment que la tension va s’intensifier.

Le 30 mai, les premières accusations sont portées contre Blockstream. L’entreprise emploie en effet 4 des principaux développeurs de Bitcoin Core (Gregory Maxwell, Pieter Wuille, Matt Corallo et Luke Dashjr), dont deux sont des mainteneurs. Cela pousse les gens à dénoncer un conflit d’intérêt : l’augmentation de la taille des blocs s’oppose à l’utilité des surcouches développées par l’entreprise, donc ces personnes ont tout intérêt à freiner le développement de la chaîne principale. On peut également rétorquer que ces développeurs se sont réunis parce qu’ils ont la même vision de Bitcoin et privilégient les petits blocs et cherchent comment régler le problème de la scalabilité d’une autre manière.

Le 12 juin 2015, les principales coopératives minières chinoises (F2Pool, BTCChina, Antpool, Huobi, BW) co-signent une déclaration en faveur d’une augmentation de la taille maximale à 8 Mo, mais pas 20 Mo qui est alors l’une des propositions les plus populaires.

Déclaration co-signée principales coopératives minières chinoises (F2Pool, BTCChina, Antpool, Huobi, BW) 8 Mo pas 20 Mo

Par la suite, plusieurs propositions sont faites :

  • Le 12 juin, Jeff Garzik propose le BIP-100, un BIP qui prévoit d’implémenter une taille maximale des blocs dynamique qui soit déterminée par le vote des mineurs. Il est aidé par Tom Harding et Dagur Valberg Johannsson.
  • Le 22 juin, Gavin Andresen publie le BIP-101, proposition d’augmentation de la limite à 8 Mo selon un processus de signalement minier avec un seuil à 75 % de signalement. Il s’agit d’un Miner Activated Hard Fork (MAHF), où les mineurs peuvent signaler dans l’entête de leurs blocs leur soutien, et où le changement est appliqué si 750 blocs en faveur du changement sont minés dans une période de 1000 blocs.
  • Le 17 juillet, Jeff Garzik (encore lui) partage le BIP-102, une variante du BIP-101 qui abaisse la taille visée à 2 Mo et réhausse la supermajorité requise à 95 %.
  • Le 30 juillet, Pieter Wuille propose le BIP-103, qui est un compromis pour augmenter la taille maximale des blocs de 17,7 % par an à partir de janvier 2017. Ce BIP est approuvé par d’autres développeurs favorables à la limitation de la taille des blocs comme Gregory Maxwell and Wladimir van der Laan.

Néanmoins aucune de ces propositions ne fait consensus : les trois premières propositions ne conviennent pas aux small blockers et l’augmentation promise par le BIP-103 est jugée bien trop faible par les big blockers. La situation se retrouve résumée par une déclaration de Gavin Andresen datant du 29 mai précédent :

« Si nous ne parvenons pas à un consensus ici, l’autorité ultime pour déterminer le consensus est le code que la majorité des marchands, des échanges et des mineurs utilisent. »

Le guerre civile

Le 15 août 2015, la version 0.11A de Bitcoin XT est publiquement annoncée. Celle-ci intègre le BIP-101, et donc la possibilité de provoquer une scission du réseau en cas d’un signalement suffisant, et Gavin Andresen est impliqué dans le projet. Mike Hearn écrit sur la liste de diffusion bitcoin-dev :

« Je suis triste que nous en soyons arrivés là, mais il n’y a pas d’autre solution. Le projet Bitcoin Core s’est tellement éloigné des principes que moi-même et beaucoup d’autres personnes considérons comme importants, qu’un fork est le seul moyen d’arranger les choses.

Le fork est une chose naturelle dans la communauté open source, Bitcoin n’est pas le premier et ne sera pas le dernier projet à passer par là. »

Mike Hearn possède le contrôle sur l’implémentation. Comme la FAQ de Bitcoin XT le dit, « les décisions sont prises d’un commun accord entre Mike et Gavin, Mike prenant la décision finale en cas de conflit grave. » Mike applique par là le concept de « dictateur bienveillant » qu’il a évoqué dans le podcast Epicenter 2 mois plus tôt, un modèle utilisé couramment dans le milieu du logiciel libre, mais ce qui dans le cas de Bitcoin fait grincer des dents.

Cette décision unilatérale, bien que totalement prévisible, provoque un réaction violente au sein de la communauté de partisans des petits blocs. Quarante minutes après l’annonce de Mike Hearn, un courriel provenant de l’adresse [email protected] est reçu sur la liste de diffusion. Celui-ci dit :

« J’ai suivi les récents débats sur la taille des blocs par le biais de la liste de diffusion. J’avais espéré que le débat serait résolu et qu’une proposition de fork obtiendrait un large consensus. Cependant, avec la publication officielle de Bitcoin XT 0.11A, il semble peu probable que cela se produise, et je me vois donc contraint de partager mes inquiétudes concernant ce fork très dangereux. […]

Si deux développeurs parviennent à créer un fork de Bitcoin et à redéfinir ce qu’est « Bitcoin », malgré les critiques techniques généralisées et par l’utilisation de tactiques populistes, je n’aurai d’autre choix que de déclarer que Bitcoin est un projet raté. Bitcoin était censé être à la fois techniquement et socialement robuste. Le déroulement de la situation actuelle a été très décevant à voir. »

Le message est signé « Satoshi Nakamoto ». Néanmoins, l’authenticité de ce message sera plus tard largement remise en doute, cette adresse ayant probablement été piratée.

Le 16 août, un fork de Bitcoin XT est partagé : appelé Not Bitcoin XT, il s’agit d’une version de XT qui ne signale pas le soutien au BIP-101.

Le 17, après un week-end très tendu dans la communauté, Michael Marquardt (theymos), le modérateur en chef du subreddit r/Bitcoin qui contrôle également le forum Bitcointalk, annonce suspendre les discussions à propos de Bitcoin XT. Il explique :

« /r/Bitcoin existe pour servir Bitcoin. XT, si/quand son hardfork est activé, s’écartera de Bitcoin et créera un réseau/une monnaie séparé(e). Par conséquent, XT et les services qui le supportent ne devraient pas être autorisés sur /r/Bitcoin. […] Ne violez pas nos règles simplement parce que vous n’êtes pas d’accord avec elles. Cela vous vaudra d’être banni de /r/Bitcoin, et le fait de contourner cette interdiction vous vaudra (et peut-être votre IP) d’être entièrement banni de Reddit. Si 90 % des utilisateurs de /r/Bitcoin trouvent ces politiques intolérables, alors je veux que ces 90 % des utilisateurs de /r/Bitcoin partent. »

Sa définition de Bitcoin est simple : pour qu’un changement par hard fork soit intégré il faut qu’il fasse l’objet d’un « accord quasi unanime de la part des experts de Bitcoin » et qu’il soit « également soutenu par la grande majorité des utilisateurs et des entreprises de Bitcoin ». Il s’oppose de cette manière à la majorité : si une scission contentieuse se produit, seule la cryptomonnaie définie par les anciennes règles de consensus est considéré comme Bitcoin, l’autre étant selon lui un « altcoin », une cryptomonnaie alternative.

Il s’en suivra une politique de censure drastique sur Reddit, ce qui va profiter au subreddit alternatif r/btc, qui deviendra le principal lieu de discussion des partisans des gros blocs.

Ainsi, Bitcoin se retrouve faire l’objet d’une véritable guerre civile entre deux factions. Dans la journée du 17 août, le journaliste Alex Hern écrit dans le Guardian :

« La guerre des bitcoins a commencé. »

Le 24 août 2015, une lettre ouverte co-signée par les PDG des entreprises BitPay, Blockchain.info, Circle, Kncminer, itBit, Bitnet, Xapo et BitGo, est publiée dans laquelle ces entreprises soutiennent le BIP-101 et s’engagent à faire fonctionner Bitcoin XT d’ici décembre. Bitcoin XT est donc supporté par une bonne partie de l’écosystème ; néanmoins cela ne suffit pas.

Dans les mois qui suivent, de nombreuses attaques par déni de service ont lieu contre les nœuds faisant fonctionner Bitcoin XT. Cet effort de guerre contribue probablement à dissuader l’utilisation de XT. Par conséquent, le signalement n’atteindra jamais le seuil des 75 % requis. Début 2016, Mike Hearn quittera la communauté dans un abandon rageur désormais célèbre et le nombre de nœuds XT s’effondrera.

Ainsi, Bitcoin XT a constitué le début de la guerre civile qui a marqué la deuxième phase du débat sur la scalabilité. Si les partisans des gros blocs avaient agi plus intelligemment, l’augmentation proposée aurait probablement eu lieu, mais il en a été autrement. Bitcoin XT a aussi constitué la première tentative ratée d’augmentation de la taille des blocs, précédant Bitcoin Classic, Bitcoin Unlimited et SegWit2X.

Cet article est partiellement basé sur l’ouvrage The Blocksize War de Jonathan Bier.

Ludovic Lars

Je suis fasciné par les cryptomonnaies et par l'impact qu'elles pourraient avoir sur nos vies. De formation scientifique, je m'attache à décrire leur fonctionnement technique de la façon la plus fidèle possible.