Mot-clé : blockchain

lundi 24 janvier 2022

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.

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.

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 (les objets 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 le 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.

- page 2 de 3 -