Les applications de wallet deviennent de plus en plus ergonomiques, « user-friendly » et du coup tendent à présenter la gestion de vos fonds comme un compte bancaire, avec une balance, des retraits, des entrés, des sorties, etc. En vérité, ces interfaces sont une manière incorrecte de représenter ce qui se passe vraiment lorsqu’un paiement en bitcoins est effectué. Vous ne possédez pas une seule adresse – comme ce serait le cas pour une carte de crédit par exemple – mais une collection d’adresses, aléatoires ou déterminées à l’avance.
Votre wallet est collection de ces adresses et des clés permettant d’y accéder. Lorsque vous payez en bitcoins et que vous générez du change, ce change va vous être renvoyé sur une adresse de change à part entière. Il est légitime de se demander pourquoi il y a besoin néanmoins d’une telle complexité, pourquoi il y a besoin des adresses de change ?
La réponse :
Sécurité et pseudonymat
En vertu du protocole Bitcoin, chaque transaction est archivée dans le registre général visible de tous qu’est la blockchain. Dans ce système, la condition nécessaire pour ne pas dévoiler vos informations personnelles est de strictement séparer vos adresses bitcoin et votre identité, ce que l’on appelle le pseudonymat.
Si une transaction transfère un montant en bitcoin d’une adresse A à une adresse B et que le change est renvoyé à l’adresse de l’envoyeur, consulter la blockchain suffit pour déduire que la personne derrière l’adresse A a envoyé de l’argent à la personne derrière l’adresse B. Et si un second paiement est effectué, alors il est même possible d’identifier la personne derrière l’adresse B.
Au contraire, si l’adresse A paie B mais redirige le change sur une nouvelle adresse de change C, il est autrement plus compliqué de savoir si le change reviendra in fine à A ou à B. L’identité de la personne derrière B ou C peut ou peut ne pas être la même que la personne derrière l’adresse A. Si un paiement est fait depuis l’adresse C, les choses se brouillent encore plus : lequel des transfères est un paiement et lequel est le change ?
En n’utilisant qu’une fois une adresse – c’est-à-dire, en utilisant l’adresse de change pour faire un nouveau paiement, puis utiliser l’adresse de change subséquente, et ainsi de suite –, l’utilisateur brouille les pistes. Si un observateur externe essayait de relier les identités personnes des envoyeurs aux adresses Bitcoin, il lui faudrait bien plus d’informations secondaires et de savoir-faire, que simplement regarder l’historique des transactions sur la blockchain.
En vérité, nous l’avons vu précédemment, le change généré s’exprime en unspent outputs de valeurs fixes. Lorsque le wallet collecte ces divers unspent outputs répartis sur autant d’adresses de change pour les utiliser dans une seule et même transaction, il implique – mais ne prouve pas forcément – qu’il y a un seul utilisateur derrière toutes ces adresses. Il y a quelques solutions à ce problèmes, notamment via CoinJoin.
Articles connexes :