lundi 5 septembre 2022

Critique : “Cryptomonnaies, NFT… La bulle éclate ?”

Mercredi 17 août l’émission « Le téléphone sonne » portait sur les « cryptomonnaies » et NFT. J’ai écouté l’émission et y ait réagit en direct sur Twitter. J’archive ici le fil de tweets qui en résultent. C’est bien sûr à lire en écoutant l’émission pour avoir le contexte des réactions.

  • Ça commence, je tweeterai ci-dessous si des choses qui sont dites dans l’émission me font réagir :). #TelSonne #blockchain

    Ça se passe ici : Cryptomonnaies, NFT… La bulle éclate ?

    Cryptomonnaies, NFT… La bulle éclate ?

  • Le coût en énergie d’une blockchain n’est pas seulement dû à la preuve de travail, il existe, même si c’est dans une moindre mesure, de toutes façons, parce qu’une blockchain n’existe jamais à la place d’une alternative, mais en plus. J’en parlais là : le coût d’une blockchain.

  • La transition d’ETH vers la preuve d’enjeu, si elle va permettre de consommer beaucoup moins (si ça arrive effectivement), c’est surtout parce que la preuve de travail consomme énormément.

  • Et de fait Bitcoin ne changera pas de méthode, c’est certains, c’est ancré dans son idéologie que ça se passe comme ça. Et à propos de ce que raconte Ludovic Desmedt, je vous invite à lire “The Politics of Bitcoin: Software as Right-Wing Extremism”.

  • “Un système anti-inflationniste” : c’est vrai seulement si on suppose que l’inflation est liée directement et uniquement à la création monétaire. Ce qui est tout simplement… complètement faux.

  • Ce qu’explique Desmedt est très juste également sur le rapport entre coût de l’énergie et récompense pour le minage. C’est pour ça que les frais de transaction sont voués à devenir extrêmement conséquents (alors que c’est un des arguments des défenseurs de cette technologie).

  • Dire que le Bitcoin n’est pas conçu pour la spéculation ça demande quand même quelques contorsions… en pratique c’est issu d’une idéologie libertarienne et est donc intimement lié à l’idée de “marché libre” qui sont censés être efficients, etc. Donc c’était 100% inévitable.

  • Parenthèse sur les marchés “efficients”, je recommande chaudement cette vidéo de Heu?reka :

    Les marchés financiers sont-ils efficients ? - Heu?reka

  • Boulet a raison de rappeler que Bitcoin n’est pas du tout anonyme. Son objectif n’est en aucun cas de protéger la vie privée des personnes.

  • Si on veut reproduire un système de transaction qui reproduise de l’argent liquide (anonymat pour les personnes, véritablement décentraliser, etc), on sait faire, mais certainement pas à base de blockchain : avec GNU Taler par exemple.

  • Boulet précise bien que Bitcoin n’est pas une monnaie et que si on veut s’en servir pour des vrais achats faut convertir en vrai monnaie. C’est à la limite une devise (± tout peut servir de devise, c’est pas une propriété intéressante), mais ce n’est pas un système monétaire…

  • Desmedt en remet une couche sur l’aspect purement spéculatif des « cryptomonnaies », en l’expliquant par plusieurs facteurs. Certaines épargnes qui ont augmentées suite aux confinements par exemple, ce qui explique l’artifice des taux atteint en 2021, intéressant !

  • Et maintenant que c’est plus coûteux d’emprunter, y a moins de quoi alimenter la spéculation, et comme les cryptoactifs sont rattachés à absolument rien et purement spéculatifs, nécessairement ça s’effondre.

  • Desmedt a aussi bien utilisé le mot “intermédiaire” pour parler des plateformes par lesquelles la quasi intégralité des échanges concernant les cryptoactifs se font.

  • Les blockchains ne permettent pas en pratique la moindre désintermédiation.

  • Boulet revient sur le fait que les cryptoactifs ne sont pas des monnaies. Pour lui ils ne permettent que la fonction “réserve de valeur” des 3 fonctions d’une monnaie (intermédiaire d’échange, réserve de valeur, et unité de compte). Franchement, vu la volatilité de ces choses je trouve que ça ne tient pas du tout la route. Comment se servir de réserve d’un jour à l’autre peut perdre 100% de sa valeur ? Il y a besoin de stabilité pour ça.

  • Boulet parle de « cryptomonnaies » qui créent de la valeur parce qu’il y a un produit derrière. Ça pour le coup ça ne tient pas la route. Il ne peut pas y avoir de produit derrière qui ne sont pas l’actif spéculatif qu’est cette « cryptomonnaie » elle-même. Cf la vérité sur la blockchain.

  • Desmedt parle de monnaie virtuel de banque centrale par opposition aux « cryptomonnaies » qu’il dit “complètement décentralisées”.

  • C’est faux que les « cryptomonnaies » sont décentralisés. Le réseaux sous-jacents est décentralisé, les transactions ne le sont pas !

  • Elles nécessitent un centre qui est distribué, mais qui reste un centre. Les euros numériques pourraient tout à fait disposer d’un système de transaction effectivement décentralisé (sans blockchain !), cf Taler News : Comment émettre une monnaie numérique de banque centrale ?.

  • Desmedt fait des raccourcis un peu dangereux. Oui c’est libertarien, oui ça veut échapper au contrôle de l’état, mais certainement pas à Big Brother, du moment que Big Brother est privé (non démocratiquement contrôlé) est agit selon les lois d’un marché libre…

  • Ils ont complètement esquivé la question de l’auditrice qui a dit qu’elle y pige rien alors que c’était ultra pertinent…

  • C’est dommage, Boulet conclu l’émission sur une énorme connerie : NON la technologie blockchain ne peut absolument pas servir à autre chose que des « cryptomonnaies », et l’exemple (typique) qu’il a pris de la traçabilité ne fonctionne pas du tout.

  • C’est vraiment une mécompréhension profonde de ce qu’est une blockchain. Je remets ça là : la vérité sur la blockchain.

  • Ça c’est un très bon point :

    • tweet de @z8po : « puis un système déflationniste (si tu peux pas émettre à l’infini et que y a destruction de monnaie par oubli) c’est pas mieux ».

  • Les bitcoins sont voués à disparaître petit à petit au fur et à mesure qu’ils sont perdus, ne serait-ce que parce qu’on perd la clef qui permet d’accéder au « portefeuille » (c’est un très mauvais terme) qui les contient…

  • Bon ben c’est déjà fini. Je vous laisse avec cette liste d’articles si vous voulez un peu plus de lecture : Blockchain, cryptomonnaie, NFT.

dimanche 24 juillet 2022

Lecture : “The Politics of Bitcoin”

J’ai récemment terminé de lire le livre de David Golumbia intitulé The Politics of Bitcoin: Software as Right-Wing Extremism. C’était une excellente lecture que je recommande fortement à toute personne souhaitant s’intéresser sérieusement aux blockchains. Il a d’ailleurs immédiatement rejoint la liste de mes recommandations de livres sur mon site web.

En six chapitres, l’auteur démontre parfaitement à quel point le sous-titre de son livre est justifié. Il commence par expliquer les liens entre une culture historiquement hégémonique sur les Internets, le cyber-libertarianisme, et certains idéaux politiques de droite et d’extrême droite. Il explique en quoi cette idéologie individualiste pousse depuis un certains temps à la volonté de création d’une monnaie alternative puis comment, en se mêlant à des théories complotistes (elles aussi portées par l’extrême droite) concernant notamment les banques centrales et renforcées par la crise économique de 2008, cela a aboutit à la création puis au succès (relatif) de Bitcoin.

Il démontre ensuite assez rigoureusement en quoi ces racines idéologiques et complotistes sont gravées dans Bitcoin et dans la technologie de la blockchain qui le sous-tend, et comment cela impact tout l’écosystème qui va autour, jusqu’à la forme que prennent les arguments des défenseurs de ces technologies — typiquement, le fait d’interpréter deux évènements pourtant contraires (par exemple le court du Bitcoin qui monte ou qui baisse) comme des indicateurs de l’inévitable succès à venir, même quand il y a des preuves du contraire.

Au passage l’auteur prend le temps de donner quelques explications techniques, sur Bitcoin lui même comme sur l’économie et la finance (l’inflation, le rôle des banques centrales, la nature de la monnaie, etc.) pour mieux démonter les théories conspirationnistes, et tout cela est systématiquement fait sources et citations à l’appui. En particulier, il explique très bien la différence entre une devise (“currency”) et une monnaie (“money”) et comment la confusion entre les deux est constamment utilisée par les défenseurs des « cryptomonnaies ». Une monnaie doit avoir trois fonctions : intermédiaire d’échange, réserve de valeur, et unité de compte ; et l’auteur montre sans difficulté que non seulement les crypto-actifs (terme qu’il faut préférer à celui de « cryptomonnaies ») ne peuvent remplir que la première de ces fonctions, mais qu’en vérité plus ou moins n’importe quoi peut remplir cette fonction…

De façon intéressante, l’auteur fait aussi remarquer que, si sur les plans économique et technique les blockchains n’ont aucune utilité et aucun avenir, sur le plan politique, elles servent de porte d’entrée et de porte-voix à des idées qui, avant l’arrivée de Bitcoin, étaient assez universellement perçues comme d’extrême droite et de droite libertarienne. Il expose ainsi comment les discours, et même le vocabulaire, issus de ces tendances politiques sont généralisés autour des blockchains. Par exemple, le fait que soit résumé à « liberté » ce qui est en fait « l’absence de régulation par une entité démocratique », ou encore qu’il soit question de « limiter le pouvoir » seulement quand il s’agit de celui du gouvernement.

Tout au long du livre, et c’est de nouveau le message qu’il utilisera en guise de conclusion, l’auteur met en garde contre les tentations que pourraient avoir les personnes de gauche de détourner les blockchains à leur avantage : cela ne fonctionnera pas, car cette technologie est structurellement opposée à leur valeur. Au contraire, « ce qu’il faut pour combattre [le pouvoir en place], ce n’est pas plus de guerres entre des plateformes algorithmiques et des individus qui se considèrent au-dessus de la politique, mais une réaffirmation du pouvoir politique, ce que la blockchain est spécifiquement construite pour démanteler »[1].

Bref, je ne détaille pas plus et ne vous raconte pas tout : lecture recommandée ! Le bouquin n’est pas cher, et pour celles et ceux qui sont vraiment fauché·es, il se trouve assez facilement sur le web…

Note

  1. ^ C’est la dernière phrase du livre : “What is required to combat that power is not more wars between algorithmic platforms and individuals who see themselves as above politics, but a reassertion of the political power that the blockchain is specifically constructed to dismantle.”.

samedi 12 mars 2022

Taux d'accès Parcoursup

Ce billet est directement tiré d’un thread publié sur mon compte twitter.

Cette année encore la Licence informatique de l’Université Paris 8 (dont je suis responsable) avec ses 13% de taux d’accès, semble être la plus attractive des 128 licences en informatique listées sur la plateforme Parcoursup, incluant pourtant des formations sélectives (doubles licences, etc).

La première chose à dire là dessus : la distinction que Parcoursup fait entre les formations dites “sélectives” et celles dites “non-sélectives” n’a absolument aucun intérêt en pratique. Ça dit seulement si la formation a le droit de répondre “non” à des candidatures ou si elle doit nécessairement classer tou·tes les candidat·es, mais en pratique, nombre de formations dites sélectives acceptent tout le monde voire ne remplissent pas leur capacité d’accueil, et beaucoup de formations dites non-sélectives atteignent leur capacité d’accueil avant d’avoir atteint la fin du classement qu’elles ont fait des candidatures qu’elles ont reçues, étant donc de fait, sélectives.

Le vrai problème, c’est que les vœux n’étant pas classés sur Parcoursup, on ne peut pas réellement mesurer de taux de satisfaction des candidat·es, ce qui serait la seule mesure réellement intéressante.

En attendant, on peut se demander : que mesure réellement ce taux d’accès mis en avant par la plateforme ?

Déjà, comment est calculé ce taux d’accès ? C’est pas clair du tout… On peut lire par exemple chez L’Étudiant qu’« il s’agit du pourcentage de candidats qui ont reçu une réponse positive lors de la phase principale de l’année précédente ». Sauf que… ça ne marche pas vraiment.

MISE À JOUR (13/03/2022) : en fait si, je n’avais pas les bons chiffres pour la phase principale.

Texte retiré suite à la mise à jour ci-dessus.

La formule est soit très complexe, soit change en fonction de certains seuils. Pour la Licence informatique de Paris 8, qui a reçu l’an dernier 1990 candidatures confirmées pour une capacité d’accueil de 70 places, et a appelé 234 candidat·es depuis le haut de notre classement, si on compte comme l’indique L’Étudiant, on obtient un taux de 11,7% qu’il est difficile d’arrondir au 13% annoncés.

Peut-être que son pris en compte d’une façon où d’une autre le fait que sur les 1990 candidat·es il y en a dont on peut-être certain·es qu’iels ne voulaient pas prioritairement venir chez nous : les appelé·es qui ont refusé·es la proposition, et celleux qu’on a pas appelé bien que classé·es plus haut que notre dernier·es appelé·es car iels ont accepté avant leur tour chez nous une autre formation qui avaient leur préférence. Mais dans ce cas, c’est étrange de procéder ainsi tout en faisant comme si par contre tou·tes les candidat·es qui n’ont pas été appelé·es une fois qu’on a atteint notre capacité d’accueil auraient voulu venir !

Bref, le principe est tout de même d’avoir une idée grossière de combien de candidat·es vont recevoir une proposition d’acceptation dans la formation. Mais est-ce pour autant un critère d’attractivité ou une information pertinente sur la difficulté d’accès à la formation ? Pas vraiment… En fait, ça le serait si les formations comparées ainsi faisaient leur classement de la même manière exactement. Mais c’est très loin d’être le cas, et c’est même probablement ce qui explique principalement les grandes différences de taux d’accès entre formations par ailleurs similaires.

En effet, comment expliquer que des formations dans la même filière, avec un nombre très semblable voire égal de places, et parfois beaucoup plus de candidatures que la notre, aient des taux d’accès bien plus haut ? Tout simplement à la manière dont sont fait les classements !

Et là, désolé, je vais sembler être un peu critique de certain·es collègues dans d’autres établissements, mais sachez bien qu’en aucun cas on ne peut leur reprocher le fonctionnement de Parcoursup qui pousse complètement à faire de la sélection. C’est bien la plateforme qui est en tort, et ça demande une organisation et un travail conséquent de contourner ce qu’elle pousse à faire avec son module d’« aide à la décision ».

Ce qui fait notre taux d’accès si bas, c’est qu’on refuse de recourir à un algorithme de classement basé sur les notes : sinon quelque soit la formule qu’on choisirait d’appliquer, c’est toujours les mêmes — celleux avec les bonnes notes — qu’on retrouverait en haut de classement.

Et comme beaucoup de formations se contentent de ça, non seulement elles classent en premier les mêmes candidat·es (qui ne vont bien sûr qu’à un seul endroit et donc refusent tous les autres) qui en plus le plus souvent ne mettent des licences qu’en plan B car iels veulent en fait accéder à une classe prépa plus qu’à la fac, prépa qui classe généralement aussi de cette façon. Et donc ces candidat·es refusent en fait toutes les licences qui leurs sont proposées…

L’effet le plus pervers de tout ça c’est que ça ralentit beaucoup la procédure pour tout le monde C’est complètement stupide et ça pourrait être évité très facilement si Parcoursup autorisait tout simplement les candidat·es à classer leurs vœux (à dire avec de l’écho).

Mais alors, qu’est-ce qu’on fait de différent chez nous à Paris 8 en Licence informatique ? Et ben on lit vraiment chaque dossier : le projet de formation motivé, le CV, etc. Puis on essaye du mieux qu’on peut de pondre un classement correspondant à la volonté réelle des candidat·es.

En gros, on cherche les candidat·es qui semblent avoir le plus envie de venir chez nous. Parce que c’est elleux qui seront le plus content·es d’être là, vont du coup le mieux s’épanouir chez nous, et donc vont le mieux réussir leurs études :).

Notre licence est très particulière, même complètement unique par bien des aspects (qui sont détaillés sur le site web de la formation), donc on voit assez vite les candidat·es qui postulent chez nous et pas “génériquement” en licence informatique (et encore… chaque fois on a des candidatures avec un projet de formation motivé pour une tout autre filière, là au moins c’est clair qu’on est pas le premier choix puisqu’on a eu un copier-coller depuis la formation pour laquelle l’effort a été fait ^^).

Sauf qu’en vrai, elle est pas si connue notre licence, et ces cas là ne suffiraient pas à remplir notre capacité d’accueil. Donc l’autre critère important qu’on a, c’est que la candidature montre que la personne sait où elle met les pieds, en particulier ce qu’est la programmation, et qu’elle aime ça. Parce qu’autant dire que dans le cas contraire, ce serait rude. Quelqu’un·e qui n’aime pas la programmation aurait bien du mal à s’épanouir chez nous (cf le programme de la licence) ! Mais c’est pas grave, y a plein d’autres formations qui lui correspondront mieux.

Sur la base de ces critères (qui sont publics et accessibles sur le site de la formation et sur sa fiche sur Parcoursup), on essaye de bidouiller manuellement un classement. C’est à dire qu’on essaye du mieux qu’on peut de détourner Parcoursup de son objectif de sélection pour en faire un outil d’orientation. C’est compliqué, ça demande énormément de travail, et on est jamais sûr·es d’avoir juste… Mais en fait, notre taux d’accès aussi bas, qui montre que celleux qu’on classe en haut ont bien tendance à venir chez nous, c’est finalement la preuve qu’on s’en sort pas si mal ! ☺

La conclusion, c’est qu’il ne faut pas se censurer sur Parcoursup face à des formations qui affichent un taux d’accès bas ou très bas, et ce même quand on n’a pas les meilleures notes : ce sont peut-être justement les formations pour lesquelles les notes comptent moins que la motivation.

vendredi 25 février 2022

Spammeurs : mangez des pneus

Juste un court billet pour dire que je coupe complètement les commentaires et les rétroliens (trackback) sur ce blog, les spams sont ingérables et beaucoup trop nombreux.

J’espère de tout cœur que l’ensemble des personnes qui contribuent à faire du web et plus largement d’internet un espace aussi merdique, que ce soit en développant des outils de spams automatisés, en payant pour les utiliser, ou de quelques autres façons que ce soit, vont crever seules sans être regrettées. J’ai aucun respect ni aucune compassion pour vous quelque soit la raison de votre participation au business du spam. Mangez des pneus et étouffez vous avec.

lundi 7 février 2022

Le coût d'une blockchain

Quand on parle du coût d’une blockchain, on fait souvent référence à son mécanisme de consensus, typiquement de la preuve de travail. Quand on explique que ce coût est exorbitant, il est souvent rétorqué que d’autres mécanismes de consensus à base de preuve d’enjeu peuvent être utilisés et qu’ils sont beaucoup moins consommateur d’énergie. Dans ce billet, je vais m’intéresser au coût d’une blockchain indépendamment du mécanisme de consensus choisi, c’est à dire à une partie incompressible du coût que l’on doit payer quand on choisi d’utiliser une blockchain.

Une blockchain est un registre immuable en ajout seulement (append-only). C’est à dire qu’on ne peut y rajouter de l’information qu’à la suite de ce qui est déjà écrit dedans, et qu’une fois qu’on y a ajouté une information, on ne peut plus modifier ou supprimer cette information. En pratique, cela signifie qu’une blockchain ne contient pas directement l’état d’un système, mais une suite de modifications ordonnées de l’état d’un système. Le sens de cette dernière phrase est probablement assez obscure, je vais donc l’expliquer avant d’en tirer des conclusions.

Commençons avec un exemple qui ressemble[1] à une cryptomonnaie : le ¢. Dans ce système, il y a des participant·es : Alice, Bob, Charlie, Diane, Emma, et Farid. Initialement il y a deux participant·es qui sont tiré·es au sort et qui reçoivent 5¢ : Bob et Diane. Et donc l’état initial de mon système est que Bob et Diane ont chacun·e 5¢, et que tou·tes les autres ont 0¢. On pourrait noter cet état comme ça par exemple : (A:0, B:5, C:0, D:5, E:0, F:0).

Maintenant faisons tourner notre système. Imaginons que Bob envoie 2¢ à Alice et 1¢ à Farid, et que Diane envoie 1¢ à Bob. On pourrait noter ces transactions comme ceci : [B→A:2, B→F:1, D→B:1]. Le nouvel état du système serait donc (A:2, B:3, C:0, D:4, E:0, F:1). Continuons avec Alice qui envoie 1¢ à Charlie, Bob qui envoie 2¢ à Farid, et Diane qui envoie 1¢ à Emma et 1¢ à Alice : [A→C:1, B→F:2, D→E:1, D→A:1]. Le nouvel état du système serait alors (A:2, B:1, C:1, D:2, E:1, F:3).

Si maintenant je vous pose des questions comme : “Combien Alice possède-t-elle de ¢ ?” ou “Est-ce que Bob peut dépenser 3¢ sans être à découvert ?”, vous allez naturellement regarder la dernière version de l’état du système pour pouvoir y répondre directement. Mais, comme je le disais plus haut, si vous utilisez une blockchain, vous n’avez pas un accès direct à l’état du système, mais seulement aux modifications successives de celui-ci. Dans notre exemple, la blockchain ressemblerait à ça :

[_→B:5, _→D:5] ⇒ [B→A:2, B→F:1, D→B:1] ⇒ [A→C:1, B→F:2, D→E:1, D→A:1]

Si vous ne disposez que de la blockchain, pour chaque question vous devez forcément recalculer la partie de l’état du système qui est nécessaire pour y répondre, et cela vous demande forcément de reparcourir toute la chaîne et depuis le début, parce que vous ne pouvez pas savoir à l’avance dans quels blocs il y aura des informations pertinentes. De plus, pour trouver les informations pertinentes, il faut également parcourir l’ensemble des transactions dans chaque bloc pour être sûr de ne pas en rater une où la personne concernée par la question est émettrice ou destinataire.

Sur notre tout petit exemple ça reste raisonnable, mais dans le cas d’un système grandeur nature, où des participant·es peuvent se rajouter au système n’importe quand, où il y a beaucoup plus de transactions dans chaque bloc, et surtout, beaucoup et de plus en plus de blocs, il est impossible de se satisfaire de cette méthode. Ce serait bien trop lent et inefficace.

Pour calculer le coût il faut regarder combien d’opérations doivent être effectuée pour répondre à une question. Ici, une “opération” peut être : suivre un lien dans la chaîne (passer au bloc suivant), lire une transaction (à l’intérieur d’un bloc), faire une addition (quand on voit une transaction entrante pour le compte qui nous intéresse), ou faire une soustraction (quand on voit une transaction sortante pour le compte qui nous intéresse).

Pour répondre à la question “Combien Alice possède-t-elle de ¢ ?” on initialise un compteur (qui représentera le solde de Alice) à zéro, on se place sur le premier bloc, puis on doit faire 14 opérations (je vous laisse les retrouver en vous aidant du dessin ci-dessus) pour pouvoir répondre : “Alice possède 2¢”.

Pour répondre à la question “Est-ce que Bob peut dépenser 3¢ sans être à découvert ?”, on initialise un compteur à zéro (le solde de Bob), on se place sur le premier bloc, puis on doit faire 16 opérations puis une soustraction pour pouvoir répondre : “non” (de même, je vous laisse faire l’exercice).

Le problème, c’est qu’on doit tout recalculer à chaque fois, et qu’on est obligé de faire des opérations inutiles parce qu’on ne peut pas savoir avant de lire une transaction si elle concerne le compte qui nous intéresse, par exemple. Et bien sûr c’est de plus en plus coûteux à chaque fois que la chaîne grandit par l’ajout d’un bloc.

La solution n’est pas compliquée : idéalement, on ne veut faire qu’une seule fois chaque opération, et se rappeler du résultat pour les prochaines fois. C’est à dire maintenir l’état qui nous intéresse effectivement : le solde de chaque compte. On peut faire ça dans un tableau. Ça ne prend qu’une seule opération d’accéder à une case d’un tableau, et ensuite il suffit de lire le contenu de la case (tout comme on devait lire les transactions)

Ici la réponse est récupérée en temps constant : deux opérations (accès à la bonne case du tableau puis lecture de la case), même quand on aura rajouté des nouveaux blocs. Il suffit de maintenir le tableau à jour à l’arrivée de chaque nouveau bloc, une fois pour toutes.

Bon, en pratique, on va plutôt utiliser un logiciel de base de données plutôt qu’un simple tableau, mais l’idée est globalement la même, le coût de l’accès et de la mise à jour de l’information restera très faible (s’il n’est pas constant, il sera logarithmique — comprendre très petit par rapport au nombre d’informations qu’on doit stocker pour représenter l’état du système, et en tout cas toujours indépendant de la taille de la chaîne qui peut donc grossir sans affecter le temps d’accès à l’état du système ou de sa mise à jour). Ce qu’il faut retenir de tout ça c’est que quand on fait le choix d’utiliser une blockchain, ce n’est pas à la place d’une base de donnée “classique”, mais bien en plus.

Bien sûr, si on a besoin des fonctionnalités de la blockchain, son coût peut être justifié. Mais le fait est que l’écrasante majorité des projets qui utilisent cette technologie le font sans que ce soit nécessaire, par pur effet de mode. Et dans ces cas là, il est important de comprendre que le coût d’une blockchain (que ce soit celui de son stockage qui ne peut qu’augmenter, ou celui de sa mise en œuvre et de son utilisation comme on l’a vu dans ce billet), aussi petit qu’il soit, est un coût entièrement supplémentaire, puisque pour des raisons pratiques, on doit de toutes façons maintenir également la base de données qui, dans bien des cas, pourrait être utilisée à la place.

Note(s)

  1. ^ AJOUT (07/02/2022) : C’est très (peut-être trop) simplifié. Après la lecture de ce billet, vous pouvez aller voir quelques corrections/suppléments apportés par Franck Gabriel sur Twitter en réaction, puis lire la suite de cette note : un autre exemple simple que j’aurais pu prendre pour illustrer le même propos en déformant moins un cas d’usage réel, ça aurait été celui de la certification de diplômes (sauf que du coup on est sur un cas d’usage injustifié — bien que réel — d’une blockchain…) : pour vérifier si Alice est titulaire d’un diplôme, si on ne maintient pas une base de données des diplômé·es à jour, il faudra d’abord trouver le bloc qui décerne son diplôme à Alice (ça, on peut imaginer qu’elle nous le fournit), mais ensuite il faudra vérifier dans l’ensemble des blocs suivants qu’il n’y en a aucun où son diplôme serait révoqué (suite à la découverte d’une fraude ou d’un plagiat par exemple).

vendredi 4 février 2022

L'immuabilité d'une blockchain

Dans un précédent billet critiquant l’usage du terme “portefeuille” dans les cryptomonnaies, j’expliquais rapidement la nécessité pour une blockchain d’être immuable. Dans un autre billet, je revenais sur le fait que, contrairement à une idée fausse mais qui semble assez répandue, la preuve de travail (ou d’enjeu) est un mécanisme de consensus[1] et pas du tout d’immuabilité.

Dans ce billet, je voudrais donc revenir plus en détail sur ce qui fait l’immuabilité d’une blockchain, et en quoi ce n’est absolument pas spécifique à cette technologie. Pour cela je vais devoir commencer par expliquer ce qu’est un condensat cryptographique.

Condensat. Un condensat est le résultat d’une fonction de hachage. Une fonction de hachage est un algorithme qui à une donnée numérique (par exemple, un fichier) associe un nombre : le condensat. Cet algorithme est déterministe, c’est à dire qu’il n’utilise pas de hasard : si on lui redonne la même donnée en entrée, il reproduira le même nombre en sortie. C’est pour ça qu’on parle parfois d’empreinte numérique (au sens des empreintes digitales, qui permettent une identification) plutôt que de condensat. Une autre particularité de cet algorithme est de devoir mettre en œuvre l’effet d’avalanche, c’est à dire que le moindre changement dans la donnée d’entrée (même un seul bit) doit provoquer un gros changement dans son résultat (chaque bit du nombre résultat a idéalement une chance sur deux de changer de valeur). C’est pour ça qu’on parle parfois de somme de contrôle plutôt que de condensat : ça permet de s’assurer de l’intégrité parfaite de la donnée après un transfert sur le réseau par exemple.

Exemple. La fonction sha256 est un algorithme de hachage qui fait les associations suivantes :

  • donnée : “abc” (en binaire : 01100001 01100010 01100011),
    condensat : 9682368737159886­1417056907351531­5707566766479517 ;
  • donnée : “Abc” (en binaire : 01000001 01100010 01100011),
    condensat : 8297738529930439­7015238300242493­2415731791513586.

On remarque qu’un seul bit de changement dans la donnée d’entrée (le troisième, qui correspond au passage en majuscule de la première lettre) provoque un changement complet du résultat de l’algorithme de hachage (effet d’avalanche). Et bien sûr, la fonction redonnera toujours le même résultat pour une même donnée en entrée (déterminisme). Ce sont ces deux propriétés qui nous permettent d’utiliser les condensats calculés par la fonction sha256 comme empreintes numériques ou sommes de contrôle pour vérifier l’intégrité de données.

Dans une blockchain, chaque bloc a un identifiant unique, qui correspond au condensat des données qu’il contient. Étant donné un bloc, n’importe qui peut s’assurer de son intégrité en recalculant le condensat cryptographique correspondant à ses données, et en vérifiant qu’il correspond bien à son identifiant. Cela fonctionne comme avec n’importe quelle donnée dont on connaît le condensat de la version intègre (ici, l’identifiant du bloc).

Collision. Si on veut distribuer une version altérée d’une donnée dont le condensat de la version intègre est publiquement connu, il est nécessaire de trouver une collision. C’est à dire qu’il faut trouver comment modifier, en plus des changements qu’on souhaite y apporter, la donnée de façon à ce que la nouvelle version ait le même condensat. C’est parfois possible, car les condensats ont une taille maximale, alors que les données non, donc il peut y avoir plusieurs données qui partagent le même condensat[2]. Mais en pratique, c’est extrêmement difficile de trouver des collisions si l’algorithme de hachage qu’on utilise est cryptographiquement solide (ce qui est le cas par exemple de sha256 — pour l’instant en tout cas). Cela est notamment dû au fait que les algorithmes de hachage cryptographiques sont des fonctions à sens unique, c’est à dire des fonctions qui sont faciles à calculer dans un sens (donnée → condensat correspondant) mais très très difficiles à calculer dans l’autre sens (condensat → données correspondantes).

Chaîne. Parmi les données que contient un bloc, il y a entre autre l’identifiant de son bloc parent, c’est à dire celui qui le précède. C’est justement ce qui fait que que les blocs sont moralement “attachés” les uns à la suite des autres et forment ainsi une chaîne (d’où le nom “blockchain”). Si on modifie le contenu d’un bloc (par exemple en retirant une transaction, ou en changeant son montant), alors on change son identifiant, ce qui casse la chaîne : le bloc suivant ne contient plus l’identifiant de son parent, on a cassé la chaîne. On doit donc changer aussi le bloc suivant, et donc son identifiant, et ainsi de suite jusqu’au dernier (par réaction en chaîne, littéralement). Par le même effet, le chaînage protège également de la disparition, de l’apparition, ou du réordonnancement de blocs, assurant ainsi l’intégrité de la chaîne dans son ensemble et pas seulement de chaque bloc pris individuellement.

Distribution. Une autre propriété des blockchains est qu’elles sont publiques et distribuées, c’est à dire que n’importe qui peut en faire une copie, la conserver, et la tenir à jour, de sorte à pouvoir vérifier l’intégrité de la chaîne (ou du moins la conformité à la version dont il dispose) à tout moment.

Immuabilité. Ce sont ces deux propriétés réunies (le chaînage et la distribution) qui font l’immuabilité. Il n’est absolument pas possible de modifier la chaîne sans que ce soit immédiatement visible. À moins qu’on ne soit capable de trouver une collision, soit on casse de manière visible l’intégrité de la chaîne, soit on doit changer aussi les identifiants de tous les blocs depuis celui modifié (ou retiré ou ajouté) jusqu’au dernier pour les faire correspondre aux nouveaux condensats, et avoir ainsi une nouvelle chaîne autocohérente, mais cela est encore plus visible car elle sera totalement différente jusqu’à son dernier maillon.

Voilà ce qui fait effectivement l’immuabilité d’une blockchain, et qui n’a donc rien à voir avec la preuve de travail ou d’enjeu, qui sont uniquement des mécanismes de tirage au sort consensuels en situation conflictuelle, et qui sont la réelle innovation des blockchains.

En effet, la structure de chaîne garantissant l’immuabilité n’est pas du tout spécifique aux blockchains et existait déjà bien avant. Par exemple dans le logiciel de contrôle de versions décentralisé Git. C’est pour ça que je m’acharne à répéter que même si ce dont on a besoin est un registre public et garanti immuable, quand il y a un tiers de confiance ou une autorité extérieure, on a pas besoin de blockchain. Cela reste vrai même si l’autorité extérieure n’est pas centralisée mais partagée (par exemple au sein d’un consortium, d’un comité de gouvernance, etc.), en fait dès qu’une liste d’acteurs identifiés sont en charge du registre. En comprenant cela, on discrédite immédiatement tous les projets construits autour d’une blockchain permissionnée ou pire, privée.

Il ne reste plus alors qu’à comprendre qu’une autorité extérieure est forcément nécessaire pour rendre pertinent ce qui est écrit sur une blockchain, dès lors que cela concerne quelque chose d’extérieure à cette blockchain[3], pour ce rendre compte que décidément, les cas d’usages justifiés de cette technologie sont bien limités…

Notes

  1. ^ À ce sujet, voir aussi mon billet mettant en garde sur le sens du terme “consensus” dans le cadre des blockchains.
  2. ^ C’est le principe des tiroirs à chaussette (ça s’appelle vraiment comme ça !).
  3. ^ Voir à ce sujet mon billet “la vérité sur la blockchain”.

mercredi 2 février 2022

Le problème résolu par la blockchain n'existe pas

Il y a quelques jours, lors d’une discussion, un ami (Antoine) m’a dit la chose suivante : « Un truc m’échappe, qu’est-ce qui motive les participants existants d’une blockchain à fournir l’historique de celle-ci aux nouveaux participants ? ». La réponse à cette question semble être : rien, dans le protocole en tout cas. Depuis, cette question tout à fait pertinente (mais pas tout à fait innocente), et surtout les implications qui découlent de la réponse, me trottent dans la tête.

Comme je l’expliquais dans mon précédent billet sur la nécessité de la preuve de travail (ou d’enjeu), les seules situations qui justifient le recours à une blockchain sont celles où se pose la question de résoudre le problème du consensus distribué, dans un cas à la fois décentralisé et conflictuel (personne ne fait confiance à qui que ce soit).

Mérion à dos rouge
Mérion à dos rouge[1]

Si ces deux conditions (décentralisation et conflictualité) ne sont pas réunies, on sait faire mieux et plus efficacement que de recourir à l’usage d’une blockchain. Comme exemple, on peut prendre celui de la certification de diplômes, puisque cette (mauvaise) justification d’utilisation de NFT revient sans cesse.

Quel que soit le cas d’usage qu’on prétend avoir pour une blockchain, on a besoin de conserver son historique pour au moins une raison : permettre l’arrivée de nouveaux participants sur le réseau. En effet, sans l’historique complet, un nouveau participant devrait faire entièrement confiance à ceux qui lui fournissent l’état du système lors de son arrivée. Dans le cas d’une cryptomonnaie par exemple, il est nécessaire d’avoir accès à tout l’historique pour vérifier la validité d’une transaction, car seul l’historique des transactions permet de calculer le solde d’un compte. On ne peut pas se satisfaire d’un état du système (qui donnerait le solde de chaque compte) fourni par un ou des participants existants sans complètement sortir du modèle de sécurité qui justifie le recours à une blockchain (puisque cela impliquerait de leur faire confiance).

Il est donc nécessaire au fonctionnement du système que l’historique de toute la blockchain soit conservé et partagé. Cela soulève ces deux questions.

Conservation. L’historique d’une blockchain est nécessairement de plus en plus lourd, son stockage est donc de plus en plus coûteux. De plus, comme un participant se fait confiance à lui même, une fois qu’il a eu une copie complète de l’historique, il peut l’utiliser pour calculer l’état du système (par exemple le solde de chaque compte dans le cas d’une cryptomonnaie), stocker cet état dans une base de donnée classique, puis utiliser les informations contenues dans les nouveaux blocs qui arrivent pour mettre à jour cette base de donnée. Ce sera beaucoup moins lourd que de conserver l’historique complet tout en lui apportant exactement les mêmes garanties et capacité de vérification de la validité des transactions. En fait, maintenir cette base de donnée est même indispensable dans tous les cas, y compris si on décide de conserver une copie de l’historique de la blockchain : recalculer l’état du système en reprenant tout depuis le début à chaque fois serait bien trop coûteux et inefficace (je reviendrai là dessus dans un prochain billet sur le coût des blockchains). Du coup, un participant n’a aucun intérêt à conserver l’historique, même pour lui même.

Partage. L’utilisation de la bande passante nécessaire au partage de l’historique a également un coût. De manière générale, rien n’incite les participants à payer le coût de ce partage, ni de celui des transactions et des blocs qui ne les concernent pas. Ce serait d’ailleurs assez difficile à mettre en œuvre[2]. Pourtant, ce partage est indispensable au fonctionnement d’une blockchain. On peut par exemple voir, en gras dans la documentation de bitcoin, une simple recommandation de ne pas limiter trop strictement la bande passante…

Une question se pose alors : si on est effectivement dans une situation décentralisée et en absence de confiance qui justifie de recourir à une blockchain dont le fonctionnement repose sur le fait que les participants sont en compétition les uns avec les autres, pourquoi les participants choisiraient-ils de coopérer ? Qu’est-ce qui les pousse à agir de manière altruiste alors qu’ils sont par définition en compétition ? Pourquoi payer le coût du stockage et de la bande passante au bénéfice de la communauté alors que l’intérêt individuel de chacun est de ne pas le faire ? Deux possibilités.

Soit on est effectivement dans une situation de conflictualité, face à une forme de dilemme du prisonnier qui va inévitablement nous mener à une tragédie des communs : dès que les coûts de stockage et partage seront jugés trop élevés par certains participants, ils arrêteront de les payer en comptant sur les autres pour le faire. Mécaniquement, cela augmentera la charge et donc le coût en bande passante pour les participants restants, qui toléraient encore le coût jusque là. Certains qui étaient à la limite de leur capacité arrêteront donc à leur tour, et ainsi de suite jusqu’à disparition de la ressource, ou que la poignée d’acteurs restants à la fin (forcément les plus riches) soient en total contrôle de celle-ci. On assiste alors à un contraction du réseau, à sa recentralisation. Dans le cas d’une situation de conflictualité, il n’est donc absolument pas possible d’utiliser la prétendue pérennité de la blockchain comme argument en faveur de cette technologie.

Soit il faut admettre que, manifestement, tout système social nécessite une forme de confiance, ne serait-ce qu’un ensemble de règles que les participants se mettent d’accord de respecter, même quand rien ne les y oblige et que ça leur coûte de le faire. Cet altruisme au service du collectif, contre l’individualisme (supposé) de chacun[3], bénéficie au final à tout le monde puisqu’il permet de maintenir le bien commun. Sauf que dans le cas d’une situation de confiance, on remet sérieusement en cause les hypothèses qui justifient le recours à l’utilisation d’une blockchain.

C’est plutôt cette deuxième possibilité à laquelle je crois. La tragédie des communs, vu comme quelque chose d’inéluctable (d’où l’utilisation du mot “tragédie”), est une conclusion à laquelle arrivent des économistes libéraux qui modélisent tous les acteurs de leur économie comme purement individualistes. Un tel monde n’est pas possible, ni souhaitable, d’ailleurs. Dans le titre je dis de façon un peu provocante que le problème résolu par la blockchain n’existe pas (bien sûr qu’il existe, il suffit de le poser pour ça). C’est plutôt que dans la vraie vie, je ne crois pas que ce problème ait un réel intérêt, qu’il existe de vraies situations sociales concrètes qui nécessitent de résoudre ce problème.

Décidément, on vit dans une société.

Notes

  1. ^ Le Mérion à dos rouge fait partie de ces espèces d’oiseaux qui ont un comportement coopératif pour la reproduction, comme la mésange à longue queue, mais avec une plus jolie robe, assortie à ce blog ;).
  2. ^ Techniquement, cela demanderait de déterminer le ratio téléversement / téléchargement des participants, toujours sans pouvoir leur faire confiance et de façon décentralisée. À ma connaissance, on ne sait pas tellement faire ça.
  3. ^ Je n’ai pas lu plus que le résumé, mais ça semble être ce qui est défendu par Bourdieu dans son ouvrage L’intérêt au désintéressement.

mardi 1 février 2022

Cryptomonnaie / blockchain : un serpent qui se mord la queue

Dans le billet “La vérité sur la blockchain”, j’expliquais pourquoi la seule application possible (ou du moins, valable) d’une blockchain est une cryptomonnaie. Grossièrement, c’est le seul cas d’utilisation où l’écriture sur la chaîne est performative sans dépendre d’une autorité / d’un tiers de confiance extérieur. C’est donc le seul cas où l’on est effectivement face au problème du consensus distribué[1].

Dans un autre billet sur la nécessité de la preuve de travail (ou d’enjeu), j’expliquais qu’effectivement dans les cas où il est nécessaire de résoudre le problème du consensus distribué, on ne sait pas se passer d’une blockchain (c’est d’ailleurs exactement pour ça que cette technologie a été inventée).

Une chose que j’ai évoquée seulement indirectement dans ce dernier billet, c’est la nécessité de récompenser le travail (ou l’enjeu) pour inciter à la participation. En effet, le coût de la preuve de travail (ou l’inconvénient de l’enjeu) serait prohibitif si il n’y avait aucune contrepartie promise en échange de cette participation au fonctionnement du réseau, avec une espérance de gain supérieure au coût de la preuve.

Bien sûr, cette récompense doit forcément être “interne” à la blockchain[2], sinon on sort de la situation décentralisée et sans confiance qui nécessite l’usage d’une blockchain. Cela signifie qu’une blockchain a besoin de sa cryptomonnaie pour fonctionner.

Récapitulons : une cryptomonnaie nécessite une blockchain pour exister, et à la manière d’un serpent qui se mort la queue, cette blockchain nécessite cette cryptomonnaie pour fonctionner. Cryptomonnaies comme blockchains sont des solutions qui sont leur propre problème. À cela s’ajoute que la seule application valide d’une blockchain est justement une cryptomonnaie, et qu’à leur tour les cryptomonnaies ne semblent avoir comme intérêt pratique que la création d’actifs purement spéculatifs…

Bref, pour finir rappelons qu’un système de monnaie numérique, même décentralisé, peut tout à fait exister sans blockchain[3] !

Notes

  1. ^ C’est à dire devoir mettre tous les participants, sans qu’ils ne se fassent confiance, d’accord sur l’un d’eux au hasard sans disposer d’aucun agent qui puisse jouer le rôle de “chef d’orchestre”. À ce sujet voir également mon billet sur la notion de “consensus” dont il est ici question.
  2. ^ Il y a probablement beaucoup à dire sur ce que cela implique en terme (d’absence) de possibilité de contrôle de la monnaie (création/destruction), et d’inflation inévitable des frais des transactions si on veut éviter une création infinie d’unité de cryptomonnaie au fil du temps. Mais cela sort trop de mon champs de compétences pour que je puisse disserter là dessus sans craindre de dire quelques bêtises…
  3. ^ Voir par exemple le projet Taler.

lundi 24 janvier 2022

NFT: even more stupid

This is an english translation of my post entitled “NFT : encore plus stupide”.

Le singe fume sa cigarette
‘21 NFT or ‘12 french rap?

The goal of an NFT is to establish a property deed. The idea is to certify an association between a digital identity (the owner) and an object (the property, a digital asset most of the time), and to then use a blockchain to store and distribute this certificate.

It’s off to a bad start: people claiming to be able to assert ownership using a blockchain are either lying or have no idea what they are talking about. This was already pointed out in a previous post (that should probably be read before this one) where I explained that a blockchain cannot serve as a source of truth for anything that is not intrinsically “inside” the said blockchain. This technology thus has no advantage over paper[1] for this purpose. It has however many inconveniences: power consumption, the impossibility of having actual peer to peer transactions, etc.

NFTs are supposed to allow decentralization and disintermediation (getting rid of the need for trusted third-parties). This in itself is enough to discredit NFTs, since an NFT is a property deed on a blockchain, and that precisely, blockchains cannot actually offer any decentralization nor any elimination of the need for trust, as demonstrated in the post linked in the previous paragraph. Still, as the title of this post suggests: NFTs are even more stupid.

NFT stands for “non-fungible token”: it is a non-interchangeable piece of data, as opposed to units of cryptocurrencies for example. When someone has 1 bitcoin, they have 1 bitcoin, whichever it is: they’re all equivalent in the strict sense of having the same value. Each NFT is unique and identifiable. A 10€ bill has the same value as any other 10€ bill (or as any other set of bills and coins that sums up to 10€): euros are fungible. Now, if we decide that 10€ bills are no longer in circulation but that we keep them and open a market of 10€ bills where each one is unique and identified by its serial number, then I can hope to sell my 198357 numbered bill at a higher price than my 840414 numbered bill for example, by saying that its serial number is prime and that there is a limited quantity of such bills (which is false then idiotic, but I can still say it…).

This idea illustrate what is meant by “non-fungible”. The fact is that numbering objects that are available in limited quantity can increase their value[2]: not only they are rare, but now they are unique since each has a different number. However in the case of NFTs, it is even more stupid: absolutely nothing prevents to make multiple NFTs for the same object (so there can be multiple certificates of ownership for a single artwork, for example), and anyone can make an NFT for anything (so there is no guarantee whatsoever that a person selling an NFT owns the associated object). Everything is as if a same 10€ bill (in the sense of the physical object, necessarily unique) could have an inifite number of serial numbers, and that it is to these serial numbers that we attribute value, and potentially different values to each one. I know, this makes absolutely no sense.

It is actually even more stupid: the object associated to an NFT is generally a digital object, whose rarity does not exist[3] since they are transmissible by copy (as opposed to my 10€ bill that I would no longer have in my possession if I give it to someone else). This means that the object associated to the NFT (and which obviously contributes to its value on the market, even though we have already seen in the previous paragraph that this does not make sense) can itself be replicated infinitely. This may seem obvious, and yet there are many cases of people who bought an NFT to use its associated object (an image file) as a profile picture on social networks and called thieves people who would retrieve the image by a simple right click and then “save image as…”, for example.

All these criticisms are valid even if we accept the idea that an NFT would indeed be a property deed, but in reality it is even more stupid. In principle, at least from the point of view of the proponents of this technology, having an NFT associated to the object (digital or not) X allows to say “I am the official owner of X, I have a certificate that proves it”. The thing is, the notion of ownership is anything but natural, it does not exist as anything else than a social construct. Ownership can be the result of a (maybe litteral) power struggle[4] or of a common agreement, but in both cases it is a form of violence. In the first case, the power struggle has to be constantly renewed. In the second case, it is necessary that a third-party enforces the agreement, with an ability to punish in case of disrespect, or an absolute power of constraint. In both cases, the notion of ownership exists and has a meaning only for the concerned community[5]. In short, a property deed has no intrinsic value if there is no third-party to enforce its application and thus giving it its value. This is true when the deed is written on a piece of paper, and it stays true when it is an NFT. By recording on a blockchain that a given person is the owner of a given object, one does not perform anything more than if they would have written this same statement on paper: it has absolutely no value if there is no third-party with the ability to enforce what is written, to make it true[6]. Once again, the idea of decentralization or disintermediation is gone…

Now hang on, there is more. The association of an object to an NFT is usually not recorded directly on the blockchain for technical reasons (for physical objects —luxury watches, artworks, …— that’s obvious; and digital objects are too big for that). Note that even in the rare cases where it would be the case, everything said until now still holds perfectly. What is stored on the blockchain is most often a link to a web page[7] that itself points to the associated object. Here again, we have lost all idea of decentralization (which is supposed to be why this technology exists in the first place — even if, as we have seen, this belief is based on a huge misunderstanding of what a blockchain can do), since a centralized platform is necessary to link an NFT to its associated object. This is bad enough, but things are even more stupid: because of this necessary and centralized third-party, an NFT can be subject to link rot in the best case (for example if the centralized platform no longer exists or moves to another URL). But it could be worse: the website could be hacked and/or later be replaced by one that does fancy associations, displays ads, attempts to infect its visitors with viruses, or simply trolls.

It is terefore quite clear that NFTs are purely and entirely hot air and have no possible serious applications (except of course to enrich the higher stages of a Ponzi scheme while accelerating global warming). But let’s take a closer look at the non purely speculative use case that is the most often put forward by the proponents of this technology: its use in a metaverse or in video games (I will talk about “virtual worlds” in general) for “in-game” markets.

What makes this idea seem to work is that in the case of a virtual world in which we have control over everything, we can indeed decide that a given blockchain where NFTs are recorded is a source of truth. Technically, it works. The virtual world can completely prevent participants who are not identified as owners of an NFT to benefit from the associated object. The company which builds the game, through the implementation of the virtual world (that is, the rules that they write in its source code), plays the role of the centralized third-party that has absolute power to make whatever they want true, and thus among other things what is written on a given blockchain. If the company changes its mind, the truth in the virtual world changes with it… And again, it is even more stupid. Contrary to what has regularly been said on the subject, it would absolutely not allow the transfer of items from one virtual world to another if this is not intended in the source code of both virtual worlds: if a game does not have code to display a yellow hat on your avatar, even if you own an NFT associated with the idea of a yellow hat in another game, you wont be able to add a yellow hat to your avatar in this game even if the game takes into account the blockchain where that NFT is recorded. NFTs cannot be used to build a “second hand” market of items between players of a same virtual world either if the virtual world does not implement the possibility of ownership transfer (which it could perfectly decide to allow but only with a tax, for example). To sum up, anything other than a speculative market of (re)selling fake property deeds to gullible buyers depends entirely on the will of the centralized entity that controls the virtual world. Therefore, we are dealing with centralized systems, where there is no advantage to use NFTs, or a blockchain. Technically, there a many disadvantages: it will cost more resources and be less efficient than a simple database to achieve the same results.

Notes

  1. ^ I talk about paper here to emphasize my point, but the criticism remains the same in the digital world, with technologies that we could use instead of a blockchain, whether they are distributed (Git repository, DHT, etc.) or centralized (like a good old fashioned database).
  2. ^ We are talking about the exchange value on a scarcity-based market here, assuming a strong demand. The use value of these objects obviously has no reason to change because they are numbered…
  3. ^ It is possible to create artificial scarcity on digital objects, but NFTs are unable to do that. Only DRMs (“digital rights maganement”) can do that, but they are historically a huge failure at the technical level, and absolutely can’t work without a trusted third-party anyway, which annihilates again the potential interest of NFTs.
  4. ^ Wars for land in human societies, fight (or just pee that smells stronger ^^) in animal communities, for example.
  5. ^ In animals that mark their territory, for example, most other species (at least those with no predatory or cooperative relationship) probably don’t care about territory markers, if they are even capable of interpreting them. The same is true for our fences and borders (otherwise we could issue laws to forbid mosquitoes to enter our lands).
  6. ^ The idea developed in this paragraph is explored in more details in the aforementioned post: The Truth on the Blockchain.
  7. ^ Only a link, not even a cryptographic hash of the object which would allow to ensure its integrity… Except in some rare cases where the link points to an IPFS identifier, but that does not solve any other problem.

The Truth on the Blockchain

This is an english translation of my post entitled “La vérité sur la blockchain”.

For a few years now, blockchains have been so hyped that they have been put to all sorts of uses. Blockchain-based projects are multiplying without any consideration for the actual necessity of a blockchain for these projects. It seems that this is entirely due to a fashion effect (itself the result of a blinded technological solutionism ideology), and to the subsequently available fundings…

Mostly, these projects consist in recording information on a blockchain and claiming that doing so provides some form of guarantees. For example, we regularly see projects that aim at putting traceability, notarized deeds, or even diplomas in a blockchain, claiming that doing so will ensure the security and the validity of these information while allowing disintermediation.

It is important to understand that the goal of a blockchain is to achieve distributed consensus[1]. That is, to allow a set of autonomous systems to agree on a common information, 1- without the need for any centralized authority, and 2- in an adversarial context (nobody trusts anyone). When this specific need is not a requirement, there is no need for a blockchain.

This said, it is already quite obvious that many blockchain-based projects do not make any sense, starting with all those which are built around a permissioned or a centraly controlled blockchain, but also all those which aim at bypassing the need for a central authority even though this third-party is intrinsically necessary.

Let’s take the example of diplomas. An official dipoma is necessarily delivered by some state-authorized higher education institution, typically a univesity. Recording diplomas on a blockchain thus makes no sense since only the institution which delivered a given diploma can certify it’s authenticity. This means that there is a central authority that is essential for the certification of the diploma, without any regard for how the diploma exists, whether it is as a piece of cardboard paper or in a digital form. Therefore, there is no need for a blockchain, and actually it happens that using one is counter-productive. If digital certification of diplomas is useful, it is possible to do so more effectively and less expensively without a blockchain (and we know perfectly how to implement it: this is how we manage TLS certificates, which are used for secure HTTP connections, for example).

The thing is, the problem with blockchain-based projects is actually more profound. What many people do not seem to understand (or do not want to), is that, as a rule, what is recorded on a blockchain has no truth value in the real-world, if it is not enforced by an external authority. In the exact same way that a contract written on a sheet of paper only has a meaning and value as long as all parties agree to it, or as long as there is a third-party that has the ability to coerce recalcitrant parties to honor the contract.

The only truth that is guaranteed by the recording of a given information on a given blockchain, is that this particular information is written on this particular blockchain.

Thus, writing an information on a blockchain is only interesting if it is the writing itself that defines the truth. That is to say that it is a performative writing. It is the case with cryptocurrencies, where the balance of a given wallet[2] is computed from the transactions written on that cryptocurrencies’ blockchain, i.e., where the truth (for a very local notion of truth that only exists “inside” the said blockchain) is defined by what is written.

We must not confuse what we write because we have has decided (otherwise) that it is true, and what is true because it is written.

Apart from cryptocurrencies, I have never seen any other example of justified[3] use of a blockchain. For good reasons: we just demonstrated that as soon as what is recorded on a blockchain concerns something that is external to this blockchain, then the use of a blockchain adds strictly no more guarantee than writing on a sheet of paper. Therefore, in such situations, blockchains can only be a replacement for paper and for paper only (a replacement that is less practical, less efficient, more expensive, more polluting, less respectful of privacy, etc.). Hence, all the institutions and authorities that exist and are necessary to give any meaning and value to the sheet of paper are still necessary. By using a blockchain, one pays the cost of decentralization in a trustless environement, without having decentralized anything at all nor eliminated any need for trust.

UPDATE (june 2022) : More than 1500 experts warn against the use of blockchains and more broadly of crypto-assets in an open letter to the US Congress: https://concerned.tech/.

Notes

  1. ^ Note that the meaning of “consensus” here is specific to computer science. It does not mean that all participants wishfully agrees with an idea like the common political notion of consensus means, it only means that all the participants see the same thing, whether or not they’re politically ok with it.
  2. ^ Here too the the vocabulary is particularly misleading: in the real-world a wallet is actally decentralized and does not work at all like it does in the digital cryptocurrencies world. We should really be speaking of “accounts” rather than “wallets”.
  3. ^ By that I do not mean that the existence of cryptocurrencies is justified, I’m only saying the cryptocurrencies as they exists indeed necessitate a blockchain.

dimanche 23 janvier 2022

Lecture : “Pirates de tous les pays”

Un très court billet juste pour tenter de vous donner envie de lire un de mes bouquins préférés, à la façon d’une courte recommandation de presse :

Vous avez en tête cette image d’un pirate avec une jambe de bois et un crochet à la place d’une main, et pourtant de personne d’autre dans cet état à la même époque ? C’est normal : au début du 18ème siècle, la norme, c’était plutôt de ne pas survivre à ce type d’accident… Sauf que les pirates, ils avaient déjà inventé la Sécu !

Dans Pirates de tous les pays, Marcus Rediker nous fait partir à la découverte des légendes, des idéaux, et surtout des pratiques concrètes des équipages pirates, qui comptent parmi les premières sociétés organisées anti-étatistes, internationalistes, égalitaires, anti-autoritaires, et autogestionnaires.

Ce voyage dans l’âge d’or de la piraterie atlantique (1716–1726) est d’autant plus appréciable que le livre réussit à avoir la rigueur d’un travail universitaire (grâce aux journaux de bord et aux minutes de procès en particulier, tout est sourcé !), tout en restant très accessible au grand public. Un avantage conservé dans la très bonne traduction française proposée ici par les éditions Libertalia.

jeudi 20 janvier 2022

NFT : encore plus stupide

Le singe fume sa cigarette
NFT ‘21 ou album de rap ‘12 ?

L’objectif d’un NFT est d’établir un titre de propriété. L’idée est de certifier une association entre une identité numérique (le propriétaire) et un objet (la propriété, le plus souvent numérique également), et d’utiliser la technologie de la blockchain pour stocker et distribuer ce certificat de propriété.

Ça commence mal : les personnes qui prétendent utiliser une blockchain pour établir des titres de propriétés mentent ou ne savent absolument pas de quoi elles parlent. Cela a été établi dans un précédent billet (dont je vous conseille la lecture avant celui-ci) où j’expliquais qu’une blockchain ne peut pas servir de source de vérité pour quoi que ce soit qui ne soit pas intrinsèquement “dans” ladite blockchain. Cette technologie n’a donc aucun avantage par rapport au papier[1], mais a par contre beaucoup d’inconvénients que le papier n’a pas (consommation énergétique, transactions acentrées impossibles, etc.).

Ce que prétendent apporter les NFT, c’est la décentralisation et l’absence de la nécessité de tiers de confiance. Cela suffit en soi à discréditer complètement l’idée des NFT, puisqu’il s’agit de titre de propriété sur une blockchain et que justement, l’utilisation d’une blockchain ne permet en réalité aucune décentralisation ni aucune suppression du besoin de confiance comme cela est démontré dans le billet cité précédemment. Mais comme l’indique le titre de ce billet : les NFT sont encore plus stupides.

NFT signifie “non-fungible token”, c’est à dire “jeton non-fongible” : il s’agit d’un morceau d’information non interchangeable, par opposition aux unités de cryptomonnaies par exemple. Quand on a 1 bitcoin, on a 1 bitcoin n’importe lequel, ils sont tous équivalents, au sens strict d’avoir la même valeur. Chaque NFT est unique et identifiable. Un billet de 10€ vaut la même chose que n’importe quel autre billet de 10€ (ou que n’importe quel ensemble de pièces et billets qui valent 10€) : les euros sont fongibles. En revanche si on décide que les billets de 10€ n’ont plus cours mais qu’on les garde et qu’on ouvre un marché des billets de 10€ où chacun est unique et identifié par son numéro de série, alors je peux espérer vendre plus cher mon billet numéroté 198357 que celui numéroté 840414 par exemple en disant que c’est un nombre premier et qu’il y a un nombre limité de tels billets (ce qui est faux puis stupide, mais je peux le dire quand même…).

Cette idée illustre ce qu’on entend par “non-fongibilité”. C’est ça qui fait que numéroter des objets en quantité limité augmente leur valeur[2] : non seulement ils sont rares mais en plus ils sont maintenant uniques puisque chacun a un numéro différent. Mais dans le cas des NFT, c’est encore plus stupide : des NFT, absolument rien n’empêche d’en créer plusieurs (et même autant qu’on veut) pour exactement le même objet (donc il peut y avoir plusieurs certificats de propriété pour une même œuvre), et n’importe qui peut en créer pour n’importe quoi (donc aucune garantie que la personne qui crée ou vend un NFT ait des droits sur la propriété de l’objet associé). Tout se passe comme si un même billet de 10€ (au sens de l’objet physique, nécessairement unique) pouvait avoir une infinité de numéros de série, et que c’est à ces numéros de série qu’on attribuait de la valeur, et potentiellement des valeurs différentes à chacun. Oui oui, ça n’a absolument aucun sens.

En fait c’est même encore plus stupide : l’objet associé à un NFT est généralement un objet numérique, dont la rareté n’existe donc pas[3] puisqu’il est transmissible par copie (par opposition à mon billet de 10€ que je n’aurais forcément plus en ma possession quand je l’aurais transmis à quelqu’un·e d’autre). Cela signifie que l’objet associé au NFT (et qui manifestement contribue à sa valeur sur le marché alors qu’on a déjà vu au paragraphe précédent que ça ne fait pas sens) peut lui même être répliqué infiniment. Cela peut sembler évident mais on a vu vraiment beaucoup de cas de personnes ayant acheté une image en NFT pour l’utiliser comme photo de profil sur des réseaux sociaux et traitant de voleurs les personnes qui récupéreraient cette image par un simple clic droit puis “enregistrer l’image sous…”, par exemple.

Toutes ces critiques sont déjà valides en admettant encore l’idée qu’un NFT serait effectivement un titre de propriété, mais en réalité c’est encore plus stupide. En principe, du moins du point de vue des défenseurs de cette technologie, posséder un NFT associé à l’objet (numérique ou non) X permet de dire « Je suis le propriétaire officiel de X, j’ai un certificat qui le prouve. ». Sauf que la notion propriété n’a absolument rien de naturelle, elle n’existe pas autrement que comme une construction sociale. La propriété peut résulter d’un rapport de force “brute”[4] ou d’un accord commun, mais dans tous les cas, il s’agit d’une forme de violence. Dans le premier cas le rapport de force doit être renouvelé sans arrêt. Dans le second cas il est nécessaire qu’une forme d’autorité extérieure fasse respecter l’accord aux différentes parties (avec un pouvoir de sanction en cas de non respect, ou un pouvoir absolu de contrainte). Et dans les deux cas, la notion de propriété n’existe et n’a de sens que pour la communauté concernée[5]. Bref, un titre de propriété n’a aucune valeur dans l’absolu si il n’y a pas une autorité tierce qui le fait appliquer, et lui donne par là même sa valeur. C’est vrai quand le titre de propriété prend la forme d’un bout de papier, mais c’est vrai aussi quand il prend la forme d’un NFT. En écrivant dans une blockchain que tel personne est propriétaire de tel objet, on a absolument rien fait de plus que si on avait écrit cette même affirmation sur du papier : ça n’a absolument aucune valeur tant qu’il n’y a pas une autorité tierce qui fait appliquer, qui rend vrai, ce qui est écrit[6]. Exit donc une fois de plus l’idée de décentralisation ou de désintermédiation…

Mais accrochez-vous car ce n’est pas fini : l’association d’un objet à un NFT ne se fait généralement pas directement sur la blockchain pour des raisons techniques (pour les objets physiques — montres de luxe, œuvres d’art, etc. — c’est évident ; et les objets numériques sont trop volumineux pour ça). Notez bien que même dans les très rares cas où l’objet est enregistré sur la blockchain, tout ce qu’on a dit jusque là s’applique parfaitement. Ce qui est stocké sur la blockchain est en fait le plus souvent un lien vers une page web[7] qui pointe à son tour vers l’objet associé au NFT. Ce qui signifie qu’on perd toute idée de décentralisation (qui est la raison d’être de cette technologie — même si cette croyance n’est que le fruit d’une énorme incompréhension comme on l’a déjà vu) puisqu’une plateforme centralisée est nécessaire pour faire le lien entre le NFT et l’objet associé. C’est déjà assez affligeant mais en fait c’est encore plus stupide : du fait de la centralité de ce tiers de confiance imposé, le NFT lui même est sujet au risque de pointer vers un lien mort dans le meilleur des cas (par exemple si le site de la plateforme disparaît ou change d’adresse). Mais cela peut être pire : le site pourrait se faire pirater ou simplement être remplacé plus tard par un autre qui ferait des associations fantaisistes, afficherait de la pub, tenterait d’infecter ses visiteurs avec des virus, ou se contenterait tout simplement de troller.

Il est donc assez clair que la technologie des NFT est purement et entièrement du vent et n’a aucune application sérieuse possible (en dehors d’enrichir les plus hauts étages d’une pyramide de Ponzi tout en accélérant le réchauffement climatique). Regardons tout de même de plus près le cas d’usage non purement spéculatif qui semble être le plus souvent mis en avant par les défenseurs de cette technologie : son utilisation dans un metavers ou le domaine du jeu vidéo (je vais parler de “monde virtuel” de façon général) pour des marchés d’accessoires “in game”.

Ce qui fait que cette idée semble fonctionner, c’est que dans le cas d’un monde virtuel dont on contrôle tout, on peut effectivement décider que la blockchain sur laquelle on enregistre les NFT est une source de vérité. Techniquement, ça fonctionne. Le monde virtuel peut complètement empêcher les participant·es qui ne sont pas identifié·es comme propriétaires d’un NFT de bénéficier de l’objet associé à celui-ci. L’entreprise qui édite le jeu, au travers de l’implémentation du monde virtuel, c’est à dire des règles écrites dans son code source, a ici le rôle de l’autorité tierce et centralisée qui a le pouvoir absolu de rendre vrai ce qu’elle veut, et donc entre autre ce qui serait écrit sur une blockchain. Si l’entreprise change d’avis, la vérité dans le monde virtuel change avec… Et c’est même encore plus stupide. Contrairement à ce qu’on peut régulièrement lire sur le sujet, cela ne permettrait absolument pas de transférer des objets d’un monde virtuel à l’autre si ce n’est pas prévu dans le code des mondes virtuels en question : si un jeu n’a pas prévu de code pour afficher un chapeau rouge sur votre avatar, vous ne pourrez pas y afficher un chapeau rouge sur votre avatar, même si vous être le “propriétaire” d’un NFT associé à l’idée d’un chapeau rouge et que le jeu prend en compte la blockchain sur laquelle c’est le cas par ailleurs. Les NFT ne permettent pas non plus un marché de revente d’objets entre joueur·ses au sein d’un même monde virtuel si celui-ci ne prévoit pas la possibilité de transfert de propriété (ce qu’il pourrait décider de ne faire qu’avec une taxe par exemple…). Bref, tout ce qui relèverait d’autre chose que du marché spéculatif de (re)vente de faux titres de propriété à des acheteurs crédules dépend entièrement de la volonté de l’entité qui contrôle le monde virtuel. On est donc bien dans un système entièrement centralisé, et il n’y a aucun avantage à utiliser des NFT et donc une blockchain pour ça. Techniquement il y a même de nombreux désavantages : ce sera plus coûteux en ressources et moins efficace qu’une simple base de données pour arriver au même résultat.

Mise à jour (22/01/2022) : il a été porté à mon attention que le terme “débile” est problématique car il semble être encore beaucoup attaché aux handicaps cognitifs, j’ai donc pris la décision de le remplacer par “stupide” qui a la même signification sans être validiste.

Notes

  1. ^ Je parle de papier un peu pour forcer le trait, mais la critique reste la même dans le monde numérique, avec les technologies qu’on utiliserait à la place d’une blockchain, qu’elles soient distribuées (dépôt Git, DHT, etc.) ou centralisées (comme une base de données tout à fait classique).
  2. ^ On ne parle ici que de valeur d’échange sur un marché de la rareté et en supposant une demande forte. La valeur intrinsèque, la valeur d’usage de ces objets, n’a évidemment aucune raison de changer parce qu’ils sont numérotés…
  3. ^ Il est possible d’essayer de créer de la rareté artificiellement sur des objets numériques, mais les NFT sont incapables de ça. La seule chose qui le permet sont les DRM (“digital rights maganement” ou MTP en français pour “mesures techniques de protection”), qui sont historiquement un échec cuisant au niveau technique, et qui ne peuvent absolument pas fonctionner sans tiers de confiance par ailleurs, ce qui annihile encore une fois l’intérêt potentiel des NFT.
  4. ^ Guerre de territoire dans les sociétés humaines, combat (ou juste pipi qui sent plus fort ^^) dans certaines communautés animales, par exemple.
  5. ^ Chez les animaux qui marquent leur territoire par exemple, la plupart des autres espèces (en tout cas celles avec qui il n’y a pas de rapport de prédation ou de coopération quelconque) n’ont probablement rien à faire des marqueurs de territoire, si tant est qu’elles soient capables de les interpréter. Il en va de même pour nos barrières et nos frontières (sinon on ferait des OQTF aux moustiques).
  6. ^ L’idée développée dans ce paragraphe est détaillée dans le billet évoqué plus haut : la vérité sur la blockchain.
  7. ^ Et seulement un lien, même pas de condensat cryptographique de l’objet permettant de s’assurer de son intégrité… Sauf dans quelques rares cas où le lien est un identifiant IPFS, mais ça ne change rien aux autres problèmes.

vendredi 7 janvier 2022

La nécessité de la preuve de travail (ou d'enjeu)

Je disais dans le billet précédent sur l’utilisation malheureuse du mot “portefeuille” dans le cadre des cryptomonnaies que tout ce qui y est détaillé sur le fonctionnement des transactions sur une blockchain ne suffisait pas à justifier la nécessité de la preuve de travail ou d’enjeu. Je sous-entendais par là que l’immuabilité dont je venais de parler n’était pas une exigence suffisante, contrairement à ce qu’on entend le plus souvent[1].

En effet pour justifier la nécessité de la preuve de travail ou d’enjeu, on voit généralement que c’est justement ça qui fait l’immuabilité du registre, car cela rend trop coûteux les calculs nécessaires à la modification d’un bloc passé. Pourtant c’est faux : d’une part ça ne serait vrai que pour la preuve de travail et pas pour la preuve d’enjeu, et d’autre part ce qui fait l’immuabilité n’est pas tant le coût de la preuve de travail que l’impossibilité[2] de faire la modification discrètement, de manière à ce que la chaîne reste compatible avec celle qui est déjà connue des participants.

Quelle nécessité de la preuve de travail ou d’enjeu alors ? Elle tient à deux contraintes : 1- l’absence totale (voulue) de tiers de confiance, et 2- le fait que n’importe qui doive potentiellement pouvoir participer (par opposition à une liste d’agents identifiés dès le départ), ce qui implique l’impossibilité de faire confiance à l’ensemble des participants.

La première contrainte à elle seule nécessite que toute la valeur (au sens monétaire) soit contenue intrinsèquement dans le système[3], et donc même qu’elle y soit créée. Cela implique donc d’avoir un moyen de limiter/contrôler la vitesse de création de cette valeur sortie de nulle part. Si on rajoute la seconde contrainte, il faut également un moyen de répartir cette valeur aléatoirement, c’est à dire équitablement, de sorte à ce que tout le monde soit d’accord sans avoir à faire confiance aux autres. En effet cette seconde contrainte rend impossible de mettre en place un système de répartition totalement égalitaire de la valeur créée, de distribuer à tour de rôle suivant un ordre prédéfini, ou autre solution plus simple et moins coûteuse (puisqu’on ne connaît pas à l’avance les participants et qu’ils ne se font pas confiance).

Tout cela mis bout à bout fait qu’il est nécessaire de résoudre le problème du consensus distribué[4] dans une des pires situations possibles (cf le billet sur la notion consensus dans le cadre des blockchains), et c’est de là, et uniquement de là, que vient réellement la nécessité de la preuve de travail ou d’enjeu.

Cela signifie notamment que, si on a pas ces deux contraintes, on a pas besoin de preuve de travail ou d’enjeu (et donc, selon la définition qu’on en prend, qu’on a pas besoin de blockchain).

Notes

  1. ^ AJOUT (05/02/2022) : j’ai depuis rédigé un billet qui revient en détail sur ce qui fait l’immuabilité d’une blockchain.
  2. ^ Impossibilité liée non pas au coût de la preuve de travail (même quand elle est utilisée) mais à celui de trouver une collision, qui lui est très nettement supérieur.
  3. ^ Un tiers de confiance pourrait distribuer la cryptomonnaie, et celle-ci pourrait même correspondre à un autre actif comme une monnaie fiat si ce tiers de confiance gère également cet autre actif (une banque centrale par exemple).
  4. ^ C’est à dire devoir mettre tous les participants d’accord sur l’un d’eux au hasard sans disposer d’aucun agent qui puisse jouer le rôle de “chef d’orchestre”.

jeudi 6 janvier 2022

Vocabulaire : portefeuille

Dans le milieu des cryptomonnaies, ce qui est appelé un portefeuille (wallet en anglais) est un dispositif qui sert à stocker et gérer une paire (ou dans certains cas, des paires) de clefs cryptographiques : grossièrement, une clef publique qui permet de recevoir de la cryptomonnaie, et une clef privée qui permet de la dépenser.

Le terme de “portefeuille” est particulièrement mal choisi. En effet, vu ce qu’est un portefeuille dans la vraie vie, cela encourage à l’abus de langage qui consiste à parler de cryptomonnaie stockée “dans” un portefeuille. Par métonymie on voit aussi parfois appelée “portefeuille” une clef publique (qui est l’identifiant à qui on peut transférer de la cryptomonnaie et de qui on peut en recevoir). On peut d’ailleurs voir un exemple typique de ça dans sur la page Wikipédia dédiée, qui parle de Bitcoin stockés dans des portefeuilles alors que littéralement deux phrases plus tôt il était précisé que les cryptomonnaies ne sont pas stockées dans les portefeuilles… :

Capture de la page wikipédia “Portefeuille de crypto-monnaie” le 5 janvier 2022.
Capture de la page Wikipédia “Portefeuille de crypto-monnaie” le 5 janvier 2022.

Ce soucis était présent sur Wikipédia depuis le 3 août 2021, donc déjà 5 mois au moment où j’ai consulté la page (et où j’en ai donc profité pour la corriger, en annulant simplement la modification qui rajoutait cette dernière phrase du paragraphe d’introduction, fausse et inutile).

Littéralement, un “porte-feuille” contient, physiquement, de l’argent liquide (des billets, en papier, des feuilles quoi). Une transaction entre portefeuilles consiste donc en le déplacement physique d’un objet d’un portefeuille à l’autre. La transaction ne nécessite que la présence des deux portefeuilles. Le système de transaction est non seulement décentralisé mais aussi acentré : il ne possède pas du tout de centre, une transaction s’effectue directement de pair à pair et de façon totalement discrète/anonyme vis-à-vis du système global.

Bien que cette description ressemble beaucoup aux discours qu’on peut entendre au sujet des cryptomonnaies (“décentralisé”, “anonyme”), ce n’est en fait pas du tout comme ça qu’elles fonctionnent !

Plutôt que de “portefeuille” on devrait parler de “compte”, au sens de compte bancaire, pour éviter cette confusion.

Un “compte” (en banque) c’est un identifiant auquel on associe un solde. Une transaction entre deux comptes consiste à soustraire au solde du compte émetteur le montant de la transaction et à l’ajouter au solde du compte destinataire. Cette fois-ci le système de transaction ne peut pas être acentré, du moins si on ne veut pas que n’importe qui puisse créer de la monnaie sortie de nulle part (et clairement, on veut pas), et il y a un certains nombres de critères à respecter :

  • [validité] lors d’une transaction de montant X du compte A vers le compte B, il faut que le solde de A soit supérieur ou égal à X ;
  • [double dépense] en plus de ça, il ne faut pas non plus que, simultanément, A puisse faire une transaction de montant Y vers le compte C si le solde de A n’est pas supérieur ou égal à X + Y (alors que prises séparément les deux transactions pourraient valider la première condition) ;
  • [cohérence] et bien sûr après chaque transaction il faut s’assurer que le montant qui a été ajouté au solde du compte destinataire a bien été soustrait de celui du compte émetteur.

Il faut donc, d’une manière ou d’une autre, un centre qui fasse (ou qui permettent de faire) ces vérifications.

Dans le cas des comptes bancaires, le système de transaction est un mix entre une version centralisée et une version fédérée : il n’y a pas qu’une seule banque donc ce n’est pas littéralement un système centralisé, mais pas n’importe qui peut créer une banque qui vient se greffer au réseau en étant immédiatement interopérable avec les banques existantes comme on s’attendrait à ce que ce soit le cas dans un système réellement fédéré. Dans le système bancaire, le centre (les banques) est en charge de faire les vérifications, et les données sont opaques pour les utilisateurices des comptes.

Dans le cas des cryptomonnaies, il y a aussi un centre, mais il est distribué grâce à une blockchain qui n’est rien d’autre qu’un registre public de toutes les transactions depuis le début du système. La charge des trois vérifications citées plus haut (dont j’ai inventé les noms pour les besoins de ce billet) est répartie comme suit :

  • [validité] chaque participant au réseau connaît l’état du registre et donc peut recalculer le solde de chaque compte (en partant de zéro et en ajoutant les montants des transactions vers ce compte et en retirant les montants des transactions depuis ce compte), donc chaque fois qu’un nouveau bloc est reçu, chaque participant peut vérifier si il ne contient que des transactions valides, et ignorer le bloc dans le cas contraire ;
  • [double dépense] si deux transactions dans un même bloc ne respectent pas cette règle c’est un problème de validité et on en revient au point précédent, si elles ne sont pas dans le même bloc alors soit elles ne sont pas simultanées (et on en revient à la validité si le registre est immuable, cf ci-dessous), soit les deux blocs arrivent en même temps et seul l’un des deux pourra être choisi par le réseau pour continuer la chaîne (chaque nouveau bloc dépend directement du précédent, il ne peut y avoir deux précédents, cf ci-dessous également) ;
  • [cohérence] enfin, concernant la cohérence, elle est “gratuite” car comme expliqué ci-dessus, le solde d’un compte n’est écrit nulle part il est calculé depuis la liste des transactions qui concernent le compte.

Immuabilité. Tout cela suppose que l’ensemble des participants voient le registre dans le même état et qu’une fois écrit celui-ci est immuable, c’est à dire qu’on ne puisse pas effacer ou modifier des transactions discrètement dans le registre. C’est pour cette raison que le registre est basée sur une structure de chaîne de blocs : l’identifiant de chaque bloc dépend cryptographiquement de l’intégralité de son contenu ainsi que de l’identifiant du bloc le précédant dans la chaîne, de sorte que modifier le contenu d’un bloc implique la modification de son identifiant et du coup de tous les blocs qui le suivent dans la chaîne.
AJOUT (05/02/2022) : un nouveau billet revient en détails sur ce qui fait l’immuabilité d’une blockchain.

On remarquera ici que malgré toutes les explications techniques que l’on vient de faire, on a pas expliqué, et encore moins justifié, la nécessité de la preuve de travail (ou d’enjeu) dans le cas des cryptomonnaies, mais ce sera l’occasion d’un autre billet !
AJOUT (07/01/2022) : voilà le billet qui revient sur la nécessité de la preuve de travail (ou d’enjeu).

Pour cette fois-ci, on s’arrêtera sur l’idée que dans le cadre des cryptomonnaies, ce qu’on voit appelé un “portefeuille” devrait soit être un “compte” soit un “gestionnaire de compte” ou encore un “client” (au sens réseau, comme on peut parler d’un “client BitTorrent” par exemple), sinon, on laisse penser à tort qu’on aurait affaire à un équivalent numérique de la monnaie fiduciaire alors qu’il s’agit, au mieux[1], de monnaie scripturale.

Pour un véritable portefeuille numérique et décentralisé, il semble qu’à l’heure actuelle la seule option soit Taler, et cette technologie n’est pas basée sur une blockchain[2].

Notes

  1. ^ Je précise “au mieux”, car il n’est pas si clair que l’on a réellement affaire à quelque chose qu’on peut légitimement appeler une monnaie (en tout cas, là aussi le vocabulaire peut/doit être sujet à débat).
  2. ^ Je réfléchissais déjà au sujet d’un système de transactions acentré dans un article publié dans Alternative libertaire n°319 (septembre 2021) : Contrôle, surveillance, et monnaie numérique.

mercredi 5 janvier 2022

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.

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 : soit parce qu’ils ont un intérêt à l’une deux deux soit au hasard. Quoi qu’il en soit celle qui gagnera sera en pratique celle par dessus laquelle la prochaine solution sera trouvée, même si elle était minoritaire parmi les participants.

lundi 25 octobre 2021

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.

lundi 7 juin 2021

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.

MISE À JOUR (juin 2022) : Plus de 1500 experts mettent en garde contre l’usage des blockchains et des crypto-actifs de manière générale dans une lettre ouverte adressée au Congrès États-Unien : https://concerned.tech/.

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.

vendredi 4 juin 2021

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 2 de 2 -