A
A

Ordinaux - Amélioration ou Attaque ?

sam 25 Fév 2023 ▪ 15 min de lecture ▪ par Nicolas T.
Apprendre Blockchain

Après réflexion, le scepticisme diplomate envers les ordinaux ne serait-il pas une erreur ?

Ordinaux JPEG

De quoi parlons-nous exactement ?

[Article basé sur celui de @max_money_21M]

Personne n’avait jamais entendu parler des ordinaux il y a encore un mois. Il s’agit d’un nouveau mot popularisé pour décrire des JPEG soi-disant « reliés » à des satoshis « uniques » via des « inscriptions ». Un genre de NFT qui serait immanent au Bitcoin.

Balivernes. Les satoshis sont en vérité absolument fongibles. Ils sont aussi fongibles que des pièces d’or que l’on fondrait ensemble pour en frapper de nouvelles. Impossible de dire comment les atomes se sont redistribués dans les nouvelles pièces, et il en va de même pour les satoshis.

Le protocole Bitcoin ne fait aucun lien entre un satoshi apporté en input d’une transaction et un satoshi particulier ressortant en output. Le concept de « satoshi spécifique » n’existe pas.

Un UTXO (des satoshis) apporté en input peut être comparé à un lingot d’or. Une transaction prend en input plusieurs UTXO, « les fait fondre », puis coule de nouveaux lingots d’or qui sortent en output.

Vous conviendrez qu’il serait très difficile de savoir quels atomes se trouvent dans quel lingot. Très dur, encore que théoriquement possible. Avec les satoshis, ce n’est même pas théoriquement possible. Les anciens UTXO disparaissent lors de la transaction. Seuls les nouveaux UTXO sont gardés en mémoire par les nœuds. Dit autrement, les satoshis sont fongibles.

[Un peu désorienté par ce jargon anglais des « UTXO, inputs et output » ? Rendez-vous sur le blog de Bitsamp pour une explication rapide].

Les ordinaux sont en définitive un moyen de simuler des satoshis non fongibles. C’est-à-dire ayant une propriété qui les distinguerait des autres.

Ce tour de passe-passe se fait par convention, en attribuant virtuellement un numéro à chaque satoshi. Chaque satoshi est numéroté en fonction de l’ordre du bloc dans lequel il fut créé originellement.

Par exemple, le tout premier bloc miné par Satoshi Nakamoto a créé 50 bitcoins, soit l’équivalent de cinq milliards de satoshis. D’après la convention décrétée par le créateur des ordinaux, les « cinq milliards de satoshis » sont numérotés 0, 1, 2, 3… jusqu’à 4 999 999 999. Puis de 5 000 000 000 à 9 999 999 999 pour les satoshis du second bloc, et ainsi de suite.

Après avoir attribué des numéros à chaque satoshi fraichement créé, le système de numérotation réaligne les satoshis virtuels après chaque transaction. Il est ainsi possible de les « cartographier conceptuellement » un à un puisque la quantité de satoshis en input d’une transaction est toujours égale à celle en ouput.

Mais c’est évidemment un non-sens puisqu’une transaction n’affiche aucune information permettant de savoir quels satoshis sont allés où. Il s’agit d’un système de numérotation virtuel, factice et extérieur au protocole Bitcoin.

Il n’y a pas de « satoshis NFT ». Vous ne pouvez pas attacher des données à un satoshi via une « inscription ». Pas plus que vous ne pouvez accrocher un Jpeg sur un seul atome d’or situé à l’intérieur d’une barre d’or.

Les « inscriptions »

Les inscriptions sont le fait d’insérer des données arbitraires (généralement des jpegs très moches) dans les blocs du réseau Bitcoin. Le Jpeg s’insère en réalisant une transaction BTC. Il est inscrit plus spécifiquement dans une section appelée « witness » dont nous parlerons plus tard.

Bien sûr, il a toujours été possible d’insérer un peu de donnée arbitraire dans la blockchain. Satoshi l’a fait dans la section appelée « coinbase » pour inscrire « The Times 03/Jan/2009 Chancellor on brink of second bailout for banks ». Mais il s’agit là d’une simple phrase de quelques octets et non pas d’un jpeg une centaine de milliers de fois plus volumineux.

Ces inscriptions sont faisables depuis la récente mise à jour Taproot qui a supprimé certaines limitations antérieures. Il est désormais possible d’entrer jusqu’à 400 000 octets dans une seule transaction. Soit 10 % de l’espace d’un seul bloc.

Cela dit, bien que les nœuds ne relaient pas de transactions de plus de 400 000 octets, il est possible de s’adresser directement aux mineurs. Ces derniers peuvent créer un bloc contenant une seule transaction de quasiment 4 millions d’octets (la taille maximale d’un bloc depuis la mise à jour SegWit). Nous y reviendrons.

Bref, l’idée est que le jpeg « inscrit » sera virtuellement relié au premier satoshi du premier output de la transaction. Les inputs et les ouputs d’une transaction contenant un jpeg pouvant être « alignés » selon la méthode des ordinaux, il est conceptuellement possible de garder leur trace.

L’inventeur de cette classification veut croire que le marquage fictif des satoshis fait de ces derniers des NFT. Il s’agit de prétendre que l’inscription sur un satoshi « unique » est réelle, et que ce numérotage serait un lien tangible ancré physiquement dans le Bitcoin.

Nous sommes en vérité en présence d’une interprétation abstraite des données. Tout se fait de manière absolument étrangère au protocole Bitcoin.

Maintenant que nous avons clarifié la fausseté de l’existence de « satochis uniques », voyons en quoi les ordinaux sont une attaque contre le Bitcoin.

Attaque au Jpeg

Parfois, un programme informatique présente une vulnérabilité, un bug permettant de faire quelque chose d’imprévu, de non voulu. Si cette vulnérabilité est exploitée par un acteur malveillant, c’est une attaque.

Dans le cas des ordinaux et des inscriptions, aucun nœud Bitcoin ne s’attendait à télécharger et relayer des JPEG. L’exploitation de cette vulnérabilité peut donc être considérée comme une attaque. Un bug inattendu, s’il pose problème, doit être réparé. Bitcoin ne fait pas exception.

Pour @max_money_21M, « les ordinaux sont une technique d’ingénierie sociale permettant de propager cette attaque ».

Les ordinaux sont utilisés pour convaincre des personnes naïves qu’il serait possible de distinguer des satoshis par une propriété unique. Ce qui est faux. Personne ne doit croire qu’il achète un satoshi particulier faisant office de révolutionnaire « NFT Bitcoin ».

Je n’écrirais pas cet article si tout cela n’avait aucune conséquence. Mais ce n’est pas le cas. Voici les principaux problèmes soulevés par les ordinaux :

  • Croissance prématurée de la taille des blocs
  • Normalisation des collusions avec les mineurs
  • Renforcement de l’amalgame entre le Bitcoin et les arnaques (NFT, shitcoins, etc) dans la conscience populaire

Avant de passer chaque point en revue, je recommande vivement la lecture du livre « The blocksize war » qui raconte la plus grande crise traversée par le Bitcoin.

Cette crise se solda par un schisme et la création de Bitcoin Cash, un hard fork du Bitcoin. Son but étant de traiter plus de transactions à la seconde grâce à des blocs de transactions plus volumineux.

Sans succès puisque la majorité s’est rangée derrière l’idée qu’une blockchain trop volumineuse signerait la fin de la décentralisation. La mise à jour SegWit fut également déterminante en modifiant la taille des blocs de 1 Mo à 1 vMo.

Le v signifie « virtuel ». L’astuce est que certaines données d’une transaction (celles non essentielles aux yeux de tous les nœuds) comptent pour un nombre différent d’octets virtuels. La règle est que 1 octet se situant dans la section witness pèse 0,25 vO (octet virtuel). Et 1 octet de données hors de la section witness pèse 1 vO.

Il est possible d’illustrer les choses avec un chèque. Le nom du bénéficiaire, le montant, la date ou encore la signature sont « hors witness ». Alors que d’autres données non essentielles comme le nom de la banque, le logo de la banque, le design du chèque vont se trouver dans la section « witness ».

En gros, les blocs créés par les mineurs ayant adopté SegWit peuvent embarquer grosso modo deux fois plus de transactions. Avant les ordinaux, le plus gros bloc miné fut de 2.3 Mo.

Un bloc est donc considéré plein de transactions normales lorsqu’il s’approche de 2.3 Mo. Ce qui nous fait 1.7 Mo d’espace libre que les ordinaux sont venus squatter.

L’attaque des ordinaux se traduit concrètement par des blocs approchant plus souvent la limite des 4 Mo. L’espace occupé dépend du nombre de transactions normales. Voyez par exemple ce bloc avec seulement 98 transactions et un ordinal pesant quasiment 4 Mo à lui tout seul :

Bloc Bitcoin ordinal
Chaque carré représente la taille d’une transaction à l’intérieur d’un bloc (bytes = octets) / Source : bits.monospace.live

En clair, la taille des blocs est passée d’une taille généralement comprise entre 1,5 et 2 Mo, à quelque chose compris entre 3 et 4 Mo. Si la mode des ordinaux continue, la blockchain est partie pour grossir deux fois plus vite qu’avant.

Le fait de devoir conserver des données arbitraires (jpegs) dans le witness provoque deux grands problèmes. Le premier et qu’il devient de plus en plus difficile de synchroniser un nouveau nœud (télécharger les 85 millions d’UTXO, etc).

Taille de la blockchain Bitcoin :

2015 : 53 Go
2016 : 95 Go
2017 : 146 Go
2018 : 193 Go
2019 : 250 Go
2020 : 311 Go
2021 : 374 Go
2022 : 445 Go
2023 : 458 Go (février)

Le Bitcoin étant destiné à ne jamais s’arrêter, il ne faut pas garder la tête dans le guidon. Peut-être que les blocs auraient atteint 4 Mo de toute façon avec les possibilités plus ou moins intéressantes permises par Taproot. Mais retarder l’augmentation de la taille des blocs aussi longtemps que possible est certainement préférable.

Remplir notre précieux espace avec des Jpegs menace la décentralisation. Car plus cela coûte cher d’installer un nœud, et moins il y en aura, surtout dans les pays pauvres.

Sans parler de la synchronisation d’un nouveau nœud qui prend déjà entre six heures et une semaine. Le temps variera selon que vous avez un disque dur SSD ou non, une connexion internet Tor rapide ou non, etc.

Certains avancent qu’il suffit d’élaguer les données du witness. Certes, mais ces données sont incluses dans les blocs et sont hachées avec le reste. Un nœud doit donc tout de même les télécharger avant de les effacer, sans quoi il est impossible de valider les blocs. Cela soulève des problèmes de bande passante.

Par ailleurs, élaguer les données du witness empêche de relayer des données aux nœuds qui élaguent (light nodes). Et si tout le monde élague, des problèmes de disponibilité peuvent se faire jour, ce qui est aussi négatif pour la décentralisation.

« Oui, mais les fees seront nécessaires »

Des frais plus élevés finiront éventuellement par être souhaitables. Ils serviront à rémunérer les mineurs à mesure que les halvings passent. Cependant, on ne peut pas résoudre un problème qui ne s’est pas encore présenté.

Avec 6.25 BTC toutes les 10 minutes, les mineurs ont de quoi faire. Ils ne seront pas à plaindre si la valeur du BTC double tous les quatre ans, ce qui est une anticipation raisonnable.

Il est absurde de spammer le Bitcoin en prétendant que des frais plus élevés aujourd’hui contribuent à sécuriser le réseau demain.

Sans parler du fait que cette manne espérée ne se manifeste pas. Les ordinaux sont créés seulement s’il y a de la place libre qui ne coûte rien. Les frais des ordinaux ne représentent même pas 0.1 % des BTC touchés par les mineurs. Soit l’épaisseur du trait !

Lorsque les récompenses ne suffiront plus à rémunérer les mineurs, il vaudra mieux réduire la taille des blocs.

Que faudrait-il faire ?

Probablement rien pour l’instant. Il y a des chances que cette histoire se tasse et que les volumes disparaissent aussi vite qu’ils sont apparus, comme avec les NFT traditionnels.

Cela dit, il est aussi fort possible que les ennemis du Bitcoin exploitent cette vulnérabilité et automatisent la création d’ordinaux en vue d’amoindrir sa décentralisation.

Nous y verrons plus clair d’ici un an. Se posera alors la question pour les nœuds de filtrer davantage les types de transactions se trouvant dans leur mempool. Après tout, les nœuds filtrent déjà toutes les transactions de plus de 400 000 octets, ou encore celles qui paient zéro frais de transaction.

Il suffit pour cela d’installer un patch qui existe déjà. De cette manière, inutile de partir en croisade pour essayer de changer le protocole Bitcoin Core.

Si tout le monde adopte ce patch, les créateurs d’ordinaux devront alors contacter directement un mineur (ou plutôt un pool, puisque ce sont eux qui sélectionnent les transactions).

Et c’est d’ailleurs probablement ce qu’espèrent certains pools comme Luxor. De leur point de vue, le filtrage est une bonne nouvelle si la mayonnaise des ordinaux prend. Ils pourront vendre cher des transactions volumineuses. Cela dit, les mineurs qui ne tolèrent pas ces petits arrangements pourront toujours changer de pool…

Enfin, si vous avez lu cet article, il y a de bonnes chances que vous connaissiez très bien la différence entre le bitcoin et les shitcoins. Ce n’est pas le cas de tout le monde. S’il était déjà difficile de faire la différence pour un néophyte, le fait de mêler le Bitcoin aux inévitables et malveillants pump & dump ne fera que renforcer les malentendus.

Il serait dommage de brader la bonne réputation du Bitcoin pour faire plaisir à quelques pools de mining suintant l’appât du gain. Vaut-il mieux parler de l’installation de mineurs en Afrique, où de la dernière escroquerie au JPEG ?

Maximisez votre expérience Cointribune avec notre programme 'Read to Earn' ! Pour chaque article que vous lisez, gagnez des points et accédez à des récompenses exclusives. Inscrivez-vous dès maintenant et commencez à cumuler des avantages.


A
A
Nicolas T. avatar
Nicolas T.

Le Bitcoin est une éruption d'énergie chiffrée incensurable se diffractant aux quatre coins d'un monde en ébullitions géopolitique et inflationniste. Je vous tiens au courant.

DISCLAIMER

Les propos et opinions exprimés dans cet article n'engagent que leur auteur, et ne doivent pas être considérés comme des conseils en investissement. Effectuez vos propres recherches avant toute décision d'investissement.