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. (Selon la façon dont est programmé le contrat, on pourra parfois écrire une autre valeur dans la même variable, mais l’historique du contrat gardera éternellement l’ancienne valeur ; cette traçabilité est cruciale pour certaines applications.)

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 (voir à ce sujet l’excellent article de Buterin sur le caractère final ou non des transactions). 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 (par exemple, un nom de domaine enregistré dans Namecoin est plus difficile à censurer qu’un nom stocké chez un registre qui peut recevoir un ordre de censure, comme c’est arrivé à Sci-Hub.)

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). C’est le pouvoir de l’algorithme (et, non, je ne vais pas citer la fameuse phrase de Lawrence Lessig que tout le monde cite tout le temps, hors de son contexte, et sans avoir compris ce que Lessig voulait dire).

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.)

(À noter que cette scission, contrairement à ce qu’ont prétendu pas mal de médias, n’a rien à voir avec l’attaque « des 51 % ». Tout le monde peut faire une scission, même avec bien moins de 51 %. La scission d’Ethereum était publique, tout le monde savait qu’il devait choisir son camp, contrairement à l’attaque des 51 %, où l’attaquant essaie de faire croire que tout est normal, que rien n’a changé.)

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é.

Bref, pour citer Antony Lewis, « immutability is relative ». Ou, pour reprendre un thème d’Emmanuelle Bermès dans son article à JRES 2007, 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.

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.

Cette non-immuabilité est-elle une bonne ou une mauvaise chose ? Bien sûr, l’idée de départ, d’avoir un livre des opérations stable, publiquement vérifiable, et qui ne puisse pas être modifié arbitrairement par une organisation centrale à qui on n’a aucune raison de faire confiance, semble une bonne idée. C’est le but même de la chaîne de blocs. 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.  Si quelqu’un glisse une image de Tintin dans la chaîne de blocs (en ignorant pour l’instant la limite de taille des données avec certaines chaînes, et le coût que cela aurait dans les autres chaînes), la Société Moulinsart aura bien du mal à la supprimer. Il y a en effet des milliers, voire des dizaines de milliers de copie de cette image dans les nœuds qui font tourner la chaîne de blocs, et peu de chances de convaincre tous leurs gestionnaires de contribuer à cette censure. Dans ce cas précis, ce n’est pas bien grave : personne de raisonnable ne va défendre ces abuseurs du droit d’auteur.

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 (Antony Lewis prend l’exemple d’un message électronique envoyé à des centaines de destinataires, dont chacun a gardé une copie.)

Qu’on en soit heureux ou pas, la chaîne de blocs n’est pas immuable. 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é.

Commentaires

Commentaires

  1. La fin de l'idéal trustless | Internet news
    14 septembre 2016 - 14h34

    […] de la chaîne de bloc, mise en avant par ses partisans comme par ses détracteurs, est une fable, explique-t-il sur Ethereum-France. Reste que si les données et les règles peuvent être changées, ce n’est pas discrètement. « […]

    Répondre
  2. Gérard Dréan
    17 septembre 2016 - 10h56

    Ce qui crée la confusion, c’est parler de LA chaîne de blocs en oubliant qu’il en existe des milliers d’exemplaires construits indépendamment, et pas toujours nécessairement identiques.
    Pour une description détaillée, voir ces deux articles:
    https://www.contrepoints.org/…/265146-blockchain…
    https://www.contrepoints.org/…/265300-blockchain…

    Répondre
      Stéphane Bortzmeyer
      17 septembre 2016 - 11h04

      Merci, mais je sais qu’il existe plusieurs chaînes de blocs 🙂 D’ailleurs, l’article cite explicitement Bitcoin et Ethereum, ce qui fait au moins deux 🙂 Cette multiplicité ne change rien à mon article car il était soigneusement écrit pour être indépendant d’une chaîne particulière. Cette discussion sur l’immuabilité me parait bien indépendante de la chaîne considérée.

      PS : vos deux URL arrivent à la page d’accueil du site, et pas aux articles considérés.

      Répondre
    farah
    19 juillet 2017 - 14h45

    Bonjour,
    Je suis tout à fait novice en la matière mais le sujet m’intéresse beaucoup, surtout les possibilités qui s’ouvrent pour les entreprises (assurance notamment). Je m’interroge sur le cas particulier de the DAO. Cette partie sur la co-existence de plusieurs version d’une même chaine n’est pas très claire pour moi. J’ai bien compris que la version d’Ether d’aujourd’hui a permis de rembourser les participants de the DAO suite au vote pour faire un fork. Mais qu’en est-il des utilisateurs de Ether classic? ils utilisent une version qui enregistre toujours cette malversation; mais dans cette version où les fonds sont-ils, remboursés quand même?
    Merci d’avance.

    Répondre
    Stéphane Bortzmeyer
    26 juillet 2017 - 16h40

    @Farah Ethereum Classic est géré par des gens qu’on peut appeler « principiels ». Ils estimaient qu’il fallait s’en tenir aux principes : le code du contrat fait loi. S’il y a une bogue, tant pis. (The DAO était une bogue dans le contrat, pas dans Ethereum.) Donc, sur Ethereum Classic, le voleur a toujours son argent, et peut le dépenser (si quelqu’un en veut).

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *