Bitcoin Cash : la branche minoritaire issue du débat sur la scalabilité
L’année 2017 a été l’année de résolution du débat sur la scalabilité de Bitcoin et de la guerre civile qui rongeait la communauté. L’apparition de Bitcoin Cash en août a joué un rôle central dans ce dénouement, en créant une porte de sortie pour le camp des partisans de l’augmentation de la taille des blocs. Revenons sur l’origine et la naissance de ce hard fork de Bitcoin.
L’échec de Bitcoin Unlimited
Au printemps 2017, la guerre civile de Bitcoin voit s’affronter deux camps principaux :
- Les partisans des petits blocs, ayant largement gagné en popularité durant l’année passée, qui souhaitent activer SegWit pour faciliter l’implémentation du réseau Lightning et qui soutiennent Bitcoin Core ;
- Les partisans des gros blocs, étant désormais minoritaires, qui se rassemblent derrière l’implémentation logicielle Bitcoin Unlimited dans le but d’augmenter la taille des blocs de manière significative.
Le projet Bitcoin Unlimited, lancé le 26 novembre 2015 par Andrew Stone, est devenu populaire au courant de l’été 2016, remplaçant Bitcoin Classic sur les devants de la scène. Bitcoin Unlimited a, comme son nom l’indique, pour objectif de permettre une taille des blocs illimitée. Pour cela, le logiciel met en place un système de limite de taille des blocs variable déterminée par les nœuds, qui utilise un mécanisme appelé le « consensus émergent » faisant intervenir trois paramètres :
- La taille de génération maximale (maximum generation, MG) : la taille limite de production (soft limit) choisie par chaque mineur ;
- La taille de bloc excessive (excessive blocksize, EB) : la taille limite d’acceptation (hard limit) choisie par chaque nœud du réseau ;
- La profondeur d’acceptation (acceptance depth, AD) : le nombre de confirmations pour qu’un bloc de taille strictement supérieure à la taille excessive (EB) soit accepté par le nœud.
Chaque paramètre est local, c’est-à-dire choisi par chaque nœud du réseau. Les paramètres EB et AD sont partagés avec le reste du réseau pour permettre une meilleure synchronisation. Lorsque la profondeur d’acceptation d’un nœud est atteinte pour un bloc excessif, le nœud connaît une période de 144 blocs (« sticky gate ») lors de laquelle il accepte une taille des blocs illimitée pour éviter de rejeter trop de blocs.
La sécurité du consensus émergent se base théoriquement sur les incitations économiques des nœuds et en particulier celles des mineurs. Néanmoins, cela ne convainc pas tout le monde : contrairement à XT et Classic, Unlimited ne propose pas une augmentation simple de la taille limite des blocs, mais un mécanisme complexe dont le modèle de sécurité est est considérablement plus difficile à évaluer.
Des analyses mettent ainsi en doute la viabilité du consensus émergent, au moins d’un point de vue strictement technique. Par exemple, l’« attaque de l’EB médiane » permettrait en théorie à un mineur isolé de faire accepter au réseau des blocs de très grande taille, chose à quoi s’opposent catégoriquement les partisans des petits blocs.
De plus, la complexité du mécanisme accroît le risque de mauvais fonctionnement, comme cela se passe le 29 janvier 2017 lorsque la coopérative de Bitcoin.com mine un bloc invalide de 1 000 023 octets.
Ces doutes n’empêchent pas Bitcoin Unlimited de gagner en traction auprès des partisans des gros blocs au début de l’année 2017. L’implémentation est notamment soutenue par Roger Ver, l’un des premiers investisseurs dans l’écosystème, qui est le PDG de l’entreprise Bitcoin.com et un partisan de la première heure de l’augmentation de la taille limite. Cela permet à l’organisation de disposer d’un large financement.
Les mineurs désirent par dessus tout augmenter la taille des blocs et soutiennent également Bitcoin Unlimited. Le 7 mars, la coopérative Antpool (contrôlée par Bitmain) commence à signaler l’implémentation. Quelques jours plus tard, le taux de blocs signalant Unlimited passe devant celui de SegWit.
Cependant, le relatif succès de Bitcoin Unlimited sera de courte durée. Le 14 mars, une faille technique du code est découverte et un correctif est publié. La publication de ce correctif fait néanmoins que la faille en vient à être exploitée, ce qui met hors service une grande partie des nœuds utilisant l’implémentation. Même si tout revient dans l’ordre le lendemain, le mal est fait : la réputation de Bitcoin Unlimited est salie et les partisans des petits blocs utilisent cet amateurisme à leur avantage pour vanter les mérites de Bitcoin Core.
Quelques jours plus tard, le 17 mars, Bitcoin Unlimited subit un nouveau revers. En raison de la hausse du taux de signalement pour Unlimited qui accroît la probabilité d’une scission, des plateformes majeures de l’écosystème (dont Kraken, Bitfinex, Bitstamp et Bittrex) annoncent conjointement considérer Bitcoin Unlimited comme une cryptomonnaie à part :
« Comme il semble désormais probable qu’un hard fork va être initié par le projet Bitcoin Unlimited, nous avons décidé d’attribuer le sigle BTU (ou XBU) à la branche Bitcoin Unlimited. L’implémentation Bitcoin Core continuera à s’échanger sous le sigle BTC (ou XBT) et toutes les plateformes d’échange traiteront les dépôts et les retraits en BTC, même si la chaîne BTU possède une puissance de hachage supérieure. Certaines plateformes d’échange ont l’intention de coter le BTU et nous allons tous essayer de prendre des mesures pour préserver et permettre l’accès des clients à leurs BTU. Cependant, aucun des signataires ne peut coter BTU à moins que nous puissions faire fonctionner les deux chaînes indépendamment sans incident. Par conséquent, nous insistons pour que la communauté Bitcoin Unlimited (ou toute autre implémentation rompant le consensus) intègre une protection bidirectionnelle forte contre la rediffusion. Dans le cas contraire, nous serons dans l’incapacité de préserver le BTU pour les clients et cela retardera ou empêchera purement et simplement la cotation du BTU. »
Dans la journée, cette déclaration est suivie par Poloniex et BitMEX.
Il s’agit d’une décision controversée, défavorisant considérablement les partisans de la mise à l’échelle sur la chaîne :
- Cette déclaration constitue un choix subjectif sur ce qu’est la continuation de la chaîne, choix qui n’avait pas été réalisé pour Bitcoin XT et Bitcoin Classic auparavant (ils auraient pu devenir le Bitcoin principal et garder le sigle boursier BTC).
- La décision exclut catégoriquement Bitcoin Unlimited, quand bien même la chaîne deviendrait majoritaire.
- Les plateformes se réservent le droit de ne pas distribuer la cryptomonnaie issue de la scission.
- La protection contre la rediffusion (replay protection) devient une préoccupation majeure, probablement à la suite de l’expérience des attaques par rediffusion des transactions entre Ethereum et Ethereum Classic l’année précédente.
Les plateformes d’échange sont les principaux acteurs économiques de Bitcoin (la spéculation représentant la grande majorité de l’activité) et il s’agit donc d’une grand victoire pour l’équipe de Bitcoin Core et les partisans des petits blocs, qui sont hostiles aux modifications de consensus. En effet, il est peu probable que les mineurs activent une augmentation de la taille des blocs par le consensus émergent si cela conduit nécessairement à deux versions du protocole.
Bitcoin Unlimited se trouve donc bloqué. Toutefois, un autre projet de hard fork va naître, dans le but d’éviter l’activation de SegWit.
L’opposition à l’activation de SegWit
Avec l’émergence de l’User Activated Soft Fork (UASF) et l’insistance de la communauté au début du printemps 2017, il semble de plus en plus probable que SegWit s’active. L’accord de New York instituant SegWit2X, signé par les principaux acteurs économiques de l’écosystème le 23 mai, vient renforcer cette probabilité.
Cependant, ceux qui s’opposent à SegWit ne peuvent pas se contenter d’attendre. SegWit est un soft fork : s’il est appliqué par une majorité de la puissance du réseau, ceux qui le refusent seront forcés de suivre la chaîne. De ce fait, il faut procéder à un hard fork pour y échapper. À ce moment-là, la volonté de scinder la chaîne dans le but de créer une branche minoritaire remonte à quasiment un an.
Dès le 31 juillet 2016, Paul Wasensteiner (singularity87
) écrit que « les mineurs [n’allaient] rien faire » (Bitcoin Core avait déjà rompu l’accord de Hong Kong), qu’« on [savait] maintenant qu’une branche minoritaire [pouvait] survivre » (grâce à la scission entre Ethereum et Ethereum Classic) et que donc un hard fork était réalisable. Par la suite, un groupe nommé BTCfork est créé dans le but d’initier un hard fork pour restaurer la « vision originelle de Bitcoin ».
Le développeur freetrader
, qui travaillait sur sa propre version modifiée de Bitcoin Classic depuis mars, se joint à l’effort, notamment au travers de son projet hardfork_prototype_0, un prototype de « fork minimum viable ». Son but est clair : réaliser un hard fork propre comportant une protection contre la rediffusion et (si besoin) une modification de l’algorithme de preuve de travail, pour augmenter la taille limite des blocs tout en n’intégrant pas SegWit.
Au cours du printemps 2017, avec la menace grandissante de l’UASF, les mineurs chinois se demandent comment faire en sorte de garder une version de Bitcoin sans SegWit. L’idée d’un User Activated Hard Fork (UAHF), est proposée en avril 2017 par Jihan Wu, le PDG de Bitmain, l’entreprise spécialisée dans la conception d’ASIC qui contrôle également les coopératives de minage Antpool et BTC.COM. Sur Twitter, le jeune entrepreneur chinois écrit :
« Nous préparons un UAHF pour le marché. Nous aurons deux types de Bitcoin si l’UASF est activé. Gros blocs contre blocs de 1 Mo. Commerçons. »
Pour mettre en place ce hard fork, les mineurs chinois font appel à Amaury Séchet (deadalnix
), un Français, ancien ingénieur informatique de Facebook, qui se consacre alors à faire de la recherche sur les moyens d’augmenter la scalabilité du réseau et qui publie ses idées sur son blog. Ce dernier implémente l’UAHF au sein de son implémentation Bitcoin ABC (ABC signifiant Adjustable Blocksize Cap) qu’il utilisait jusqu’alors pour expérimenter. Il fait appel à freetrader pour l’aider, qui accepte et le rejoint pour travailler sur le projet. D’autres personnes suivront.
Le 14 juin 2017, l’entreprise Bitmain publie sur son blog une annonce officielle de l’UAHF. Ce plan, qui s’oppose à l’UASF qui doit avoir lieu 1er août à minuit (UTC), prévoit une activation du hard fork le même jour à 12:20 UTC. Il s’agit également d’un plan de secours dans le cas où SegWit2X (l’activation de SegWit couplée à un doublement de la taille des blocs, que Bitmain soutient par ailleurs) ne serait pas correctement mis en œuvre.
Le 30 juin, est organisée la Future of Bitcoin Conference à Arnhem aux Pays-Bas. Elle réunit principalement des intervenants multiples, soutenant principalement l’augmentation de la taille des blocs comme Jihan Wu (Bitmain), Peter Rizun (Bitcoin Unlimited), Ryan X. Charles (Yours), Nikita Zhavoronkov (Blockchair), ou encore le tristement célèbre Craig Wright. Le 1er juillet, Amaury Séchet annonce dans sa présentation la sortie de Bitcoin ABC, précisant bien qu’il s’agit de l’implémentation de l’UAHF proposée par Bitmain.
Le 22 juillet, Franco Cimatti (HostFat
) annonce officiellement le projet de hard fork sur le forum Bitcointalk. Le nom du protocole et de la cryptomonnaie sera Bitcoin Cash et son sigle boursier BCC.
Le 27 juillet, la plateforme d’échange Bitfinex publie un communiqué dans laquelle elle annonce attribuer le nom « Bcash » (prononcé « bicache ») à la cryptomonnaie afin de « réduire la confusion avec Bitcoin » et le sigle BCH parce qu’elle utilise déjà BCC pour un autre jeton. Très rapidement, le surnom « Bcash » est repris par les partisans des petits blocs dans le but de nier tout lien de parenté avec Bitcoin. Il deviendra un terme péjoratif utilisé par les maximalistes.
L’apparition de Bitcoin Cash
Le 1er août 2017, l’embranchement entre les deux chaînes a lieu. Le mécanisme de scission s’enclenche à 12:20 MTP, soit environ une heure (6 blocs) après l’heure réelle, imposant au bloc suivant d’avoir une taille strictement supérieure à 1 Mo. Il s’agit donc d’un hard fork bilatéral, et pas extensif : aucun risque de destruction par recoordination avec la chaîne concurrente n’est à prévoir.
Le premier bloc est miné avec la difficulté de Bitcoin et requiert donc l’intervention de mineurs volontaires pour maintenir la chaîne en vie. C’est, entre autres, la coopérative chinoise ViaBTC, dirigée par Haipo Yang et alliée à Bitmain, qui se charge de déployer la puissance de calcul nécessaire. Le bloc de séparation, le bloc 478 559 que certains appeleront le « bloc d’exode », finit par être miné près de 5 heures après l’activation du hard fork, à 18:12 UTC, par ViaBTC. On y trouve un message de bienvenue célébrant la naissance de la fille de Haipo Yang : « Welcome to the world, Shuya Yang! »
L’algorithme d’ajustement de la difficulté est modifié pour faire en sorte de diminuer la difficulté de 20 % si les blocs mettent trop de temps à être minés, ce qui permet à la difficulté de s’abaisser dans les jours qui suivent.
Outre cette modification de l’algorithme de difficulté, Bitcoin Cash se différencie de son grand frère grâce aux caractéristiques suivantes :
- L’absence de SegWit, qui est alors en voie d’être activé sur BTC ;
- L’absence de Replace-by-Fee dans le code ;
- Une taille limite des blocs de 8 Mo, soit une multiplication par 8 de la capacité transactionnelle ;
- Un algorithme de signature amélioré suivant le BIP-143 ;
- Une protection protocolaire contre la rediffusion implémentée de facto par cet algorithme distinct.
La protection contre la rediffusion permet d’empêcher les transactions de la chaîne de BTC d’être republiées sur la chaîne de Bitcoin Cash, et inversement, ce qui rend le hard fork très propre. Cette propreté fait que Bitcoin Cash est supporté par de nombreuses places de marché (dont Kraken, Bitfinex ou Bittrex) qui n’ont pas à subir le casse-tête qu’avait causé la scission entre ETH et ETC.
Les sigles boursiers BCC et BCH se font concurrence selon les plateformes. Malheureusement, le sigle BCC initialement adopté par les promoteurs du projet est déjà utilisé par Bitconnect, une pyramide de Ponzi qui est alors la 12ème cryptomonnaie en terme de capitalisation selon Coinmarketcap : c’est pourquoi le sigle BCH devient très rapidement dominant.
Contrairement à ce qui est parfois affirmé, Roger Ver ne se range pas derrière Bitcoin Cash immédiatement. En effet, il croit encore que le compromis SegWit2X aura lieu. Le communiqué de Bitcoin.com faisant suite à l’annonce de Bitcoin Cash dit ainsi :
« Dans le cas improbable où la partie de Segwit2x concernant l’augmentation de la taille des blocs à 2 Mo ne serait pas activée, Bitcoin.com réorientera immédiatement toutes les ressources de l’entreprise pour soutenir exclusivement Bitcoin Cash. »
Durant ses premiers mois d’existence, le prix du BCH fluctue entre 300 et 700 $, ce qui représente une fouchette allant de 5 à 18 % de la valeur du BTC. Ceci est très correct, étant donné qu’une grande partie des partisans de la mise à l’échelle par augmentation de la taille limite soutiennent alors SegWit2X.
L’algorithme de difficulté d’urgence (emergency difficulty algorithm) permet à la chaîne de survivre. Néanmoins, celui-ci est intrinsèquement faillible, et est exploité par les mineurs, qui arrivent à miner plus de blocs et qui accélèrent par là le programme d’émission monétaire. Ce problème est corrigé le 13 novembre par une mise à niveau mettant en place un algorithme d’ajustement plus efficace (cw-144
).
Avec l’abandon de SegWit2X en novembre 2017, Bitcoin Cash va se révéler être un pari gagnant et deviendra la principale destination des partisans de l’augmentation de la taille des blocs. Son apparition constitue ainsi le début de la résolution du débat sur la scalabilité, donnant aux deux camps ennemis l’opportunité d’implémenter leurs idées respectives. La nature de Bitcoin est en effet telle que tout désaccord peut être tranché de manière pacifique par une scission.
Pour écrire cet article, je me suis basé sur l’ouvrage The Blocksize War de Jonathan Bier, ainsi que sur l’Histoire incomplète de l’origine de Bitcoin Cash de Jonathan Toomim.