Comptage et transaction en bitcoins : les UTXO

Partagez cette page

Comment les bitcoins que l’on possède se comptent-ils et comment les transactions se déroulent-elles ?

D’instinct, on imagine évidemment un modèle et des façons de faire un peu « bancaires ».

Il faut d’abord un bien, ou une marchandise, qui serait quantifié, et dont chaque élément pourrait peut-être même être tracé. Il faut ensuite des comptes client, identifiés par des adresses, auxquels serait associée une « balance » du bien concerné, en l’occurrence un nombre de tokens. Il faut ensuite prévoir des mécanismes de transaction et surement tout un tas de trucs encore qu’on ne soupçonne même pas car nous ne sommes pas des spécialistes…



Et forcément, un tel système ne peut être qu’une usine à gaz hyper compliquée, hyper carrée, car les sous ça ne rigole pas.

Dès lors, si on a la curiosité d’aller voir à quoi ressemblent des transactions de bitcoins, par exemple sur blockchain.info, on est généralement surpris.

Transaction bitcoin

Surpris parce qu’au départ pour le néophyte, le détail d’une transaction bitcoin ne ressemble à rien…

Surpris aussi parce qu’en regardant ces transactions nous vient ensuite comme une impression d’anarchie. En effet, si on en regarde plusieurs, elles ont toutes l’air différentes les unes des autres, avec toujours une ou plusieurs « entrées » et une ou plusieurs « sorties ».

Cela cadre mal avec le modèle régenté qu’on imaginait, et dans lequel en toute logique une transaction se serait contentée de dire « A donne X bitcoins à B ».

Coupons net le suspens, cela ne correspond pas car en effet le système est très probablement différent de ce que vous imaginiez.

Avec le bitcoin, si au niveau utilisateur on a l’impression de gérer directement ses tokens comme des euros ou des dollars, en salle des machines le système fonctionne en manipulant quelque chose d’autre.Bienvenu dans le monde merveilleux des UTXO (à vos souhaits…).

Les UTXO

L’acronyme UTXO signifie « unspent (U) transaction (TX) output (O) », c’est à dire littéralement « sortie de transaction non dépensée ». Il désigne des « objets informatiques » qui ne sont pas des bitcoins, mais qui ont une valeur en bitcoins.

Ils sont à la base de tout, c’est avec eux et non d’éventuelles « pièce de monnaie virtuelles » que travaille le protocole. Si on souhaite décrire les choses de manière précise, l’utilisateur ne possède ni ne manipule directement des bitcoins, mais des UTXO (de bitcoins).

Rassurez-vous, si cela vous parait déroutant, ce n’est pas pour autant compliqué. Commencez par mettre de côté ce nom un peu barbare. Imaginez ensuite que les UTXO sont en quelques sortes, pour utiliser une image plus « monétaire », comme des titres de propriété ou des chèques électroniques qui auraient les caractéristiques suivantes :

– Ils se dépensent toujours en entier

– Leurs montants sont déjà remplis

– Ils ne sont pas libellés

– Seules les personnes qui les ont reçus peuvent les dépenser

Ah parce qu’on reçoit des UTXO ?

Oui, comme on l’a dit, le protocole ne manipule pas de bitcoins, mais des UTXO qui ont une valeur en bitcoin. A chaque fois que vous êtes le destinataire d’une transaction, vous ne recevez donc pas directement de bitcoins, mais un UTXO, c’est à dire un genre de chèque électronique (de bitcoins), qui vous a été adressé.

Passons aux transactions justement…

L’échange de bitcoins : du recyclage d’UTXO

Que se passe-t-il lors d’une transaction ?

Si vous souhaitez donner une certaine somme de bitcoins à quelqu’un, en sachant, étant donné ce que l’on vient de vous dire, que ce ne sont pas des bitcoins que vous avez dans votre poche, mais un ou plusieurs de ces « chèques » au nom bizarre, que faites vous ?

Ben… Il n’y a pas cinquante possibilités. On fait ce qu’on ferait avec du cash normal, mais avec nos UTXO-machin-bidule qui ont chacun leur valeur propre. C’est à dire qu’on en sélectionne certains de telle sorte que leur valeur totale atteigne le montant escompté.

Transaction bitcoin - UTXO

Sur l’image ci-dessus, dans la colonne de gauche, c’est cela les cinq entrées ou inputs (identifiés par leurs adresses de provenance, mais laissez cela de côté). Afin d’atteindre le montant de son paiement, l’émetteur a du amasser cinq des UTXO qu’il possède.

Si une des sorties (identifiées par leurs adresses « cible ») est en toute logique notre paiement, à quoi rime la seconde ? La personne a-t-elle payé deux fois ?

En bitcoin, il est parfaitement possible de payer plusieurs personne en une transaction, qui peut alors afficher une longue liste de sorties. Mais ce n’est pas le cas ici.

C’est juste que comme on l’a dit, se dépensant d’une traite et avec leur valeurs propres, les UTXO ne sont pas des outils de paiement en eux-mêmes très flexibles. Dès lors, à part rare coïncidence, la valeur en UTXO que vous dépenserez en inputs pour un paiement sera toujours supérieure (même très supérieure parfois…) au montant attendu de ce paiement. Comme il faut bien récupérer sa « monnaie », une des deux sorties représente le retour au payeur du « trop payé ».

Le cas de Robert

On reprend plus simplement avec le cas de Robert, qui dispose d’une fortune de 1 bitcoin. Fortune accumulée en recevant deux paiements de 0,5 btc de la part de son ami Albert.

Robert dispose donc de deux UTXO d’une valeur chacune de 0,5 btc.

Robert veut maintenant payer 0,75 btc à Géraldine.

L’opération va dépenser les deux UTXO valant 0,5 btc qu’il possédait, afin de créer à la place un UTXO valant 0,75 btc adressé à Géraldine, puis un UTXO valant 0,25 btc adressé à lui-même.

Bitcoin - UTXO - La transaction de Robert

Une transaction redistribue la somme de ses inputs dans différents outputs correspondant au(x) destinataire(s) du paiement et à l’initiateur de la transaction pour le trop payé. Et ici, en fin de compte, Géraldine disposera bien comme voulu de 0,75 btc, et Robert de 0,25 btc, sous la forme d’UTXO qui leur appartiennent.

N’est-ce pas tout simple en fait ?

Juste une précision. En réalité, le total des outputs sera toujours légèrement inférieur au total des inputs, et la différence correspondra aux frais de transaction prélevés par le réseau. Dans notre cas, Robert récupèrera un petit peu moins que les 0,25 btc théoriques.

Vie et mort des UTXO

En y pensant bien, lorsqu’on regarde une transaction bitcoin, on réalise qu’il n’y a en fait en inputs comme en outputs que des UTXO. Sauf que :

– Les inputs (à gauche) sont des UTXO, issus de précédentes transactions adressées jadis à l’envoyeur de l’actuelle, qui sont dépensés et disparaissent dans l’affaire.

– Les outputs (à droite) sont de nouveaux UTXO créés par la transaction, avec ceux adressés à un ou plusieurs récepteurs (les paiements), et la plupart du temps un adressé à l’émetteur (monnaie du paiement s’il y a lieu).

Les transactions bitcoin : du recyclage d'UTXO

Vous comprenez maintenant pourquoi nous disions en sous-titre que les transactions « recyclent » des UTXO. C’est parce que le transfert de bitcoins s’opère par un cycle de destruction/création d’UTXO.

Le nom barbare d’UTXO, on le rappelle Unspent Transaction Output (« sortie de transaction non dépensée ») doit aussi prendre plus de sens chez vous maintenant.

Dans le monde merveilleux du bitcoin, on dispose en effet de son argent sous la forme de ces « chèques électroniques », qui sont en fait toujours des « sorties » (ou des « résultats ») de transactions antérieures qu’on n’a pas encore dépensées, et qui attendent de l’être.

Question test très compliquée

Il arrive de tomber sur des transactions n’ayant qu’un seul input et qu’un seul output. A quoi cela peut-il bien correspondre ?

Cela arrive si vous transférez tout le contenu d’une adresse bitcoin à une autre et que ce contenu était issu d’un seul paiement. En pratique, cela correspond par exemple à un retrait suite à un achat unique de bitcoins sur un site comme Coinbase.

Après l’achat, les bitcoins se retrouve sur l’adresse « de transit » associée à votre compte client sur le site. Lorsque vous rapatriez en entier votre balance (un cliquant sur « max amount ») depuis cette adresse « de transit » sur votre adresse bitcoin personnelle sécurisée (celle de votre Ledger Wallet par exemple…), la transaction n’a bien qu’un unique input (une seule source) et un unique output (un seul récepteur, vous, et pas de monnaie).

Quelques points techniques

A qui appartient un UTXO ?

Nous n’arrêtons pas de parler d’UTXO « adressés » à untel, ou qui « appartiennent » à untel. C’est juste une manière simple de dire par exemple que quand Robert, lors de sa transaction, envoie un UTXO de 0,75 bitcoin à Géraldine, cet UTXO nouvellement créé porte la clé publique de Géraldine (c’est à dire son « adresse bitcoin »).

Pourquoi peut-on alors dire que désormais c’est à Géraldine qu’appartient cet UTXO, et surtout la somme de bitcoins correspondante ?

Parce que quiconque voulant dépenser cet UTXO devra résoudre un problème mathématique d’une difficulté que vous ne pouvez même pas imaginer (voir ce billet à propos du niveau de sécurité cryptographique du bitcoin), à moins, comme Géraldine (et seulement elle) de disposer de la clé cryptographique privée associée à sa clé publique.

Où est l’argent ?

Il est partout sur le réseau (et surtout pas dans votre wallet ou dans votre ordinateur).

La conséquence de ce qui précède est qu’en définitive, la totalité de l’argent bitcoin en circulation à un instant T est en fait l’ensemble des UTXO existant à ce moment là. Et il s’avère que constitué en liste, cette ensemble des UTXO existant est un outil primordial des nodes ou noeuds du réseau dans le cadre de leur travail de vérification des transactions. Il s’agira en effet de vérifier que chaque input d’une nouvelle transaction est bien la liste, avant de l’en enlever, et d’y ajouter à la place les outputs de cette transaction.

Cette liste, il est informatiquement facile à quiconque de la constituer en remontant la blockchain depuis le début. Cependant, si l’opération est facile, elle est aussi très longue. Alors après qu’elle ait été créée une première fois lors de son initialisation, chaque noeud du réseau la tiendra à jour en temps réel et la stockera dans sa mémoire vive. Le fait que la liste soit dans la RAM des noeuds leur permettra d’effectuer les opérations de vérification, ainsi que de répondre aux requêtes extérieures, très rapidement.

Et pour revenir à notre question du début, votre argent, ou plutôt vos bitcoins, ils se trouvent donc dans la blockchain mais surtout dans la RAM de chaque noeud du réseau. Ce sont les UTXO, présents dans la grande liste publique des UTXO existants, qui portent votre adresse bitcoin, et que donc seuls vous êtes à même de pouvoir dépenser (du moins si vous n’avez pas fait de bêtises avec votre clé privée…).

Un système élégant et participatif

Lorsqu’on se penche sur le fonctionnement du bitcoin, tout est initialement déroutant. Mais lorsqu’on le comprend, il apparaît finalement simple et efficace.

Il en est de même avec les UTXO, dont le nom file des angoisses au début, mais qui s’avère être en fait d’une élégance redoutable puisqu’il permet le fonctionnement complet d’une monnaie nouvelle génération à partir de l’essentiel, du strict nécessaire.

C’est du coup l’occasion de souligner le travail accompli par la communauté, qui entre autres choses s’emploie à rendre le bitcoin user-friendly.

Vous savez maintenant que le réseau bitcoin ne contient que des données brutes, certes nécessaires et suffisantes au fonctionnement du système, mais avec lesquelles le tout-à-chacun aurait du mal à se dépêtrer. Qui rentre alors en jeu afin que l’utilisateur se sente en terrain connu comme face à son compte bancaire ?

C’est votre wallet ! C’est le software, souvent open-source, souvent gratuit, que vous utilisez et qui a été créé par des tiers.

C’est lui, lorsque vous le lancez, qui se connecte au réseau, y recherche les informations relatives à votre compte, puis les met en forme de façon à vous présenter une jolie balance et une jolie liste de transactions à jour, comme à la banque.

C’est lui aussi qui s’occupe de créer des transactions compréhensibles répondant à vos souhaits, en gérant automatiquement côté cuisine tout le boulot compliqué (gestion des UTXO à dépenser et à créer, travail cryptographique de chiffrement, etc…).

Donc merci à ces personnes, car avec juste la blockchain et les UTXO, la plupart d’entre nous n’iraient pas loin…

0 réponses

Répondre

Se joindre à la discussion ?
Vous êtes libre de contribuer !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *