A
A

Bitcoin Coinjoin - Comment ça marche ?

mar 28 Nov 2023 ▪ 8 min de lecture ▪ par Nicolas T.
Apprendre Wallet

Vos bitcoins ne sont pas anonymes s’ils proviennent d’un exchange. Pour y remédier, il faut participer à un coinjoin. Explication.

Bitcoin coinjoin

UTXO

Pour comprendre ce qu’est un coinjoin, il convient d’expliquer d’abord que les bitcoins existent sous la forme d’ « UTXO » (Unspent transaction output).

Cette expression extrêmement indigeste fait référence à des scripts (petits bouts de code) qui lient une quantité de bitcoins à une adresse bitcoin.

On parle communément d’adresse bitcoin, mais il faudrait plutôt parler clé publique. Une adresse est une clé publique que l’on a haché via SHA-256 et encodée au format base58.

Beaucoup plus courtes que les clés, elles permettent une plus grande aisance d’utilisation et des gains d’espace pour les nœuds qui sont les gardiens de la liste complète des utxo.

Une clé publique et une clé privée sont deux chiffres mathématiquement liés par le problème dit du logarithme discret. Cette cryptographie dite à clé publique est au cœur du mécanisme des transactions en bitcoin.

Initier une transaction signifie la signer avec sa la clé privée allant de paire avec la clé publique liée à l’utxo que l’on veut dépenser.

Réaliser une transaction revient en définitive à fournir l’adresse de l’utxo à dépenser, l’adresse du destinataire, le montant des bitcoins à transférer et la signature.

L’utxo apporté en entrée de la transaction est remplacé par un nouvel utxo lié à une nouvelle adresse (celle du destinataire).

Concrètement, comment ça marche ?

Imaginez que vous ayez reçu deux transactions sur votre wallet. Mettons 0.5 BTC et 1 BTC reçus sur deux adresses différentes. Votre wallet affichera un solde de 1.5 BTC.

Soit dit en passant, votre wallet ne « contient » pas réellement 1.5 BTC. Il héberge simplement des clés privées contrôlant deux utxo gardés en mémoire par les nœuds.

Imaginons maintenant que vous souhaitiez envoyer 0.6 BTC. L’utxo de 0.5 BTC n’étant pas suffisant, il faudra utiliser celui de 1 BTC. Cet utxo sera consommé en totalité et la différence de 0.4 BTC vous sera renvoyée via la création d’un nouvel utxo.

En clair, d’un seul utxo émergera deux nouveaux utxo. Un de 0.6 BTC lié à l’adresse du destinataire que lui seul pourra dépenser. Et un autre de 0.4 BTC correspondant à la monnaie rendue vers une adresse vous appartenant.

Pour être complet, notons qu’un troisième utxo est créé au cours de la transaction. Celui correspondant au frais de transaction versés aux mineurs.

Si vous aviez voulu envoyé 1.5 BTC, votre wallet aurait tout simplement dépensé les deux utxo au cours de la même transaction.

Une transaction peut en effet comporter un très grand nombre d’utxo, aussi bien en entrée qu’en sortie. Par exemple :

-Sélection d’un seul utxo en entrée et création de plusieurs utxo en sortie de transaction.

Bitcoin transaction
Adresses d’entrée et de sortie d’une transaction Bitcoin / Source : mempool.space

-Sélection de plusieurs utxo en entrée créant un seul utxo en sortie (+ l’utxo correspondant aux frais de transaction pour le mineur).

Bitcoin transaction
Source : mempool.space

Cette souplesse numérique permet de faire des coinjoins.

Coinjoin Transaction

Nombreux sont ceux qui ne savent pas qu’une seule transaction peut contenir plusieurs utxo appartenant à différentes personnes. Cette fonctionnalité permet à plusieurs personnes de coinjointement combiner leurs transactions en une seule : un coinjoin.

Le but de l’opération est de brouiller les pistes pour qu’un observateur extérieur ne puisse plus dire quels bitcoins appartiennent à qui.

L’ambigüité est créée en créant des utxo de même valeur en sortie. Nous y reviendrons un peu plus loin. Cliquez sur le tweet suivant pour observer un exemple réalisé avec le wallet Wasabi :

L’intérêt principal du coinjoin est de s’assurer que personne ne sache si vous détenez toujours des bitcoins. En particulier les exchanges KYC (Know your Customer)…

Les exchanges connaissent forcément votre stack. De même que les sociétés de surveillance auxquelles les données sont vendues, ainsi que les gouvernements et les pirates informatiques qui parviennent à voler ces données.

Ces BTC « KYC » ne doivent pas être mélangés avec d’autres BTC « propres » que vous auriez par exemple reçus d’un ami. Si vous combinez des utxo KYC avec des utxo propres, l’exchange saura que tous ces bitcoins vous appartenaient aussi.

C’est ce que l’on appelle la « Common Input Ownership Heuristic » qui part du principe que plusieurs utxo combinés dans une seule transaction ont toutes les chances d’appartenir à la même personne.

D’où l’intérêt d’utiliser un wallet vous demandant d’écrire d’où viennent vos utxo. Cela permet de ne pas mélanger les utxo.

Plus d’information sur le pistage des sociétés de surveillance dans cet article : Comment Chainalysis piste vos bitcoins ?

Il est toutefois possible d’anonymiser de nouveau ses bitcoins en participant à des coinjoins. C’est-à-dire des transactions rassemblant un grand nombre de participants.

Exemple de Coinjoin Bitcoin

Ce petit coinjoin comporte quatre utxo en entrée appartenant à Alice et Bob. Il en ressort après transaction six utxo de même montant.

Ces utxo étant de montants identiques, les pistes sont brouillées. Chaque UTXO a 50 % de chances d’appartenir à Alice ou Bob.

Bien entendu, plus le nombre de participants augmente et plus cette probabilité de 50 % diminue. Il est également possible d’enchainer les coinjoins pour gagner en anonymat.

Les wallets qui offrent l’option du coinjoin sont Wasabi, Samourai et Trezor. Pour plus d’informations sur leurs spécificités, rendez-vous sur ces deux articles :

-Trezor et Wasabi déclenchent la controverse
-Quel wallet choisir pour anonymiser ses bitcoins ?

Participer à un coinjoin n’est pas gratuit. Il faut payer le coordinateur qui se charge de construire la transaction coinjoin. Il vous en coûtera 0.3 % avec Wasabi et Trezor (qui utilisent le même coordinateur zkSNACKs). Et 5 % chez Samourai.

L’anonymat a un prix. Plus ou moins cher selon le wallet

Dans la pratique du Coinjoin, une compréhension approfondie du fonctionnement du bitcoin et de sa technologie de base, la blockchain, est essentielle. La blockchain Bitcoin, un registre distribué innovant, joue un rôle crucial dans la sécurisation et la transparence des transactions Bitcoin. Chaque transaction, y compris celles effectuées via Coinjoin, est enregistrée dans des blocs connectés, formant une chaîne inaltérable et publique. Ce mécanisme garantit non seulement la sécurité grâce au consensus Proof-of-Work, mais offre aussi une transparence sans précédent. Ainsi, même si Coinjoin vise à améliorer la confidentialité, les transactions restent vérifiables et sécurisées sur la blockchain, soulignant la complexité et l’ingéniosité du système Bitcoin.

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.

Reporting on Bitcoin, "the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy".

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.