Avertissement : Cet article a été traduit de l’anglais par un LLM. La précision n’est pas garantie. Vous pouvez lire l’article original en anglais.
Monero (XMR) est, avec ZCoin, l’une des cryptomonnaies axées sur la confidentialité les plus utilisées. Dernièrement, elle semble gagner en popularité auprès des personnes souhaitant envoyer des fonds en cryptomonnaies tout en restant discrètes. Entre autres, elle est souvent recommandée sur certains forums du dark web comme alternative aux mixeurs Bitcoin et a été utilisée par les auteurs de WannaCry pour blanchir des fonds.
Cet article vise à donner un aperçu relativement général du fonctionnement de Monero et des mécanismes qui lui permettent d’être plus anonyme que Bitcoin et d’autres cryptomonnaies. Nous n’entrerons pas dans les détails mathématiques et de minage, et bien que l’article reste relativement accessible, il suppose que vous êtes au moins un peu familier avec Bitcoin.
Lancé en avril 2014, Monero est basé sur un fork de Bytecoin (oui, Bytecoin, pas Bitcoin), mais a démarré depuis le bloc Genesis (c’est-à-dire que le registre XMR ne contient pas les transactions Bytecoin). Il est basé sur la preuve de travail, mais contrairement à Bitcoin, l’algorithme est adapté aux CPU, rendant le minage un peu plus accessible à tous. L’offre de jetons est infinie. Elle atteindra environ 18 millions de jetons d’ici mai 2022, puis 0,6 XMR seront générés par bloc (contre environ 1,5 actuellement). Un bloc prend en moyenne deux minutes à miner et n’a pas de taille maximale fixe.
Adresses et clés#
Tout d’abord, pour effectuer des transactions avec Monero, nous aurons besoin d’une adresse. Avec la plupart des autres cryptomonnaies, lors de la création d’une adresse, nous aurions une paire de clés publique/privée. Avec Monero, les choses sont un peu plus compliquées, car quatre clés (deux paires) sont générées :
- La clé publique de visualisation est la seconde moitié de l’adresse Monero. Elle sera utilisée par les personnes souhaitant nous envoyer des fonds.
- La clé privée de visualisation permet de scanner le registre pour trouver les transactions que les gens nous envoient. Cette clé peut être rendue publique, mais cela signifie que tout le monde pourra voir nos transactions.
- La clé publique de dépense est la première moitié de l’adresse Monero. Elle sera utilisée dans la phase d’anneau (plus de détails plus tard).
- La clé privée de dépense est ce que nous utiliserons pour signer les transactions que nous effectuons. Cette clé ne doit jamais être partagée.
Exécuter une transaction#
Maintenant que nous avons nos clés, nous pouvons commencer à recevoir des fonds. Disons que Bob nous doit de l’argent et qu’il va nous rembourser en Monero. Voici ce qui va se passer :
- Nous donnerons notre adresse à Bob.
- Bob utilisera nos clés publiques de visualisation et de dépense pour créer une adresse à usage unique (ou adresse furtive) où il enverra les fonds. Cette adresse garantira que notre véritable adresse n’est jamais affichée dans le registre, rendant ainsi impossible pour quiconque de savoir combien de fonds nous détenons.
- Bob créera ensuite la transaction. C’est là que la signature en anneau entre en action. Bob prendra 10 sorties (ou mixins) émises par d’autres transactions dans le registre (exigence du protocole) et les utilisera comme entrées avec la véritable entrée d’où les fonds sont envoyés. Cela empêche tout tiers de savoir quelle entrée est la source des fonds pour une transaction. Ring CT (Confidential Transaction) est également utilisé et permet de masquer le montant envoyé dans la transaction.
- En utilisant notre clé privée de visualisation, nous scannerons la blockchain pour trouver les transactions qui nous sont envoyées, et nous pourrons voir l’adresse à usage unique générée par Bob, et donc le paiement. Nous pourrons ensuite dépenser ces fonds en utilisant notre clé privée de dépense.
Une fois cela terminé, la confidentialité est assurée pour Bob comme pour nous :
- Bob ne peut pas voir combien de fonds nous détenons, car il ne connaît que l’adresse à usage unique qu’il a créée et ne peut pas scanner le registre pour trouver nos autres adresses puisqu’il n’a pas notre clé privée de visualisation.
- Nous ne pouvons pas savoir avec certitude d’où Bob envoie les fonds, car il y a plusieurs entrées et nous ne pouvons pas être sûrs de laquelle appartient à Bob.
- Bob ne pourra pas savoir quand nous dépensons les fonds, ni où. La raison est que notre adresse peut être utilisée dans les tours de signature en anneau d’autres utilisateurs.
Quelques détails supplémentaires#
Signature en anneau et Ring CT#
Si vous avez lu tout ce qui précède, vous vous poserez probablement cette question : « Si les montants envoyés sont masqués, et si nous ne pouvons pas savoir quelle entrée est l’origine des fonds, alors comment les mineurs peuvent-ils savoir si la transaction est valide ? »
Pour résoudre ce problème, deux éléments seront générés sur la base des mathématiques et de la cryptologie :
- L’image de clé est une clé publique générée pour la transaction. Elle permet de confirmer qu’une entrée de la transaction est valide, sans dire laquelle, empêchant ainsi les doubles dépenses de se produire.
- Un engagement de Pedersen indiquera au réseau que les sommes des valeurs des entrées et des sorties sont égales et que la transaction est donc valide.
Entrées et sorties#
Comme Bitcoin, Monero exige que toutes les entrées soient dépensées dans une transaction, nécessitant donc la création d’adresses de change. Il permet également de payer vers plusieurs sorties et d’utiliser plusieurs entrées.
Pour chaque entrée réelle que nous utilisons dans une transaction, il y aura une signature en anneau. Par conséquent, il y aura toujours au moins dix fausses et une vraie sortie.
Sources et ressources intéressantes#
Voici une liste des sources que j’ai utilisées lors de la rédaction de cet article, ainsi que quelques ressources intéressantes. Certaines offrent également un niveau de détail plus élevé sur des sujets comme les signatures en anneau, donc si cela vous intéresse, vous devriez les consulter.
- A low-level explanation of the mechanics of Monero vs Bitcoin in plain English
- Understanding Monero Cryptography, Privacy – Introduction
- Understanding Monero Cryptography, Privacy Part 2 – Stealth Addresses
- Cryptonote protocal Whitepaper
- Moneropedia
- Breaking Monero 06: Unusual Ringsize
- Zcash VS Monero: Comparative Privacy Coin Guide
- Monero Documentation
- What is Monero? (XMR)
- Stack Exchange: What is a key image?
- Stack Exchange: Monero terminologies
- Addresses Generation and Checking Tool
- Transaction Checker Tool