Excellent article sur la prétendue immuabilité de la blockchain.
De nombreux articles sur la chaîne de blocs ont prétendu qu’une de ses particularités était son immuabilité : ce qui est écrit est écrit, pour toujours. Contrairement aux processus humains, peu fiables et qu’on peut toujours soupçonner de changer les faits a posteriori, ou de changer les règles en cours de route, la chaîne de blocs, incorruptible, immuable et impavide, étanche aux passions et aux préjugés des singes intelligents, la chaîne de blocs, elle, ne change jamais ce qui a été marqué.
Il est amusant de noter que cette immuabilité est mise en avant aussi bien par les partisans de la chaîne de blocs que par ses adversaires. Les premiers font remarquer que l’immuabilité met la chaîne de blocs à l’abri de l’arbitraire humain, et garantit le respect des règles. Les seconds protestent qu’ils ne veulent pas céder le contrôle à un programme, et que l’immuabilité va créer des tas de problèmes, si on ne peut jamais corriger une erreur ou une attaque.
Mais les deux ont tort : la chaîne de blocs n’est pas immuable, ne l’a jamais été et ne pourra pas l’être.
D’abord, de quelle immuabilité parle-t-on ? J’en vois au moins deux, l’immuabilité des données et celles des règles.
La première garantit que ce qu’on a écrit dans la chaîne ne sera jamais effacé. Si j’envoie 0,001 bitcoin à la Quadrature du Net, cette transaction est écrite et, si je la regrette, tant pis, je ne pourrais pas l’effacer. Si je mets une valeur dans les données d’un contrat Ethereum, cette valeur sera là pour toujours. [...]
Il n’est pas étonnant que cette propriété soit appréciée : les applications monétaires ont évidemment envie qu’on ne puisse pas faire disparaître un paiement après avoir reçu livraison de sa commande [...] Et les historiens rappelleront que ce sont en général les régimes les moins attirants qui réécrivent l’histoire. Lutter contre la censure par l’immuabilité des données est un objectif important de la chaîne de blocs [...]
Et il y a la seconde immuabilité, celle des règles, celles dont on ne veut pas qu’elles changent après le début de la partie. C’est cette immuabilité qui fait que la diminution de la récompense des mineurs Bitcoin est divisée par deux de temps en temps : c’était marqué dans le code dès le début, et cela ne peut pas être changé. Dans le monde Ethereum, c’est l’immuabilité d’un contrat : une fois qu’il est installé dans la chaîne, on ne peut pas le changer, même si on y trouve une bogue (on peut installer une nouvelle version du contrat, mais l’ancien restera et sera toujours actif). [...]
Donc, données et règles sont immuables ? Eh bien non. Il y a déjà eu des changements. Je ne trouve pas beaucoup de cas où les données ont été changées. Comme les transactions suivantes sur la chaîne de blocs utilisent ces données, changer le passé nécessite de revenir en arrière, et de redérouler une nouvelle suite de transactions à partir du bloc modifié (comme dans les livres de science-fiction où on voyage dans le temps, on change une chose, et l’histoire est différente à partir de ce point). C’est une opération très lourde (mais qui a déjà eu lieu).
En revanche, des changements des règles sont plus faciles. Le plus fameux est évidemment la scission (fork) d’Ethereum en juillet 2016. Un contrat, nommé The DAO, avait plusieurs failles de sécurité qui avaient permis à un voleur de s’approprier une grande partie des fonds stockés dans ce contrat. Après une longue et vigoureuse discussion (où les arguments malhonnêtes n’avaient pas manqué), la chaîne s’est séparée en deux le 20 juillet 2016. Une partie des nœuds Ethereum suivait le code inchangé (règles immuables), une autre partie avait installé un logiciel modifié, où une nouvelle règle empêchait le voleur de récupérer sa mise, et permettait de rembourser les participants à The DAO.
Les deux chaînes continuent aujourd’hui, celle aux règles inchangées (désormais nommée Ethereum Classic) et celle avec les nouvelles règles (Ethereum tout court). La second semble rassembler davantage d’acteurs du monde Ethereum (on pourrait donc parler de « chaîne historique » vs. « chaîne habituelle »).
Mais, si la chaîne de blocs est immuable, comme le prétendent aussi bien ses partisans que ses adversaires, comment est-ce qu’un tel changement des règles a-t-il été possible ? C’est simplement parce que la chaîne de blocs n’est pas une entité virtuelle : ses programmes sont exécutés par des ordinateurs physiques, gérés par des humains. Ceux-ci peuvent changer les processeurs, changer le programme, installer une nouvelle version, etc.
Techniquement, la scission d’Ethereum était exactement cela : certains gestionnaires de nœuds Ethereum ont décidé d’installer une version modifiée du logiciel (plus exactement, ont installé une version ayant les deux jeux de règles, et ont utilisé une certaine option de configuration du logiciel). À tout moment, on peut faire une scission : ceux qui sont mécontents du système existant en installent un autre. Et voilà, les règles ont changé, montrant que l’immuabilité des règles n’a rien d’absolu. (Des cas identiques se sont produits avec Bitcoin mais, à chaque fois, personne n’est resté sur les anciennes règles, il y avait unanimité en faveur du changement, en partie parce qu’il s’agissait de corriger une bogue, pas de changer ses conséquences financières.)
[...]
Pour un changement des données (et pas seulement des règles), on peut citer la bogue Bitcoin de 2010, où un attaquant a pu créer 186 milliards de bitcoins pour lui. Il a fallu revenir en arrière, réécrivant une journée de transactions, dont beaucoup étaient pourtant légitimes.
Alors, est-ce que cela veut dire que la chaîne de blocs n’offre aucune sécurité, que tout peut changer arbitrairement à n’importe quel moment ? Et que la chaîne de blocs n’offre donc rien de plus que les systèmes centralisés traditionnels ?
Non, heureusement, ce n’est pas vrai. D’abord, les données et les règles peuvent être changées, mais pas discrètement : tout reste public, et les utilisateurs savent ce qui s’est passé (par exemple, avec Namecoin, tout le monde peut voir qu’un changement de titulaire d’un nom a été fait, cela ne peut pas être effectué subrepticement). Ensuite, la scission, pour être efficace, doit être acceptée par un grand nombre des acteurs. Pour Ethereum, pour que la nouvelle chaîne avec les nouvelles règles ne meure pas immédiatement, il fallait que les mineurs, les explorateurs publics, les places de marché, suivent la nouvelle chaîne. Si un mineur isolé décide tout seul d’installer un nouveau logiciel, qui suit des règles différentes, sans expliquer pourquoi, sa chaîne ne sera suivie que par lui. (De la même façon qu’on peut se proclamer pape à la place de François, sans, de nos jours, trop d’ennuis juridiques, mais qu’on ne risque pas d’avoir beaucoup de fidèles.)
Un changement des règles est donc possible, mais difficile. On le voit d’ailleurs chez Bitcoin où, depuis plus d’un an, une discussion pénible sur l’éventuelle augmentation de la taille des blocs persiste, sans qu’une majorité claire se dessine. Personne n’ose donc faire une scission, où il risquerait d’être seul, ou accompagné seulement d’une petite minorité.
[...] l’immuabilité (comme la permanence des identificateurs dans son article) ne peut pas être assurée par un processus technique, si parfait qu’il soit. Elle dépend de processus humains et est donc faillible et changeante comme eux. Comme le dit Tim Berners-Lee à propos des URI « URIs don’t change: people change them ». Proclamer (comme le fait le site Web de la fondation Ethereum) qu’Ethereum est « unstoppable » est simplement faux.
Comme dire qu'Internet est inarrêtable… Ça me rappelle mes cours (de vulgarisation, hein) de droit dans lesquels on nous avait expliqué que tout ce que la volonté humaine fait, elle peut le défaire, ce qui est le fondement de ce que nous sommes. Il me semble que c'est en droit des contrats.
Mais proclamer, comme le font les plus zélés défenseurs d’Ethereum Classic, que l’introduction des nouvelles règles viole un principe sacré est exagéré. Lors des débats avant la scission, les adversaires des nouvelles règles disaient qu’une décision en faveur de nouvelles règles ébranlerait Ethereum car elle montrerait aux utilisateurs potentiels que les règles ne sont pas immuables. Mais la seule discussion, même si une autre décision avait été prise, aurait suffit ! À partir du moment où on discute de la possibilité de nouvelles règles, c’est bien que c’est possible. Le nier ne va pas augmenter la confiance.
[...] Mais il est facile de trouver des cas philosophiquement ennuyeux pour l’immuabilité. Dans le cas de l’immuabilité des règles, une bogue dans la chaîne elle-même est un bon exemple : les logiciels ont toujours des bogues, et il faut pouvoir les corriger.
Pour le cas de l’immuabilité des données (pour lesquelles les nœuds ont des bonnes motivations pour en garder les copies), un exemple est le problème du droit à l’oubli. Essayer de détruire un contenu diffusé ne va pas être facile. Bien sûr, c’est volontaire : un des buts de la chaîne de blocs est de rendre la censure plus difficile. [...] Mais si on pense à des calomnies, des accusations fausses, des insultes, mises dans la chaîne de blocs et qu’il est difficile de supprimer, c’est plus gênant. Ceci dit, ce n’est pas un problème nouveau : supprimer un contenu largement recopié sur l’Internet a toujours été difficile [...]
[...] Certaines choses sont difficiles à changer (ce qui est en général une bonne chose, pour préserver la stabilité), mais tout peut être changé.
En gros, on peut réécrire l'histoire (dans le cas des données) ou changer le futur (dans le cas des règles) mais il faut être collectivement d'accord, à travers les différences culturelles, les différences de mentalité, malgré les objectifs différents poursuivis par chacun-e, etc. En gros, la diversité humaine est le garant de la stabilité. C'est là la différence avec les systèmes centralisés dans lesquels une minorité d'acteurs peut changer seule les règles qui s'appliquent à un ensemble plus ou moins grand de personnes.
Dans cet autre article, https://blog.ethereum.org/2016/05/09/on-settlement-finality/ , il est très bien expliqué que l'immuabilité, que le fait qu'une action soit définitive est toujours probabiliste : un registre papier peut brûler, les personnes qui y ont accès peuvent le modifier d'une manière qui les arrange, une décision de justice annule un vol après coup, etc, etc. Dans chacune de nos actions communes (genre la banque), on estime que la probabilité qu'un événement qui nous est défavorable se produise est faible donc nous ignorons les mauvais côtés des organismes centralisés & co.