Vocabulaire : consensus

Dans les discussions concernant la technologie de la blockchain, on entend souvent parler de consensus. Par exemple on peut lire des choses comme « une blockchain est un registre distribué qui enregistre les transactions qui font consensus sur le réseau ». Mais qu'entend-on par “consensus” ici ?

Poignée de main digital (5 dans chaque)
Illustration classique mais trompeuse de la notion de consensus des blockchains.

Dans le langage courant, le mot consensus a une signification sociale et politique. Il s'agit de l'accord (au sens du choix, du consentement) du plus grand nombre (dans un sens très large, proche de l'unanimité) avec l'idée ou la décision qui fait consensus. On parle par exemple d'adopter une décision “au consensus” quand il n'y a pas de désaccord exprimé contre l'adoption.

Pour être bien clair, la notion d'accord ici correspond à “je suis d'accord, c'est ce que je veux, ça correspond à mes convictions” (consensus fort) ou à “je ne suis pas contre, ça me convient” (consensus mou).

En informatique, on appelle consensus le problème consistant pour un ensemble de machines de se mettre d'accord sur une valeur. Il n'est plus question ici de choix politique ni de consentement d'ordre “moral” dans une décision à prendre (la valeur à choisir) mais bien simplement que toutes les machines finissent par tomber d'accord sur une valeur, quelle que soit cette valeur[1]. On veut simplement qu'en un temps fini, l'ensemble des machines concernées aient décidé d'une même valeur. Techniquement l'une des machines pourrait servir de “dictateur” et le processus consisterait alors simplement à ce que la valeur décidée par cette machine soit transmise à toutes les autres[2].

Pour être bien clair, la notion d'accord ici correspond à “ok d'accord, j'ai compris, on fait comme ça”. On voit bien ici que la notion informatique est tout à fait distincte de celle du langage courant (on ne parlerait même pas de consensus mou ici).

Dans les blockchains, il y a essentiellement deux familles de méthodes utilisées pour atteindre le consensus.

Les blockchains à “preuve de travail” posent des contraintes a priori sur les valeurs de consensus possibles de sorte à ce que cela demande beaucoup de calculs aléatoires pour trouver une solution, i.e., un bloc valide. Dans ce cas, celui-ci est transféré aux autres participants qui vérifient si il respecte effectivement les contraintes, et si c'est le cas il est adopté et les contraintes sont mises à jour pour prendre en compte ce nouveau bloc (pour que tous les calculs soient forcés à recommencer de zéro en quelque sorte)[3].

Dans les blockchains à “preuve d'enjeu” le principe est que la prochaine valeur sera choisie par un participant choisi aléatoirement avec un tirage au sort qui donne un avantage proportionnellement lié à l'intérêt supposé du participant à ce que tout se passe bien et en confiance (sans triche) sur la blockchain, parce qu'il y a le plus gros enjeu (réel, i.e., financier) et depuis le plus longtemps.

On remarque que dans les deux cas, le fonctionnement de l'algorithme de consensus dépend directement du fait que la blockchain soit porteuse de valeur (au sens monétaire). Dans la preuve de travail parce qu'il faut une façon d'inciter aux dépenses énergétiques liées aux calculs aléatoires inutiles par ailleurs (ce qui est fait en accordant une récompense au participant qui a trouvé le bloc valide). Dans la preuve d'enjeu parce que pour qu'elle ait un sens il faut que l'enjeu dont il est question en soit effectivement un (perte financière si la blockchain n'est plus fiable) et que les participants aient intérêt à vouloir être sélectionnés et donc à conserver un enjeu réel sur la blockchain (même système de récompense).

Donc non seulement dans les deux cas il s'agit de sélectionner aléatoirement un “dictateur” pour ce tour-ci, mais en plus on sait que la décision qui sera prise par celui-ci et imposée à tous les participants sur le réseau n'aurait été choisie par absolument aucun autre, puisqu'elle inclut l'auto-attribution de la récompense. Dans le cas des blockchains, non seulement c'est de la notion informatique de consensus qu'il est question, mais en plus on ne pourrait pas être plus éloigné de la notion politique du langage courant : il s'agit en réalité d'une mise en concurrence généralisée.

Ce qu'on peut lire, voir, ou entendre concernant les blockchains laisse le plus souvent ambiguë la notion de consensus, et va parfois jusqu'à l'utiliser comme argument (dans de plus ou moins grandes envolées lyriques sur la démocratie, la décentralisation, et le consensus) comme si il s'agissait de la notion du langage courant. Bon, il faut reconnaître que ça ne semble pas toujours être fait de mauvaise foi mais bien souvent par pure incompréhension du sujet… ce qui n'est pas vraiment mieux. Mais bref, il me semblait important de clarifier ce que veut dire consensus quand on parle de blockchain.

Notes

  1. ^ Il y a quand même quelques contraintes : par exemple, la valeur doit avoir été proposée par au moins l'une des machines participantes, mais pas forcément par la majorité !
  2. ^ En fait on souhaite généralement que ces algorithmes soient distribués et tolérants aux pannes, donc on ne peut pas se contenter désigner une machine qui serait le “dictateur” pour toujours : ça ne fonctionne plus si celle-ci tombe en panne. Si en revanche on se place dans un système centralisé et pas distribué, où il existe une machine qui est supposée fonctionner tout le temps, il n'y a plus de “problème du consensus” et c'est bien comme ça que ça fonctionne.
  3. ^ Il se peut que deux solutions valides soient trouvées en même temps, dans ce cas les participants qui reçoivent les deux doivent choisir à partir de laquelle ils redémarrent leurs calculs : en théorie soit parce qu'ils ont un intérêt à l'une deux deux soit au hasard, en pratique la première qu'ils reçoivent pour se relancer dans la course au plus vite. Quoi qu'il en soit celle qui gagnera sera au final celle par dessus laquelle la prochaine solution sera trouvée, même si elle était minoritaire parmi les participants.

Facebook, 4 octobre 2021 : une panne politique

Le 4 octobre 2021, Facebook et toutes ses plateformes (dont Instagram et WhatsApp) ont disparus d'Internet pendant presque 7h. L'existence de cette panne et sa durée exceptionnellement longue sont la conséquence de décisions politiques.

De nombreux médias ont déjà expliqué la panne en détails et ce n'est donc pas l'objet de ce billet, mais il nous est tout de même nécessaire pour contextualiser notre propos de faire quelques rappels.

Un réseau est un ensemble de machines connectées entre elles, et qui, à l'intérieur de ce réseau, savent comment s'adresser les unes aux autres. Internet est, comme son nom l'indique, un réseau de réseaux. Il est pensé pour être résilient. Cette résilience passe par une architecture décentralisée : il n'y a pas d'entité centrale qui joue le chef d'orchestre pour décider de qui peut être sur le réseau, ni des chemins que peuvent prendre les données qui transitent dessus.

Les différents réseaux d'Internet parlent entre eux à l'aide du protocole BGP (border gateway protocol). Avec, chaque réseau annonce régulièrement à ses voisins les adresses des machines auxquelles il permet d'accéder, que ce soit en interne ou même via un autre réseau voisin qui lui a communiqué les adresses de ses machines à lui. Ainsi il y a (presque) toujours plusieurs chemins possibles entre deux machines, et si l'un est cassé on peut passer par un autre.

C'est suite à une annonce BGP erronée que Facebook a disparu d'Internet : ses réseaux voisins ne savaient plus comment s'adresser aux machines de Facebook, et ne pouvaient donc plus le permettre à leurs utilisateurices, ni à leurs propres réseaux voisins, et ainsi de suite.

La panne du 4 octobre 2021 est un symptôme du phénomène qu'on appelle la « contraction » d'Internet. C'est à dire une forme de « recentralisation ». On sait que comme les autres capitalistes de surveillance, Facebook cherche à enfermer ses utilisateurices dans son écosystème. Mais au-delà de ça, il semble que même les choix techniques de l'entreprise sont en partie guidés par cette idéologie de contrôle centralisé : le géant Facebook ne repose que sur un seul réseau !

Même en restant une plateforme centralisée, Facebook pourrait tout à fait reposer sur une architecture décentralisée telle qu'Internet est pensé. Elle serait alors composée d'un ensemble de réseaux (tous contrôlés par l'entreprise) reliés directement entre eux, et qui participent conjointement à Internet. Non seulement la panne du 4 octobre 2021 aurait vraisemblablement été cloisonnée à un seul de ces réseaux, mais elle aurait aussi pu être bien plus vite réparée : un autre réseau de Facebook qui fonctionne encore aurait pu faire les annonces BGP nécessaires à corriger l'erreur diffusée. Au lieu de ça, Facebook s'est retrouvé coupé du monde, sans aucun moyen immédiat de corriger son erreur.

Au-delà de son architecture interne, la contraction opérée par Facebook est telle que la panne, en plus des différentes plateformes du groupe, a impacté tout un tas de plateformes tierces qui dépendent de leurs services comme « se connecter avec Facebook » par exemple. Sans parler du surplus de trafic lié à la gestion des erreurs qui a pu provoquer des ralentissements du réseau.

Décidément, on n'insistera jamais assez sur l'importance de la décentralisation.

La vérité sur la blockchain

Depuis quelques années, la technologie de la blockchain est sujet à un tel buzz qu'elle est mise à toutes les sauces. Les projets utilisant cette technologie se multiplient sans que le choix de l'utiliser ne semble être justifié par la nature des projets en question. La raison à cela semble être le fruit d'un pur effet de mode (lui même assez directement lié à l'idéologie aveuglée du solutionnisme technologique) et des possibilités de financements qui en découlent.

En règle générale, le principe de ces projets est d'enregistrer des informations dans une blockchain en prétendant que cette technologie apporte une certaine forme de garantie. On voit par exemple régulièrement passer des projets qui consistent à mettre dans une blockchain des informations de traçabilité, des actes notariés, ou encore des diplômes, en promettant par ce biais des garanties de sécurité et de validité de ces informations tout en permettant une désintermédiation.

Il faut comprendre que l'intérêt d'une blockchain est de permettre l'établissement d'un consensus[1] distribué. C'est à dire permettre à un ensemble de systèmes autonomes de se mettre d'accord sur une donnée commune, 1- sans avoir besoin d'une autorité centrale, et 2- dans un contexte conflictuel (personne ne fait confiance à qui que ce soit). Quand on a pas ce besoin spécifique, l'utilisation d'une blockchain n'a aucun intérêt.

Cet éclaircissement fait, il est évident que bon nombre des projets autour des blockchains n'ont aucun sens. Déjà, tous ceux qui consistent à avoir une blockchain gérée par une autorité particulière, ou qui implémentent une forme de contrôle d'accès… Mais aussi tous ceux qui prétendent pouvoir rendre obsolète le recours à une autorité pourtant intrinsèquement nécessaire.

Prenons l'exemple des diplômes. Un diplôme universitaire est nécessairement délivré par un établissement d'enseignement supérieur habilité à le faire par un état (ou une autre institution, peu importe). Vouloir mettre des certifications de diplôme dans une blockchain n'a donc aucun sens car seul l'établissement qui a délivré le diplôme est réellement en mesure de certifier son authenticité. On a donc affaire à une autorité centrale indispensable à la certification du diplôme, quelle que soit la façon dont celui-ci existe, sur papier ou numériquement. Il n'y a donc pas besoin de blockchain, et c'est même contre-productif d'en utiliser une. Si certifier numériquement des diplômes est utile, alors c'est faisable de manière plus efficace et moins coûteuse sans blockchain (et on sait très bien faire ce genre de choses, c'est comme ça que fonctionnent les certificats TLS utilisés pour les connexions sécurisées en HTTPS sur le web par exemple).

Mais le souci avec ces projets autour de blockchains est en fait bien plus profond que ça. Ce que beaucoup de monde semble ne pas comprendre (ou ne pas vouloir comprendre) c'est qu'en règle générale, ce qui est écrit sur une blockchain n'a aucune valeur de vérité dans le monde réel, si ce n'est pas appliqué/imposé par une autorité tierce. Exactement de la même manière que le contenu d'un contrat écrit sur du papier n'a de valeur que tant que l'ensemble des parties restent d'accord avec, ou qu'il existe une autorité tierce qui a la capacité de contraindre les parties récalcitrantes à honorer le contrat.

La seule vérité qui est garantie par l'écriture d'une information sur une blockchain, c'est que l'information en question est écrite sur la blockchain en question.

Cela n'a donc d'intérêt que si c'est l'écriture elle même qui définit la vérité. C'est à dire qu'il s'agit d'une écriture performative. C'est le cas avec les cryptomonnaies, où le montant contenu dans un portefeuille[2] est calculé à partir des transactions écrites sur la blockchain, c'est à dire où la vérité (une vérité très locale qui n'a de sens que "dans" ladite blockchain) est définie par l'écriture.

Il ne faut pas confondre ce qu'on écrit parce qu'on a décidé (par ailleurs) que c'est vrai, et ce qui est vrai parce que c'est écrit.

En dehors des cryptomonnaies donc, je n'ai jusqu'à présent vu aucun autre exemple d'utilisation justifiée[3] de blockchain. Et pour cause : on vient de démontrer que dès que ce qui est écrit dans une blockchain concerne une chose qui est extérieure à cette blockchain, alors l'utilisation d'une blockchain n'apporte strictement aucune garantie de plus que l'écriture par exemple sur un morceau de papier quelconque. Et donc que la blockchain ne peut être un remplacement que du papier et du papier seulement (en moins pratique, moins efficace, plus coûteux, plus polluant, moins respectueux de la vie privée, etc.). Et donc que toutes les institutions et autorités qui existent autour pour donner un sens et une valeur au dit papier (que ce soit un acte notarié, un titre de propriété, un diplôme, etc.) sont toujours nécessaires. En utilisant une blockchain, on paye le coût de la décentralisation et de l'absence de confiance, mais sans rien décentraliser du tout, et sans éliminer aucun besoin de confiance.

Traductions / translations :

Notes

  1. ^ Il faudra que j'écrive un billet à propos de ce qu'on appelle « consensus » dans le cadre des blockchains car c'est une utilisation extrêmement trompeuse de ce mot. AJOUT (05/01/2022) : c'est fait ! Voir Vocabulaire : consensus.
  2. ^ Là aussi, cela mériterait des billets pour discuter les termes de « cryptomonnaie » et de « portefeuille » qui sont à mon avis particulièrement mal choisis. AJOUT (06/01/2022) : c'est en partie fait ! Voir Vocabulaire : portefeuille.
  3. ^ Cela ne veut pas dire que l'existence des cryptomonnaies est justifiée, mais simplement que le concept de cryptomonnaie tel qu'il existe nécessite effectivement une blockchain. Le sujet de savoir si l'existence des cryptomonnaies est une bonne chose n'est pas discuté ici (cela dit, ça ne l'est pas). Je suggère la lecture de The List of Tired Crypto Talking Points (en anglais) pour plus d'informations sur le sujet.

Le retour de p4bl0.net

Le site p4bl0.net hébergeait mon blog personnel de 2007 à 2010 environ (en fait, ce blog avait même commencé quelques années avant ça à une autre adresse avant que je fasse l'acquisition de ce nom de domaine). Depuis cette période il hébergeait une archive statique du blog (qui tournait avant ça sur un moteur fait maison), et il y a quelques années suite à une mauvaise manip de nettoyage j'ai écrasé une bonne partie du contenu. Bon, de toutes façons ça faisait déjà des années que je ne l'avais plus alimenté, et puis surtout, le site n'était plus tellement visité…

De 2010 à 2013 j'ai un peu écrit sur un autre blog (shebang). Mais depuis quelques temps il me prends régulièrement l'envie de dire certaines choses sans que je n'ai réellement d'espace approprié pour cela. Il m'est arrivé de temps à autres d'écrire dans la revue 2600, dans Alternative libertaire, ou bien sur un blog Mediapart, mais aucun de ces endroits ne sont vraiment « chez moi ». Et les threads Twitter et Mastodon ont un aspect trop éphémère pour que ce soit réellement motivant : les écrits sont très vite perdus dans les méandres de ces plateformes.

Et donc : voilà ! p4bl0.net renaît. Cette fois-ci en utilisant le moteur de blog Dotclear car je voulais quelque chose de libre, suffisemment avancé en terme de fonctionnalités mais qui reste simple, et surtout qui soit déjà fait et qui ne me prenne pas trop de temps à bidouiller. Bon sur ce dernier point c'est relativement un échec puisque j'ai passé plusieurs heures à la création d'un thème entièrement personnalisé ^^'… Mais j'ai fait ça bien : c'est responsive et mobile-first tout comme il faut ! Et j'utilise la famille de polices Luciole qui est spécialement conçue pour améliorer l'accessibilité.

Cette fois-ci le contenu sera a priori plus politique et moins geek, donc j'ai décidé d'appeler ce blog « Pavillon rouge et noir », en référence au Jolly Roger, parce que les pirates ♥, et aussi parce que le rouge et le noir sont mes couleurs politiques : celle du syndicalisme révolutionnaire et du communisme libertaire. Il se trouve aussi que les initiales « PRN » me parlent pas mal parce que c'est comme ça que j'appelle dans ma tête ma page perso dont l'adresse est pablo.rauzy.name.

Bref, bienvenue à bord !

page 12 de 12 |