Petit interlude technique au sein de la série d’articles à propos du hack de TheDAO.
Découvrez comment évoluent Bitcoin et tous les protocoles qui s’en inspirent, tel Ethereum.
Cet article a pour but d’expliquer quelques concepts clés : soft fork, hard fork, règles de consensus, majorité économique et d’exposer les enjeux qui y sont liés, tout en restant grand public !
En complément, à l’adresse de ceux qui aimeraient explorer le sujet plus en détail, je recommande la lecture de deux excellents articles de Aaron van Wirdum (en anglais) : “Why Some Changes to Bitcoin Require Consensus” et “Three Core Forks That Don’t Break With Consensus“.
Soft Fork, Hard Fork, Règles de Consensus et Majorité Economique.
Le protocole Ethereum, tout comme le protocole Bitcoin, permet à des milliers d’individus dans le monde de maintenir une comptabilité commune de leurs échanges. Comme vous le savez sans doute déjà on appelle cette comptabilité partagée une Blockchain. C’est le registre comptable qui sert de référence à toute la communauté et sur lequel chacun se base pour réaliser de nombreuses opérations : émission ou réception d’une transaction, calcul du solde d’un compte, certification de documents, déploiement de smart-contracts etc.
Bitcoin et Ethereum sont des protocoles de communication :
La gestion d’une Blockchain n’est pas magique. Pour que des milliers d’individus ne se connaissant pas et vivant aux quatre coins du monde arrivent à former un réseau et à maintenir de façon conjointe une comptabilité correcte et immuable de leurs échanges , il faut nécessairement que tous ces individus s’entendent à propos d’un set commun de règles à respecter. Spécifier cet ensemble de règles, c’est précisément le rôle des protocoles Bitcoin ou Ethereum. Voilà pourquoi, avant d’être une monnaie, un actif ou un bien numérique, un registre distribué, une Blockchain, fondamentalement Bitcoin et Ethereum sont des protocoles de communication ; open-source de surcroît !
Protocole de communication : dans les réseaux informatiques et les télécommunications, un protocole de communication est une spécification de plusieurs règles pour un type de communication particulier.
Dans la pratique, rejoindre le réseau Bitcoin ou Ethereum signifie télécharger un petit logiciel qui respecte le protocole Bitcoin ou Ethereum. On appelle ce logiciel un client Bitcoin / Ethereum[1]. Ce client permet de se synchroniser automatiquement et d’interagir[2] avec tous ceux qui utilisent un client compatible. C’est ainsi que les réseaux Bitcoin et Ethereum se forment et se développent. Ce sont des réseaux pair à pair.
Les règles de consensus :
Parmi toutes les règles spécifiées par le protocole Bitcoin ou Ethereum, certaines sont plus importantes que d’autres et les plus importantes de toutes s’appellent les règles de consensus ! C’est le plus petit dénominateur commun de règles que chaque participant doit impérativement respecter dans le but de rester en consensus (=synchronisé) avec les autres participants au réseau. En l’occurrence, si tous les participants au réseau n’appliquaient pas les mêmes règles de consensus, le réseau Bitcoin / Ethereum pourrait se retrouver divisé en plusieurs sous-réseaux incompatibles, ce qui serait fâcheux. Dans cette situation il serait possible que certaines transactions apparaissent comme valides aux yeux d’un groupe de participants mais pas aux yeux des autres. Plus généralement, ces petits réseaux en conflit seraient moins utiles que le grand réseau uni d’origine. C’est le fameux effet réseau ! D’où l’importance de conserver au maximum l’unité.
Pour autant, il est parfaitement possible de changer les règles de consensus. Les protocoles Bitcoin et Ethereum étant open-source n’importe qui peut en proposer une modification à tout moment, mais l’opération est délicate. Toute la difficulté consiste à faire accepter ces changements à une majorité voire idéalement à la totalité des participants au réseau. En effet, il ne s’agit pas de modifier le protocole Bitcoin / Ethereum tout seul dans son coin. Nous nous retrouverions simplement isolés et désynchronisés du reste du réseau… Non, pour qu’un changement des règles de consensus soit entériné, il faut qu’une large majorité des participants au réseau[3] acceptent de suivre les nouvelles règles proposées. C’est là que l’opération devient délicate; le réseau Bitcoin / Ethereum étant pair à pair, il n’y a pas d’entité centrale qui le dirige et personne n’est en mesure d’ordonner unilatéralement ce changement[4]. Par conséquent, pour imposer une modification des règles de consensus, il faut impérativement convaincre un maximum de participants au réseau du bien-fondé de cette modification. Sachant qu’au final, chacun est libre d’adopter les modifications proposées en mettant à jour son client Bitcoin / Ethereum, ou de refuser tout changement en ne le mettant pas à jour.
Pour résumer, les règles de consensus s’apparentent à un contrat social, explicitement consenti par l’ensemble des participants au réseau, qu’il n’est pas possible d’amender sans recueillir l’adhésion d’une large majorité de la communauté. Notons au passage combien cette architecture pair à pair et open-source fait honneur à la participation volontaire et à la libre coopération des individus. A l’image de Wikipédia, Bitcoin et Ethereum sont de très beaux exemples d’ordre spontané.
Dans la pratique, il existe deux façons de modifier les règles de consensus; la première est qualifiée de Soft Fork, et la seconde de Hard Fork. Voyons ça plus en détail.
Soft Fork :
Un soft fork c’est une modification des règles de consensus qui vise à rendre ces règles plus strictes.
La première conséquence, c’est qu’un bloc de transaction validé suivant ces nouvelles règles plus strictes restera toujours valide au regard des anciennes règles (moins strictes). Un « soft fork » c’est un changement rétro-compatible. De la sorte, si la majorité des participants qui mettent à jour la Blockchain, alias les mineurs, adoptent ces nouvelles règles, le « soft fork » passera et le réseau restera uni, malgré les divergences.
En effet, la majorité des blocs validés selon les nouvelles règles seront systématiquement considérés comme valides et relayés par l’ensemble du réseau, alors que la minorité des blocs validés suivant les anciennes règles seront rejetés par la majorité dès qu’ils entrent en conflit avec les nouvelles règles de consensus.
Pour résumer simplement, un soft fork c’est une modification des règles de consensus qui ne risque pas d’engendrer une division du réseau à propos de la comptabilité de référence. Tout le monde continuera à utiliser la même blockchain après un soft fork, même la minorité de participants qui respecte encore les anciennes règles de consensus.
Pour illustrer, une mise à jour qui viserait à inscrire dans le protocole Bitcoin/Ethereum une liste noire d’adresses à censurer prendrait la forme d’un « soft fork ». Cela correspond à l’ajout d’une nouvelle règle plus stricte. Bien sûr, encore faut-il qu’une large majorité des mineurs soit en faveur d’une telle mesure pour que ces nouvelles règles deviennent la norme (ce qui n’est pas évident du tout).
C’était l’idée derrière le soft fork d’Ethereum proposée en réponse au hack de TheDAO : black lister les adresses utilisées par le hacker.
Pour autant, cette option n’est plus sur la table, il a été découvert récemment que le réseau Ethereum ne pouvait pas être « soft forké » (contrairement au réseau Bitcoin) ! Je n’insiste pas davantage sur ce point, certains y voient un bug, d’autres une propriété unique et cruciale du protocole Ethereum. Je renvoie tous ceux que la question intéresse vers cet article de « Hacking, Distributed » (en anglais)
Hard Fork :
Un hard fork c’est une modification des règles de consensus qui a pour effet de rendre ces nouvelles règles incompatibles avec les précédentes.
L’avantage c’est qu’un hard fork permet de modifier absolument n’importe quel aspect du protocole. Sans contrainte de rétro-comptabilité, tout peut être changé. Un hard fork pourrait permettre d’annuler une transaction ou réécrire un smart-contract à posteriori. Plus généralement un hard fork permet de réécrire l’historique des transactions contenu dans la blockchain, permet de spécifier de nouvelles règles de gouvernance et pourquoi pas de définir de nouvelles règles d’émission des ethers ou des bitcoins.
L’inconvénient, c’est qu’en l’absence de consensus quasi-unanime de la part de tous les acteurs du réseau, (mineurs, plate-forme d’échange, développeurs, utilisateurs etc.) un hard fork a pour conséquence de diviser la communauté à propos de la comptabilité de référence. Dans cette situation, sur la base de l’ancienne blockchain le réseau se scinde en deux sous-groupes générant chacun une blockchain différente suivant des règles incompatibles… Cette situation est évidemment fâcheuse, comme nous l’avons vu, deux petits réseaux en conflit ne valent pas un grand réseau homogène. Surtout ce schisme pourrait entamer la confiance des participants, actuels ou potentiels, vis-à-vis de la pérennité du système et un réseau de confiance dans lequel plus personne n’aurait confiance ne vaudrait plus grand-chose…
C’est la raison pour laquelle un hard fork conflictuelle a peu de chance d’aboutir et de durer, tous les participants auraient à y perdre. Il faut garder à l’esprit que Bitcoin et Ethereum sont des réseaux qui permettent d’échanger et de stocker de la valeur; chaque participant y investit dessus de précieuses ressources et par la même occasion chacun est fortement incité à préserver la valeur de l’ensemble. C’est aussi en vertu de cette pression économique que tous les participants au réseau sont incités à s’unir derrière la version du protocole qui crée le plus de valeur. Aucun participant n’a d’intérêt à suivre éternellement une blockchain minoritaire sur laquelle les actifs enregistrés perdent de la valeur ou ne sont reconnus par personne.
Mise en oeuvre d’un fork :
Sauf incident technique[5], les hard forks et les soft forks, sont planifiés à l’avance. Les protocoles Bitcoin et Ethereum étant open-source n’importe qui peut en proposer une. Afin d’informer et de convaincre la communauté, les promoteurs d’un fork en font la publicité longtemps à l’avance, ils décrivent leurs motivations et les spécifications du changement[6], enfin il est courant de proposer une date de mise en œuvre[7] et un seuil d’adhésion minimal des mineurs en deçà duquel rien n’est entrepris. A la date convenue, si le seuil minimal d’adhésion est respecté, le changement s’opère automatiquement et le réseau poursuit son fonctionnement suivant les nouvelles règles. Sinon tout continue comme avant[8]. Dans tous les cas le déploiement ou le rejet d’un fork dépend toujours du soutien qu’il reçoit de la communauté.
Soft Forks
- Avec le protocole Bitcoin, un soft fork est plus facile à implémenter (qu’un hard fork) car il ne risque pas de diviser le réseau et il suffit juste qu’une majorité des mineurs l’adopte pour que les changements proposés deviennent effectifs. Le protocole Bitcoin a déjà été mis à jour plusieurs fois de la sorte avec succès (BIP 16, BIP 34, BIP 65).
- En revanche, pour des raisons techniques qui dépassent ce simple article, le protocole Ethereum ne permet pas les soft forks. (cf. cet article de Hacking Distributed pour ceux qui veulent en savoir davantage)
Hard Forks
- Les hard forks sont plus contraignants, tous les participants doivent nécessairement mettre à jour leur client et adhérer au fork, faute de quoi le réseau pourrait se retrouver divisé en deux.
Dans la pratique, les propositions de fork qui recueillent un large consensus sont normalement déployées sans encombre[9]. Ce sont le plus souvent des forks purement techniques, à savoir un changement des règles de consensus visant à corriger un bug ou à délivrer une amélioration indiscutable du protocole. Le hard fork Ethereum du 14 mars 2016 concrétisant le passage de Ethereum Frontier à Ethereum Homestead est un bon exemple de hard fork non conflictuel déployé de façon réussie.
En revanche les forks motivés par des raisons autant politiques que techniques, en particulier les hard forks qui pourraient diviser le réseau, sont généralement plus conflictuels, (cf. le rude débat sur la taille des blocs de Bitcoin). Un hard fork de ce type n’ayant jamais été pratiqué, les incidences qu’il pourrait avoir sont méconnues. Retenons simplement qu’en l’absence de consensus, il est certainement préférable de ne pas toucher aux règles de consensus…
La majorité économique comme règle de gouvernance
Même si le taux d’adhésion des mineurs sert souvent d’indicateur de référence pour mesurer le soutien de la communauté vis-à-vis d’un fork, ce n’est qu’une partie de la réalité. Il est crucial de comprendre qu’au final, le pouvoir de faire évoluer le protocole Bitcoin (ou Ethereum) appartient à l’ensemble des acteurs qui délivrent des services et apportent de la valeur au réseau. C’est la majorité économique qui gouverne Bitcoin.
Les mineurs ne peuvent pas imposer de modification du protocole contraire aux intérêts des autres participants sans en subir les conséquences. Les mineurs ne forment qu’une fraction de la majorité économique et s’ils décidaient d’adopter une modification du protocole, soft ou hard, qui déplaît aux autres créateurs de valeur (commerçants, plateforme d’échanges, développeurs, utilisateurs réguliers etc.) ils en viendraient inévitablement à se tirer une balle dans le pied. Toute l’activité des mineurs est rémunérée avec l’unité de compte du réseau (dénommée bitcoin ou ether selon le réseau), il est dans leur intérêt premier que cette unité de compte ait un maximum de valeur. Si à la suite d’un changement des règles de consensus la majorité des créateurs de valeur quittaient le réseau ou en choisissaient un autre, cela serait une très mauvaise nouvelle pour les mineurs. Voilà pourquoi les mineurs ont toujours intérêt à respecter l’opinion des autres créateurs de valeur. A défaut ils seraient les premiers à en payer les conséquences.
Conclusion :
– « Papa, pourquoi la blockchain de Bitcoin est-t-elle fiable ? »
– « Parce qu’une blockchain foireuse ne vaut rien, mon fils »
Dans le fond, Bitcoin (ou Ethereum) est une solution économique à un problème informatique et c’est en cela que le concept est révolutionnaire ! La “preuve de travail” sur laquelle repose ce système n’est rien d’autre qu’un ingénieux modèle économique visant à aligner les incitations financières des participants dans le but de garantir la cohérence et la sécurité des informations qui circulent sur le réseau.
Contrairement à l’opinion trop souvent présentée, cette architecture unique qui rend toute modification du protocole très difficile car économiquement risquée n’est pas un défaut. C’est toute la force et le génie du système. C’est la garantie que chaque modification des règles de consensus, alias le contrat social qui unit la communauté, sera méticuleusement étudiée et toujours soumise à l’approbation explicite de ses membres. Ce n’est pas un système figé, c’est un système qui préserve la stabilité du socle de règles sur lequel il repose. C’est un système qui conserve sa cohérence et offre de la visibilité sans pour autant se renfermer sur lui-même. C’est un système ouvert et méritocratique qui pousse en permanence vers les solutions qui maximisent la valeur de l’ensemble. Chacun est libre de rejoindre ou de quitter le réseau quand bon lui semble, à ce titre chaque créateur de richesse qui prend part au réseau est précieux. Plus précisément, ce sont ces créateurs de valeur qui ont le pouvoir de faire évoluer le système. Enfin, c’est une structure qui responsabilise ceux qui sont en charge de la gérer. Les mineurs qui maintiennent à jour et sécurisent la blockchain sont les premiers à subir les conséquences de leurs actes. A ce titre ils ont tout intérêt à ce que leurs décisions soient judicieuses : si tel est le cas, ils en seront les premiers bénéficiaires et sinon, personne ne viendra payer les pots cassés à leur place.
Comparez ce modèle à tous ceux qu’on connait… Intéressant non ?
Commentaires