A
A

UTXO et Privacy

mar 27 Juin 2023 ▪ 7 min de lecture ▪ par Nicolas T.
Apprendre Wallet

Que sont les utxo et comment leur gestion intelligente peut permettre de compliquer la vie des firmes de surveillance comme chainalysis ?

UTXO BITCOIN

Adresse, clé publique et UTXO

Les adresses de votre wallet ne sont pas de petites boîtes contenant des BTC. Ces derniers existent en réalité sous forme d’utxo (Unspent Transaction Output) gardés jalousement par les nœuds.

Un utxo est un petit « script », c’est-à-dire un code qui verrouille une quantité de BTC (un chiffre) à une clé publique. Déverrouiller les BTC nécessite de signer le script grâce à la clé privée correspondante à la clé publique.

Les deux clés sont deux très grands nombres liés par une fonction mathématique à « sens unique ». On parle de cryptographie asymétrique (cryptographie à clé publique).

En clair, il est impossible de calculer la clé privée à partir de la clé publique. Sans cette invention que nous devons à Ronald Rivest, Adi Shamir et Leonard Adleman (1977), Satoshi Nakamoto n’aurait pas pu décentraliser le Bitcoin.

Les wallets ne contiennent donc pas de BTC à proprement parler, mais des clés privées. Ils signent les transactions et les propagent aux nœuds avant d’atterrir dans le « mempool » en attente que les mineurs l’insèrent dans un « bloc ».

Une fois la transaction confirmée, les anciens utxo sont effacés et de nouveaux liés à de nouvelles adresses sont créés.

Soit dit en passant, les adresses sont des encodages de clé publique. Certains vieux utxo sont directement liés à des clés publiques. Les plus récents sont liés à des « adresses » qui s’obtiennent tout simplement en hachant les clés publiques avec les algorithmes SHA-256 et RIPEMD-160. Cela permet notamment de gagner de la place puisqu’un hash prend moins de place.

Notre article sur les différents types d’adresses Bitcoin : Bitcoin et la menace quantique.

Bitcoin « dust »

Le solde d’un wallet est la somme des utxo auxquels ses adresses sont liées. En sachant qu’une adresse peut être liée à un ou plusieurs utxo.

Lors d’une transaction, le wallet est face à un grand choix d’utxo. In fine, la sélection dépend de l’objectif recherché. Il n’y a pas de méthode de sélection universelle. Voulez-vous plus d’anonymat ou moins de frais ?

L’approche « naïve » consiste à rechercher le plus petit utxo dont la valeur est supérieure au montant de la transaction.

Procéder systématiquement de cette façon conduit malheureusement à une fragmentation. In fine, le wallet se retrouve jonché de « poussières » de bitcoin sous la forme d’utxo non dépensables car inférieurs aux frais de transaction.

Il en découle une expansion de la quantité globale d’utxo qui viennent encombrer les nœuds et menacer la décentralisation du réseau. Voyez ci-dessous l’évolution du nombre d’utxo (105 millions) :

Nombre d'utxo Bitcoin
Nombre d’utxo (105 millions) / SOurce : Grafana

Cela dit, il est naturel qu’un wallet finisse par contrôler plusieurs petits utxo. Il est alors préférable de les agglomérer dans une seule transaction. Cependant, plus une transaction contient d’utxo et plus elle est volumineuse, ce qui coûtera plus cher en frais de transaction.

Si votre priorité est de réduire vos frais de transaction, il faut privilégier une transaction contenant le moins d’utxo possible.

UTXO et Privacy

Il est très rare que les utxo d’un wallet permettent de construire une transaction contenant exactement le montant à envoyer. Il faut quasiment toujours envoyer plus.

La conséquence est qu’il faut donc se rendre la monnaie au cours de la même transaction via la création d’un utxo supplémentaire en sortie. Malheureusement, cela facilite grandement le travail des firmes de surveillance comme Chainalysis.

En théorie, lorsqu’il y a plusieurs utxo à la sortie d’une transaction, il n’est pas évident de savoir lequel appartient à celui qui paie et lequel appartient à celui qui reçoit l’argent. Il est toutefois possible de le découvrir à cause de cette monnaie rendue.

Si un des deux utxo en sortie fonctionne avec le même type de script que l’utxo apporté en entrée, c’est qu’il s’agit de l’utxo ayant servi à rendre la monnaie. Il est alors possible de distinguer le destinataire de l’envoyeur.

En effet, au fur et à mesure du développement du Bitcoin, de nombreux formats d’adresses (et donc autant de types de scripts) ont été introduits. Différents types d’adresses du réseau Bitcoin :

Distribution des types d'adresses dans le réseau Bitcoin
Source : Wasabi

Il est toutefois possible de mettre un peu la pagaille dans les techniques de surveillance. Par exemple en s’arrangeant pour ne pas avoir besoin de rendre la monnaie.

Cela est possible avec le wallet Wasabi. Ce dernier va chercher une combinaison d’utxo pour trouver un montant très légèrement supérieur ou inférieur au montant désiré. Le but étant qu’aucun utxo ne soit créé pour rendre la monnaie.

Cela rend plus difficile de distinguer le destinataire de l’envoyeur, mais peut coûter sensiblement plus cher.

Les « paramètres d’origine » du wallet Bitcoin core ?

Le wallet Bitcoin Core procède selon ce protocole pour chaque transaction :

-Si un seul utxo correspond exactement au montant de la transaction, il sera utilisé (très rare).

-Si la somme de tous les petits utxo dépasse le montant cible, ils seront utilisés.

-Si cette somme ne dépasse pas le montant cible, le plus petit utxo supérieur au montant cible sera utilisé.

-Si la monnaie à rendre peut être considérée comme de la poussière de BTC, elle est donnée aux mineurs.

La logique suivie par Bitcoin Core est de réduire le nombre de tout petits utxo. S’agit-il de la « meilleure » ou de la « bonne » technique de sélection ?

Oui si le but est de minimiser le nombre d’utxo dans un effort commun pour soulager les nœuds. Non si vous accordez plus d’importance à la privacy ou de faibles frais de transaction.

Certains wallets comme Wasabi disposent d’options de sélection manuelle pour les utilisateurs avancés. Wasabi écrit sur son blog :

« Depuis le lancement de Wasabi 2.0, le wallet dispose d’un algorithme de sélection intelligente des utxo privilégiant la privacy. Avec Wasabi 2.0.3, les utilisateurs bénéficient désormais du meilleur des deux mondes. Une sélection intelligente des utxo par défaut et des contrôles optionnels pour les utilisateurs avancés. Alors que les débutants profitent d’une privacy par défaut, les utilisateurs avancés conservent la possibilité de modifier la sélection. »

Wasabi propose également de réaliser des COINJOINS pour anonymiser complètement vos bitcoins.

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.