092015–2017
La Blocksize War : qui peut changer les règles de Bitcoin ?
Le conflit ne commença pas avec des héros et des méchants, mais avec des blocs pleins. Il s’acheva par plusieurs chaînes et une réponse pratique : ni le hashpower, ni les entreprises, ni les développeurs ne déterminent seuls ce qu’un nœud doit accepter.
Un mégaoctet ressemblait à un paramètre technique que des ordinateurs plus rapides et un benchmark sérieux pouvaient régler. En 2015, il était devenu un conflit sur la forme future de la monnaie et sur les personnes autorisées à dire ce qu’était Bitcoin. Gavin Andresen et Mike Hearn défendaient des blocs beaucoup plus grands. Des développeurs comme Pieter Wuille et Gregory Maxwell avertissaient du prix que paieraient les opérateurs de nœuds. Mineurs, plateformes, investisseurs et utilisateurs anonymes ajoutaient leur propre pression. La Blocksize War ne fut ni une seule dispute ni le duel de deux camps. Ce fut une série de propositions, d’ultimatums, de conférences, de versions logicielles et de dates butoirs qui dura deux ans, pendant lesquels chaque groupe apprit la différence entre ce qu’il pouvait influencer et ce qu’il pouvait imposer.
Des blocs pleins et deux craintes différentes
Avec l’augmentation de l’usage, les blocs approchaient de la limite et les frais montaient. Les partisans de blocs plus grands avertissaient que les transactions coûteuses chasseraient les paiements ordinaires et feraient de Bitcoin un réseau réservé aux riches. Les tenants d’une démarche plus prudente craignaient qu’une croissance rapide des données et des exigences ne rende plus difficile l’exploitation d’un logiciel Full Node à domicile et ne concentre la validation dans des centres de données.
Les deux camps parlaient de décentralisation, mais ne la mesuraient pas de la même manière. L’un comptait les personnes capables de payer une transaction ; l’autre celles capables de vérifier indépendamment les règles. Bitcoin XT, Classic puis Unlimited promettaient une augmentation directe. Le développement autour de SegWit cherchait à modifier le format des transactions et à utiliser l’espace plus efficacement.
La limite d’un mégaoctet n’était ni une loi naturelle ni l’objectif originel de Bitcoin. Satoshi l’avait introduite pour protéger le jeune réseau de blocs excessivement grands. Le conflit ne portait donc pas sur la possibilité de changer une constante sacrée, mais sur la vitesse à laquelle la capacité pouvait croître sans réserver la validation aux personnes disposant des connexions les plus rapides, des plus grands disques et de la plus grande patience lors de la synchronisation initiale. Même un petit changement technique portait une vision à long terme de ceux qui pourraient encore dire : j’ai vérifié les règles moi-même.
Le BIP101 d’Andresen proposait un saut à huit mégaoctets, puis une croissance prévisible de la limite. Hearn l’intégra au client Bitcoin XT et tous deux demandèrent publiquement aux mineurs et aux utilisateurs de soutenir le changement. Pour eux, une file pleine de transactions trahissait la promesse initiale d’un argent électronique bon marché. Si un nouvel utilisateur devait payer des frais élevés pour un petit paiement, le réseau perdrait selon eux face aux cartes avant même d’entrer dans la vie quotidienne.
En face ne se trouvaient pas des gens voulant maintenir Bitcoin petit. Pieter Wuille proposa Segregated Witness ; Gregory Maxwell et d’autres développeurs parlaient de secondes couches et d’un meilleur usage de chaque octet. Leur crainte regardait plusieurs étapes plus loin : un bloc plus grand aujourd’hui signifie davantage de bande passante, de stockage et de validation pour toujours. Lorsque le nœud domestique cesse d’être pratique, l’utilisateur commence à faire confiance au serveur d’autrui. Les deux camps défendaient l’accessibilité ; chacun la voyait d’un côté différent de la transaction.
L’accord de New York
En mai 2017, un groupe de grandes entreprises et de mineurs annonça le New York Agreement. Le plan SegWit2x associait une activation rapide de SegWit à un Hard Fork ultérieur portant le bloc de base à deux mégaoctets. Les signataires revendiquaient une grande part du hashpower et du volume des transactions, et s’exprimaient comme si la coordination des principales entreprises pouvait mettre fin au conflit.
L’accord ne liait toutefois pas les utilisateurs exécutant un autre logiciel. Ses critiques rejetaient surtout l’idée qu’une réunion fermée puisse promettre, au nom du réseau, un changement incompatible. Les mineurs peuvent proposer des blocs et les entreprises leur donner une marque ; un nœud peut toujours les déclarer invalides.
L’annonce initiale parlait de 58 entreprises dans 22 pays et de 83,28 pour cent du hashpower. Ces chiffres avaient du poids, mais ne mesuraient ni l’accord des nœuds indépendants, ni celui des personnes détenant du bitcoin hors des services signataires. L’association de SegWit et d’un hard fork ultérieur créait aussi un échange politique : chaque camp devait obtenir une partie de ce qu’il voulait. Une fois la première partie activée et la seconde toujours contestée, il apparut que le paquet ne possédait aucune institution capable d’en imposer l’achèvement.
Barry Silbert, fondateur de Digital Currency Group, organisa l’accord pendant la conférence Consensus à New York. Des représentants de plateformes, de portefeuilles, de sociétés de paiement et d’entreprises de minage étaient à la table ; Jeff Garzik dirigeait l’implémentation de SegWit2x. Aux yeux d’acteurs économiques épuisés par un long conflit, cela ressemblait à un compromis adulte : des personnes influentes s’étaient enfin entendues sur une date et avaient signé au nom de leurs entreprises. Mais Bitcoin ne possédait aucun registre de membres où ces signatures auraient constitué une majorité qualifiée.
Les critiques réagissaient non seulement aux deux mégaoctets, mais aussi à la méthode de décision. Adam Back, Gregory Maxwell et d’autres avertissaient qu’un changement incompatible décidé à court terme plaçait les utilisateurs devant le fait accompli. Les signataires contrôlaient des services fréquentés par beaucoup de personnes et les mineurs pouvaient fournir la majorité du hashpower. Ils ne pouvaient cependant pas modifier à distance les règles de validation d’un nœud installé dans l’appartement d’un inconnu. L’accord créait donc une situation étrange : les plus grandes entreprises pouvaient annoncer ce qu’elles appelleraient Bitcoin, mais chaque propriétaire de nœud conservait son bouton de refus.
UASF, BIP91 et la chaîne qui ne se divisa pas
Le BIP148 proposait un user-activated soft fork : à partir du 1er août, les nœuds participants devaient refuser les blocs qui ne signalaient pas SegWit. Cette pression était risquée. Si une partie économiquement importante du réseau restait ailleurs, des historiques concurrents ou des réorganisations chaotiques pouvaient apparaître.
Avant le jour décisif, les mineurs commencèrent toutefois à signaler, par le BIP91, des conditions menant au verrouillage de SegWit. On ne peut honnêtement attribuer le résultat à un seul acteur : la menace de l’UASF modifia les incitations, les mineurs coordonnèrent leur signalisation et les nœuds existants appliquèrent les règles d’un Soft Fork compatible. SegWit fut activé le 24 août 2017.
Les nœuds exécutant le BIP148 ne pouvaient ni miner eux-mêmes SegWit, ni obliger les autres à l’utiliser. Ils pouvaient seulement promettre à l’avance qu’après l’échéance ils n’accepteraient plus une certaine catégorie de blocs. La force de cette promesse dépendait de son adoption par les plateformes, commerçants, portefeuilles et détenteurs dont les pièces donnaient un sens économique à la chaîne. L’UASF fonctionnait ainsi comme un engagement public dans un jeu de coordination : son effet venait non d’un ordre, mais de la possibilité crédible qu’une chaîne récalcitrante dispose de hashpower tout en attirant moins d’acheteurs.
Un développeur utilisant le pseudonyme Shaolinfry publia le BIP148. Des gens commencèrent à porter des casquettes marquées UASF et appelèrent le 1er août jour de l’indépendance. Derrière les mèmes se trouvait pourtant un pari sérieux. Si les mineurs avaient continué sans signaler et qu’une part importante de l’économie avait suivi le BIP148, les historiques auraient pu se séparer temporairement et les utilisateurs ignorer quel paiement reçu resterait valide. L’activiste exploitant un nœud ne risquait donc pas qu’un slogan ; il risquait sa propre capacité à recevoir de l’argent en sécurité.
Le BIP91 de James Hilliard fournit une voie permettant aux mineurs de se coordonner avant l’échéance et de verrouiller la signalisation de SegWit avec un seuil plus bas. Lorsque le soutien monta soudainement, chaque camp interpréta le résultat à sa manière. Les partisans de l’UASF y virent la preuve que la pression des utilisateurs avait changé les incitations. Les mineurs invoquèrent leur propre coordination et les signataires du New York Agreement leur compromis. L’histoire ne fournit aucune expérience témoin où l’on retirerait un groupe. Il est certain que le conflit imminent força chacun à agir plus tôt.
Bitcoin Cash partit, SegWit2x recula
Le 1er août, Bitcoin Cash se sépara avec des blocs plus grands et ses propres règles. Ce n’était pas une réécriture des anciens nœuds, mais une nouvelle chaîne incompatible partageant l’historique jusqu’au point de séparation. Le marché et les utilisateurs pouvaient ensuite évaluer et exploiter séparément les deux actifs.
La deuxième partie du New York Agreement devait activer en novembre un hard fork vers deux mégaoctets. Ses organisateurs le suspendirent le 8 novembre, reconnaissant ne pas avoir obtenu un consensus suffisant pour une mise à niveau propre. Une signalisation élevée du hashpower n’était pas devenue la certitude que l’économie accepterait les nouveaux blocs comme Bitcoin.
Au moment de la séparation, les deux chaînes partageaient l’historique antérieur et le même ensemble de pièces non dépensées. La personne qui contrôlait les clés avant la scission pouvait ensuite, sous certaines conditions, utiliser les actifs correspondants des deux côtés. À partir de là, chaque chaîne acceptait cependant des blocs futurs différents et bâtissait son propre effet de réseau. La scission ne força pas les anciens nœuds à changer leur définition d’une transaction valide ; elle permit aux défenseurs de règles différentes de supporter le coût et le résultat de leur choix.
Bitcoin Cash offrit aux partisans de blocs plus grands quelque chose qu’un débat infini ne pouvait donner : une chaîne fonctionnant selon leurs règles. Les plateformes durent lui attribuer un ticker, les portefeuilles gérer la protection contre la répétition des transactions et les détenteurs choisir s’ils vendaient, conservaient ou ignoraient les nouvelles pièces. Une partie du conflit passa des listes de diffusion au marché. Le prix, le hashpower et l’usage des deux chaînes commencèrent à exprimer une décision continue, plutôt qu’un vote unique en faveur d’un seul vainqueur.
SegWit2x devait être différent. Ses partisans voulaient que la chaîne à deux mégaoctets hérite de la marque BTC et devienne la continuation, pas une branche secondaire. À l’approche de novembre, elle manquait d’un large soutien dans les logiciels clients et d’un plan clair pour gérer deux chaînes en sécurité. Le 8 novembre, Mike Belshe, Wences Casares, Jihan Wu, Jeff Garzik, Peter Smith et Erik Voorhees annoncèrent le report. Ils reconnurent qu’en continuant sans accord plus large, ils diviseraient la communauté qu’ils voulaient unir.
Le pouvoir est réparti, pas absent
On présente souvent la guerre comme une victoire pure des utilisateurs. La conclusion exacte est plus complexe. Les développeurs contrôlent l’attention et la qualité du code, les mineurs l’ordre des blocs, les entreprises la liquidité et la marque, les utilisateurs le choix des logiciels et des contreparties. Aucun groupe ne possède seul tous les leviers ; certains en ont néanmoins beaucoup plus que d’autres.
Bitcoin ne vota pas alors avec un chiffre unique. Il se coordonna par le code, les arguments publics, les décisions commerciales, les dates et la volonté de risquer une séparation. Le résultat ne fut ni silencieux ni bon marché. C’est là son importance : les règles restèrent les mêmes non parce que le conflit n’existait pas, mais parce qu’il ne suffisait pas, pour les changer, de convaincre la pièce la plus visible.
Le consensus de Nakamoto décide de l’ordre des transactions à l’intérieur de règles acceptées en commun ; ce n’est pas un parlement où le hashpower vote pour réécrire les règles elles-mêmes. Un mineur peut produire un bloc portant une quantité immense de travail, mais un nœud le jette s’il viole son logiciel. Le choix des règles se produit donc hors de la blockchain : dans le code, les versions des clients, les prix, les contrats et les personnes avec lesquelles chacun accepte de commercer. La Blocksize War ne découvrit pas une constitution simple de Bitcoin. Elle révéla un système où le changement est possible, mais où personne n’a le droit garanti de l’appeler consensus.
Des personnes de tous les camps payèrent un prix personnel. Mike Hearn quitta publiquement le projet en janvier 2016 et déclara l’expérience en échec. Gavin Andresen perdit son ancienne position dans Bitcoin Core. Les développeurs subirent des campagnes, les entreprises des boycotts et les individus des attaques transformant un désaccord technique en épreuve de caractère. Le récit victorieux a tendance à aplatir ces personnes en traîtres et héros. Il est plus exact d’admettre que beaucoup protégeaient des visions différentes du même objectif et employaient parfois une pression qu’ils considéraient comme une défense nécessaire.
Après la guerre, le mot consensus fut employé avec plus de prudence. Il ne désignait plus un simple nombre de signaux de mineurs, une liste d’entreprises ou l’accord des principaux développeurs. Il désignait une situation où assez d’acteurs jugent le changement plus sûr qu’une division et où les autres n’ont ni la volonté ni la force de maintenir des règles concurrentes. Ce n’est pas un système de vote élégant. C’est une négociation continue où la possibilité de partir donne du poids même aux personnes sans titre — sans jamais garantir que leur chaîne aura une valeur, des utilisateurs ou une sécurité.
Personnes et notions dans l’Atlas
Sources et limites du récit
- 01BIP 101 — Increase maximum block size
L’une des principales propositions formelles d’augmentation automatique de la limite.
- 02BIP 141 — Segregated Witness
La spécification technique de SegWit et du block weight.
- 03Digital Currency Group — Bitcoin Scaling Agreement at Consensus 2017
Le texte original du New York Agreement et la liste de ses signataires.
- 04SegWit2x Working Group — dépôt archivé
La documentation d’époque sur l’objectif et l’implémentation de SegWit2x.
- 05BIP 148 — Mandatory activation of SegWit deployment
La spécification et le calendrier de l’UASF.
- 06BIP 91 — Reduced threshold SegWit MASF
Le mécanisme de coordination des mineurs qui verrouilla la signalisation avant le 1er août.
- 07Bitcoin ABC — UAHF technical specification
La spécification d’époque de la séparation de Bitcoin Cash.
- 08SegWit2x mailing list — Onwards
L’annonce du 8 novembre 2017 selon laquelle le hard fork ne disposait pas d’un consensus suffisant.