MimbleWimble : un grimoire pour conjurer Bitcoin ? (1/3)

Celui-dont-on-ne-doit-pas-prononcer-le-nom est de retour, et lui aussi a succombé au sortilège Blockchain.À l’été 2016, un mystérieux livre blanc fut livré à la sagacité de l’Internet cryptomonétaire. Posté par un individu sous le pseudonyme de Tom Elvis Jedusor, référence à l’ennemi mortel d’Harry Potter dans la traduction française de la série de livres éponymes, c’était en fait plus qu’un simple livre blanc. Il s’agissait plutôt d’un grimoire posant les bases d’un protocole visant à créer une cryptomonnaie qui jetterait une cape d’invisibilité sur sa blockchain, et s’en porterait très bien.

Le protocole sous-jacent présenté dans ce livre blanc s’appelle donc Mimblewimble, pour “Silencio”, en référence à un sort de l’univers potteresque liant la langue de sa victime afin qu’elle se taise.

Cet article initial sera le premier d’une série dédiée à ce protocole folklorique et empreint de pop culture. La série dans son ensemble visera d’abord à exposer dans le présent article l’émergence de ce protocole et à quelles fondations de Bitcoin il se compare.

Dans une seconde manche endiablée, nous nous attacherons à détailler les particularités techniques fondatrices de MimbleWimble, et en quoi elles ne font que donner plus de lustre à ce nouveau Vif d’Or de la crypto.

Enfin, nous exposerons les différentes implémentations auxquelles ce protocole est en train de donner naissance, et les forces en présence qui se sont lancées dans un semblant de Coupe de Feu, pour nous amener leur magique mainnet, à nous pauvres Moldus.

En route vers le crypto-quai 9 ¾ des altcoins

Mimblewimble : la beuglante et son contenu

Dans son white paper, le mystérieux Tom Jedusor nous murmure à l’oreille un certain nombre de points qu’il juge problématiques dans le fonctionnement classique de Bitcoin. Citons-en 2 :

  • La blockchain Bitcoin serait bien trop bavarde à propos de ses utilisateurs, à tel point que les traces laissées à leur propos lors de leurs transactions sont de facto un gisement très courtisé pour des multinationales, des entreprises spécialisées ou des États qui cherchent à identifier ces satanés pseudonymes du cyberespace.
  • Elle souffrirait en plus d’un embonpoint certain. L’élaguer un peu en proposant une façon de réduire son poids ne serait qu’une question de méthode informatique. Elle serait alors plus accessible à tout un chacun sur du matériel informatique standard.

Pour répondre à ces deux problèmes, ce cher Tom propose ainsi un protocole dédié, nommé Mimblewimble, et qui vise à les résoudre en atteignant deux objectifs : permettre une confidentialité accrue pour les transactions sur la base technique des Confidential Transactions, tout en permettant de réduire la taille nécessaire pour la blockchain sous-jacente en combinant les transactions entre elles et en se débarrassant des informations de bloc considérées comme parcellaires, inutiles et désanonymisantes.

Voyons pour commencer quelles habitudes ancrées ce mystérieux créateur souhaite rendre obsolètes afin d’arriver à ses fins.

Disrupter Bitcoin : prendre du recul & innover

Une des bases du protocole Bitcoin, que Mimblewimble cherche à bousculer, est son système dit UTXO-based, pour Unspent Transaction Output. Dans ce système fondateur, chaque transaction Bitcoin comporte un input et un output. Chaque input est ainsi un output d’une transaction antérieure, permettant de naviguer de proche en proche à travers les blocs raccordés de la blockchain Bitcoin à partir d’une transaction donnée.

C’est cette particularité qui explique pourquoi il est possible à terme de relier des transactions et de dresser un historique.

La balance totale possédée par un utilisateur Bitcoin est donc calculée en faisant la somme des valeurs de tous les outputs en sa possession qui n’ont pas encore été dépensés (c’est-à-dire, si vous avez suivi, qui n’ont pas encore été utilisés comme input dans une transaction). En quelque sorte, pour chaque transaction où vous souhaitez payer en bitcoins, vous faites ainsi tapis avec le solde de votre adresse, tandis que le récipiendaire vous rend instantanément la monnaie. Notons cependant qu’une transaction peut aussi avoir plusieurs inputs et ouputs, rendant la situation moins caricaturale.

“Ce sera une baguette, s’il-vous-plait.”

Cette façon de calculer un solde est un point d’importance : à la différence d’autres systèmes comptables, on ne reconstitue le solde d’un utilisateur qu’à postériori à partir des sommes signées par ses clés privée et publique : on n’envoie ainsi jamais réellement de bitcoins, on ne fait que signer des accords de cession portant sur ces bitcoins, avec des clés et en faveur d’autres clés.

Input:

Previous tx: f5d8ee39a430901c91a5917b9f2dc19d6d1a0e9cea205b009ca73dd04470b9a6

Index: 0

scriptSig: 304502206e21798a42fae0e854281abd38bacd1aeed3ee3738d9e1446618c4571d10
90db022100e2ac980643b0b82c0e88ffdfec6b64e3e6ba35e7ba5fdd7d5d6cc8d25c6b241501

Output:

Value: 5000000000

scriptPubKey: OP_DUP OP_HASH160 404371705fa9bd789a2fcd52d2c580b65d35549d
OP_EQUALVERIFY OP_CHECKSIG

Par exemple, dans la transaction ci-dessus, l’output de 5 000 000 000 de satoshis n’est pas dépensé et donc il est encore à disposition de l’utilisateur qui les contrôle.

Cette façon d’assurer la comptabilité n’est pas forcément une fin en soi : par exemple, Ethereum n’est pas UTXO-based, mais plutôt accound-based, avec un fonctionnement et un calcul de soldes plus proche de la représentation classique de la possession d’avoirs en propre.

Gardons ce système d’UTXO à l’esprit, car Tom Jedusor annonce ne pas vouloir s’en contenter.

Mimblewimble : l’Anté-Script ?

Un des autres aspects fondamentaux de Bitcoin est que le protocole repose sur un langage appelé Script, ce dernier étant un outil puissant permettant de décrire des conditions pour lesquelles l’output peut être utilisé comme input. Si l’on se réfère à nouveau l’exemple de transaction donné précédemment, c’est ce qui explique que l’on retrouve deux champs script : scriptSig et scriptPubKey.

Pour simplifier, si Bitcoin repose sur un système de clés publiques et privées pour signer les transactions, les signatures par ces clés ne se font pas directement avec elles stricto sensu : des programmes informatiques appelés scripts sont utilisés, et ce sont eux qui agissent ensuite comme des clefs publiques et des signatures électroniques dynamiques.

De façon générale, pour Bitcoin, l’utilisation de ce langage script permet donc de vérifier l’adéquation des signatures cryptographiques, c’est-à-dire si la clé privée qui tente de signer la transaction correspond bien à la clé publique correspondante (le script Pay-To-PubKey-Hash remplit par exemple ce rôle dans Bitcoin).

Tout un tas d’autres conditions peut ensuite être formulé grâce aux fameux Opcodes.

Néanmoins, n’oublions pas que le langage Script évoqué n’est pas Turing-complet : si les conséquences sur la mise en place de smart-contracts est discutée, limitons-nous à exposer que ce langage Script présente l’avantage d’offrir assez de flexibilité à l’utilisateur pour créer tout un tas de transactions spécifiques à des cas d’utilisations variés, comme basiquement créer un canal de paiement (comme le montre l’exemple du Lightning Network avec les payment channels).

Tom Jedusor a bien évidemment sa petite idée et il propose de son côté une approche radicalement différente des deux bases fondamentales de Bitcoin que nous venons de vous présenter.

Et s’il se passait aussi de ce satané Script, et qu’il donnait à la cryptosphère un cours magistral de Métamorphose, à l’égal de Minerva McGonagall ?

Vous pouvez reprendre une activité normale, si tant est que la crypto-addiction en soit une, on se dit à bientôt pour la seconde tournée de Bièraubeurres !

Mes remerciements à Lola pour sa relecture avisée.

Grégory Mohet-Guittard

Je fais des trucs au JDC depuis 2018. En ce moment, souvent en podcast et la tête dans le nuage.