MimbleWimble : la chambre des secrets des cryptomonnaies (2/3)
Pour vivre heureux, vivons cachés. – Poursuivons notre découverte entamée du protocole MimbleWimble ! Si vous venez tel l’illustre Harry d’entrer dans la Cour des Miracles magique du protocole MimbleWimble, et que vous avez suivi notre premier article posant les fondations de son illustre ancêtre Bitcoin, nous pouvons commencer à voir précisément de quelles manières Tom Elvis Jedusor, le créateur pseudonymique de MimbleWimble, entend disrupter ces fondations.
Plongée dans une nouvelle Forêt Interdite, pour faire de la Blockchain MimbleWimble une Blockchain qui sache garder le silence.
Comme nous l’expliquions dans le premier article de cette série, MimbleWimble diffère foncièrement de Bitcoin par certains aspects. Voyons lesquels.
La Nature a horreur du vide
MimbleWimble supprime le système de Script
La première rupture proposée comparativement à Bitcoin est de simplement se passer du langage Script à l’échelle des noeuds de la blockchain. Comme nous le détaillerons dans un article ultérieur et final à propos des différentes implémentations du protocole Mimblewimble, le langage de développement utilisé sera donc en adéquation avec cette première idée forte.
Pour autant, il ne s’agira pas de se passer de la possibilité d’utiliser des scripts en définitive, au contraire : ces derniers seront juste déplacés et “simplement exécutés seulement par les ordinateurs des acteurs concernés”, pour citer Bitcoin.fr : l’ensemble fonctionnera à l’aide “scriptless scripts” stockés et exécutés hors blockchain, associées à des “magicking digital signatures” prouvant l’exécution des programmes en question au niveau de la blockchain.
MimbleWimble supprime les outputs dépensés
La seconde innovation est d’assurer la confidentialité des transactions par un processus novateur appelé non-interactive coinjoin tout en réduisant la taille de la blockchain en éliminant les fameux outputs dépensés (spend UTXO) et toutes les informations annexes parasitaires : pour résumer rapidement, dans le cas classique de Bitcoin, si vous souhaitez déployer un noeud complet (full node), il faut télécharger l’intégralité de la blockchain. Si vous déployez un noeud dit léger (full node pruné), vous téléchargez une version réduite élaguée (pruning) de la blockchain dans le sens où vous ne gardez que les transactions complètes des derniers N-blocks. La perspective offerte par Mimblewimble serait de permettre d’alléger la blockchain en question en limitant ce qu’elle stocke à un minimum nécessaire, sans plus forcément qu’elle doive conserver un graphe complet de la totalité des transactions et de leurs informations annexes parasitaires à la manière d’un notaire compulsif trop tatillon.
Résultat : une blockchain résiliente, légère et anonyme
La conséquence attendue d’une telle modification, en plus d’offrir une blockchain moins volumineuse, serait de permettre à plus de monde de monter des noeuds dits full node. En effet, puisque récupérer la blockchain complète en question sur un matériel informatique basique serait censée s’en trouver facilitée, à terme cela pourrait aider à la décentralisation effective du réseau.
Pour atteindre cet objectif de réduction de la taille de la blockchain et de confidentialité des transactions, le protocole Mimblewimble entend s’appuyer sur les Confidential Transactions (CT) évoquées en début d’article, mais aussi sur les CoinJoin transactions, avec quelques variantes : les transactions Mimblewimble doivent, comme les Confidential Transactions, permettre d’obscurcir les montants échangés aux yeux du monde extérieur, de sorte que seuls l’expéditeur et le récipiendaire puissent les connaître. Mais pour rendre la tâche de suivi encore plus ardue, Jedusor propose de ne plus seulement obscurcir les montants, mais aussi de mélanger les transactions à la manière d’un CoinJoin, où plusieurs transactions sont mixées entre elles.
L’intérêt de son approche est qu’elle est encore plus poussée. D’abord, il n’est pas nécessaire que les participants aux transactions soient actifs dans la mise en place des transactions en CoinJoin, elles sont exécutées automatiquement, c’est pourquoi on les appelle non-interactive coinjoin. Ensuite, pour plus de discrétion, Jedusor ne veut pas seulement mixer quelques transactions, mais littéralement tout mixer dans un bloc, de sorte que chaque bloc soit comme une seule transaction combinant toute les inputs et outputs dudit bloc.
Le but est donc, au final et idéalement, d’être certain de la monnaie échangée, mais de ne plus savoir pour quel montant et précisément entre quels participants individuels.
Il faut donc qu’il soit possible de vérifier mathématiquement si la même somme d’argent est entrée en début de transaction et est sortie à sa fin, ou donc en début et en fin de bloc.
MimbleWimble : quand Harry Potter rencontre Pokemon
Mimblewimble affiche alors son côté réellement disruptif en cherchant à allier le meilleur des deux approches précédemment détaillées : atteindre à la fois la confidentialité et la légéreté de la blockchain serait possible en appliquant le principe des non-interactive coinjoin tout en éliminant les fameux outputs dépensés (spend UTXO) et toutes les informations annexes parasitaires du passé.
Ci-dessus, vous pouvez ainsi trouver un petit schéma illustratif vous permettant de mieux saisir le fonctionnement habituel de transactions Bitcoin, en se figurant à gauche les inputs et à droite les outputs.
Notre nouvel ami Jedusor ne faisant décidément rien comme tout le monde, voici ci-dessus le nouveau modèle qu’il propose : en gros, supprimer tous ces outputs dépensés devenus inutiles et lourds. En quelque sorte, fournir une blockchain qui n’aurait qu’à computer le passé, et non plus intégralement le stocker, mais serait tout de même fondamentalement vérifiable.
Un tel fonctionnement disruptif à l’échelle de la structure même du bloc, alliant non interactive coinjoint et suppression des outputs dépensés, permettrait donc d’obscurcir une transaction donnée de la façon suivante : admettons que Bob, Alice et Chantal soient amis, et que Bob doive 5€ à Alice, alors qu’Alice doit 5€ à Chantal.
Dans Mimblewimble, l’idée serait qu’au lieu de réaliser deux transactions distinctes, avec leurs outputs dépensés, et leurs données surnuméraires stockées dans la blockchain, il suffirait de calculer en début de bloc que 5€ sont entrés, puis que 5€ sont sortis, pour permettre à Bob de donner à Alice, laquelle donnerait ensuite à Chantal, le tout sans que la blockchain n’enregistre nommément qui a donné à qui et dans quelle proportion.
A l’échelle des blocs, nous aurions donc la transaction en premier bloc de Bob à Alice, puis la transaction de Alice à Chantal en second bloc. Mais c’est ensuite que ça s’anime : une fois le second bloc validé, l’on pourra supprimer les deux transactions précédentes et les réécrire en une seule donnant à Chantal dans le bloc suivant.
Une forme de partage de l’addition décentralisée et obscurcissante, en somme.
Si vous n’avez pas encore décroché, félicitations ! Mais les choses seraient bien simples et peu caractéristiques de la cryptosphère si elles s’arrêtaient là ! En effet, plusieurs équipes différenciées ont commencé à travailler à leurs implémentations maison d’un coin fonctionnant sur le modèle du protocole Mimblewimble. La revue des forces en présence fera donc l’objet d’un article final dédié.
Mes remerciements à Lola et Antoine pour leurs relectures avisées.