Bitcoin et la guerre des blocs : l’impossible compromis sur la scalabilité

Le débat sur la scalabilité de Bitcoin a fait rage entre 2013 et 2017, mais ce n’est qu’à partir de l’été 2015 que les choses ont commencé à véritablement s’envenimer. Durant l’année 2016, les deux camps ont tenté d’arriver à un compromis, sans succès.

Scalabilité de Bitcoin : La guerre pour un objet unique

Au début de l’année 2016, le débat sur la scalabilité s’intensifie. La taille moyenne des blocs avoisine les 600 ko et sa croissance linéaire fait penser que la limite des 1 Mo sera atteinte avant la fin de l’année. Les forces en présence sont alors divisées en deux camps principaux :

  • Les partisans des gros blocs, qui supportent l’augmentation directe de la limite sur la taille des blocs par le biais de Bitcoin XT, et qui sont alors en perte de vitesse.
  • Les partisans des petits blocs, qui soutiennent SegWit et l’implémentation du réseau Lightning comme moyen d’accroître le volume transactionnel.

Le 3 janvier 2016, lors du septième anniversaire du bloc de genèse, Brian Armstrong, PDG de la plateforme d’échange Coinbase, publie deux articles où il déclare formellement être en faveur de l’augmentation de la taille limite des blocs et où il appelle au vote des mineurs pour sortir de l’impasse. Cette déclaration fait suite à son annonce de l’utilisation de Bitcoin XT par l’entreprise et la suppression du portefeuille de Coinbase sur le site bitcoin.org (qui sera réintégré par la suite).

L’argument central de Brian Armstrong dans les articles publiés est que ce sont les mineurs qui décident des règles et que ce choix n’a pas à être laissé entre les mains d’un « comité » de développeurs :

« Heureusement, Bitcoin dispose d’un mécanisme de mise à niveau intégré et élégant. Si la majorité des mineurs de Bitcoin “votent” pour une mise à niveau particulière, il s’agit par définition de la nouvelle version de Bitcoin. Le nombre de votes obtenus par chaque mineur est proportionnel à la quantité de puissance de calcul qu’il apporte au réseau (les votes ne peuvent donc pas être truqués). »

Brian Armstrong, Scaling Bitcoin: The Great Block Size Debate, 3 janv. 2016

Cette conception erronée repose sur l’interprétation des deux dernières phrases du livre blanc de Bitcoin qui disent :

« [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. »

Satoshi Nakamoto, 31 octobre 2008

Le 13 janvier, le développeur Gavin Andresen reprend cette vision de gouvernance dans un article intitulé Classic? Unlimited? XT?, au sein duquel il promeut un écosystème d’implémentations multiples. Comme il l’expliquera par la suite, il considère qu’une chaîne minoritaire ne peut pas survivre et pense que chaque fonctionnalité doit faire l’objet d’un vote des mineurs, qu’il s’agisse de l’augmentation de la taille limite des blocs ou de SegWit, modification à laquelle il est par ailleurs plutôt favorable.

Le 14 janvier, Mike Hearn, le développeur en chef de Bitcoin XT, capitule. L’implémentation privilégiée par les partisans des gros blocs devient alors le tout nouveau Bitcoin Classic, qui recueille instantanément l’assentiement des mineurs.

Bitcoin Classic implémente une version modifiée du BIP-101 qui doublerait la taille limite des blocs en cas d’un signalement de 75 % de la puissance de calcul du réseau. Le projet met en place un contrôle plus démocratique du développement, et intègre une version simplifiée de SegWit à sa feuille de route.

La principale figure derrière Bitcoin Classic est Jonathan Toomim, un développeur qui gère une entreprise de minage avec son frère, ce qui fait que le projet sera dénigré sous le nom de « ToomimCoin » . Les autres personnes impliquées sont Gavin Andresen, Jeff Garzik, Pedro Pinheiro, Tom Zander, Jonathan Rumion, Marshall Long, Olivier Janssens et Peter Rizun. La sortie officielle du logiciel a lieu le 10 février.

Le 17 janvier, Paul Vigna écrit pour le Wall Street Journal :

« Bitcoin Classic a émergé des cendres du débat entre XT et Core. Il s’agit d’une version de Bitcoin qui autoriserait une limite de deux mégaoctets, mettant en place des règles pour l’augmenter au cours du temps. Elle semble gagner rapidement du soutien. »

Paul Vigna, Is Bitcoin Breaking Up?, 17 janvier 2016

Bitcoin Classic gagne en effet en popularité, notamment du côté des coopératives minières qui le soutiennent à 49 %. Ce succès attire l’attention des partisans des petits blocs.

Le 20 février 2016, une réunion d’urgence est organisée à Hong Kong. Cette « Table Ronde » réunit les principales coopératives minières, certaines entreprises de l’écosystème et des contributeurs majeurs de Bitcoin Core. Après de nombreuses heures de discussions sous pression, les participants arrivent à un accord, tant bien que mal. Celui-ci spécifie que :

  • Les développeurs de Bitcoin Core doivent implémenter SegWit (censé être prêt pour avril) et un doublement de la taille limite des blocs de base (dont le code doit être livré avant juillet).
  • Les mineurs s’engagent à activer SegWit.
  • Les mineurs doivent n’utiliser que Bitcoin Core, et renoncent ainsi à faire fonctionner Bitcoin Classic.

Néanmoins, cet accord ne satisfait personne. Les partisans des gros blocs reprochent aux mineurs d’avoir renoncé à Bitcoin Classic, et les partisans des petits blocs accusent les développeurs de Bitcoin Core de s’être compromis en négociant avec les mineurs (Gregory Maxwell parlera d’« abrutis bien intentionnés »).

De plus, l’accord est suffisamment flou pour qu’il soit violé de part et d’autre : l’augmentation de la taille limite des blocs devra n’avoir lieu que si elle recueille « un large soutien de l’ensemble de la communauté de Bitcoin ».

La controverse Craig Wright

Le débat sur la scalabilité va néanmoins être perturbé par l’intervention d’un individu hors du commun, prétendant être Satoshi Nakamoto : Craig Steven Wright.

Craig Wright est un informaticien et entrepreneur australien. Le 8 décembre 2015, deux enquêtes indépendantes, publiées respectivement par Wired et Gizmodo, le propulsent sur les devants de la scène en affirmant qu’il s’agit du créateur de Bitcoin. Ces enquêtes se basent sur des éléments qui peuvent en effet faire penser qu’il a été impliqué dans l’invention de la cryptomonnaie aux côtés de son ami Dave Kleiman, mort en 2013.

Quelques mois plus tard, le lundi 2 mai 2016, Craig Wright publie un long et tortueux article de blog, dans lequel il inclut une signature. Cette signature correspond à la clé publique liée à l’adresse 12cbQLTFMXRnSzktFkuoG3eHoMeFtpTu3S qui a servi à recevoir la récompense du bloc 9 et à envoyer le premier paiement à Hal Finney le 12 janvier 2009, et a donc été produite par Satoshi Nakamoto. Néanmoins, un utilisateur de Reddit (JoukeH) découvre très rapidement qu’il s’agit de la signature d’une transaction présente sur la chaîne. Ainsi, l’article ne prouve rien et incite la communauté à la prudence.

Un entretien de Craig Wright avec la BBC est également mis en ligne ce jour-là. Dans cet entretien, il affirme avoir été « la partie principale » derrière Satoshi Nakamoto, mais que « d’autres personnes l’ont aidé ». Il prétend également avoir signé un message en privé devant le journaliste qui l’interroge.

Craig Wright lors de son entretien pour la BBC

En outre, ce même jour, Gavin Andresen publie un article dans lequel il dit croire que Craig Wright est « la personne qui a inventé Bitcoin », ce dernier lui ayant présenté en personne « des messages signés avec les clés que seul Satoshi devrait posséder ». Le rôle de mainteneur de Gavin et son commit access sur le dépôt de Bitcoin Core sont révoqués dans la foulée, sous prétexte que « les membres de l’équipe de Core craignent qu’il ait été piraté ».

Le 2 mai est aussi le premier jour de la conférence Consensus 2016 organisée par CoinDesk à New York. Cela permet à Gavin de s’expliquer en personne lors d’une table ronde, et il confirme sa déclaration :

« Il a signé en ma présence en utilisant la clé privée du […] tout premier premier bloc de Bitcoin miné, sur un ordinateur dont je suis convaincu qu’il n’a pas été trafiqué, avec un logiciel dont je suis convaincu qu’il n’a pas été trafiqué, un message de mon choix. »

Vitalik Buterin, présent à cette table ronde, déclare que Craig Wright n’est « probablement pas Satoshi ».

Cet épisode a pour effet de discréditer Gavin Andresen, qui reconnaîtra plus tard avoir été dupé. Son accès à GitHub ne sera jamais restauré.

Une bonne partie des partisans des gros blocs soutiendront par la suite Craig Wright, jusqu’à la création de Bitcoin SV en novembre 2018, ce qui contribuera à les discréditer.

Bitcoin Classic perd définitivement de sa superbe suite à cet épisode, au profit de Bitcoin Unlimited, une version du logiciel développée depuis fin 2015 qui implémente une augmentation complexe de la taille des blocs au cours du temps. Bitcoin Unlimited devient alors la version du logiciel promue par les partisans des gros blocs.

L’impossible compromis

Au-delà de l’épisode Craig Wright, un autre événement vient marquer le débat : la scission entre Ethereum et Ethereum Classic.

Le 17 juin 2016, le contrat de TheDAO, une organisation autonome décentralisée ayant pour mission d’investir dans l’écosystème, est piraté et 3,6 millions d’éthers sont dérobés, ce qui représente 50 millions de dollars à l’époque. La décision est alors prise par la majorité de la communauté d’annuler purement et simplement ce vol par la modification de l’état du système. Un mois plus tard, le 20 juillet, la scission se produit et la chaîne se sépare en deux chaînes distinctes : celle suivant le protocole modifié (qui s’appellera Ethereum) et celle suivant le protocole initial (qui prendra le nom d’Ethereum Classic).

Cette affaire montre les conséquences que peuvent avoir un hard fork controversé comme la confusion et la perte de valeur à court terme. Cela a pour effet de conforter la position conservatrice des partisans des petits blocs qui prônent de faire évoluer le protocole par des soft forks tels que SegWit.

Lors de l’été 2016, on sent donc que le vent est en train de tourner en faveur des partisans des petits blocs. Mais cela ne plaît pas à tout le monde, et en particulier aux mineurs chinois

Fin juillet 2016, une rencontre entre les développeurs de Bitcoin Core et les mineurs a lieu en Californie. Celle-ci a pour objectif d’améliorer le dialogue en réduisant le fossé linguistique et culturel entre les développeurs, qui sont occidentaux pour la plupart, et les patrons des coopératives minières chinoises tels que Jihan Wu.

Cette date n’est pas choisie au hasard : en effet, la fin du mois de juillet constitue la date limite pour l’implémentation du doublement de la taille limite des blocs prévue par l’accord de Hong Kong. Bien que certains d’entre eux (comme luke-jr) aient réalisé un travail préliminaire, les développeurs n’ont pas de code à présenter, prétextant qu’ils n’ont pas tous signé l’accord de Hong Kong, que la scission récente de Ethereum montre que le hard fork est une mauvaise idée et que les mineurs ont l’intention de bloquer SegWit. L’accord de Hong Kong est donc formellement violé, mais la séparation n’est pas encore faite et les deux parties sont encore à la recherche d’un compromis.

En août 2016, Jacob Smith (aussi connu sous le pseudonyme BeijingBitcoins), un américain vivant en Chine, va rendre visite aux mineurs chinois pour les convaincre de ne pas activer SegWit. Il est affilié à Bitcoin.com, l’entreprise dirigée par Roger Ver, fervent partisan de l’augmentation de la taille des blocs. Le 20 août, une donation de 500 millions de dollars est faite au profit de l’organisation Bitcoin Unlimited.

Jacob « Jake » Smith en 2013

Les 8 et le 9 octobre, la troisième édition de la conférence Scaling Bitcoin est organisée à Milan. Les sujets techniques sont variés, mais contrairement aux deux précédentes éditions, aucune présentation sur la mise à l’échelle de la chaîne n’a lieu, ce qui contrarie les partisans des gros blocs.

C’est pour cela que, le 8 octobre au soir, Roger Ver, Jerry Chan et Jacob Smith organisent une rencontre dans un hôtel de la ville pour les gens assistant à la conférence, où ces derniers peuvent se voir offrir « de la nourriture et des boissons gratuites ». Cette rencontre permet d’aborder les sujets non traités durant la conférence : Xthin, le consensus émergent de Bitcoin Unlimited et le passage à l’échelle du réseau Bitcoin au-delà de 100 transactions par seconde. Cela illustre la division qui règne dans la communauté.

Le 27 octobre 2016, la version 0.13.1 de Bitcoin Core est publiée. Cette dernière inclue les paramètres d’activation de SegWit : un signalement des mineurs suivant le BIP-9, nécessitant un seuil de 95 % de blocs favorables durant une période de 2016 blocs. La date du début du signalement est le 15 novembre 2016 à minuit UTC, mais il ne débute officiellement que lors de l’ajustement de la difficulté suivant qui se produit le 18 novembre.

Le signalement monte tout d’abord de manière encourageante, mais atteint un plafond de 25 % début décembre 2016, et restera au même niveau durant les mois suivants. Les mineurs chinois ont en effet décidé de ne pas activer SegWit, ce qui bloque la situation car un soft fork nécessite au moins 50 % de la puissance de calcul pour avoir lieu avec aisance.

Pourcentage de blocs incluant segwit sur le réseau Bitcoin
Évolution du taux de signalement de SegWit par BIP-9 de novembre 2016 à mars 2017

Au début de l’année 2017, la communauté de Bitcoin se trouve donc dans une impasse. Un compromis n’a pas pu être trouvé et la tension est de plus en plus palpable. La taille limite des 1 Mo est atteinte de temps à autres, créant les premières congestions du réseau. Par conséquent, une décision doit être prise au plus vite.

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.