UTXO
Un UTXO, qui signifie “Unspent Transaction Output” (sortie de transaction non dépensée), est le montant de cryptomonnaie obtenu par le destinataire, ou conservé par l’expéditeur, à la suite d’une transaction sur une blockchain (telle que celle du bitcoin) ; le montant de chaque UTXO peut ensuite être “dépensé” sur un nouvel échange. Le solde d’un portefeuille de cryptmonnaies est donc la somme de tous les UTXO encore inutilisés.
Décrivons à l’aide d’un exemple comment fonctionne le modèle UTXO : Anna a 1 bitcoin dans son portefeuille et veut transférer 0,4 BTC à Béatrice ; la transaction ne déplacera pas le montant exact, mais aura comme entrée 1 BTC, qui sera ensuite divisé en 0,4 bitcoin à envoyer à Béatrice et 0,6 à retourner à Anna. Les sorties séparées de 0,4 BTC et 0,6 BTC, ainsi générées, représentent deux UTXO, qui peuvent être des entrées pour de futures transactions.
À cet égard, le BTC unique de l’exemple ne comprenait qu’un seul UTXO, puisqu’il s’agissait du résultat “entier” d’échanges antérieurs, et nous avons donc dû le fragmenter ; toutefois, si Anna avait déjà obtenu un UTXO de 0,4 BTC lors de transactions antérieures, elle pouvait l’envoyer directement à Béatrice. Inversement, si Anna voulait envoyer 1 bitcoin “entier”, mais ne disposait pas d’un UTXO de ce montant, elle pouvait utiliser un UTXO de 0,7 BTC et un UTXO de 0,3 BTC, obtenus eux aussi lors de transactions précédentes. En fait, les UTXO d’entrée peuvent également être “additionnés” pour produire une sortie de valeur supérieure.
Le mécanisme est donc très similaire à celui des achats en monnaie fiduciaire, comme l’euro : les UTXO sont équivalents à la monnaie que nous recevons lorsque nous payons un objet avec une somme d’argent supérieure à son coût réel, parce que nous n’avons pas de billets ou de pièces de la bonne dénomination. Par exemple, nous ne pouvons pas “diviser” un billet de 10 € pour payer un article de 5 €. Nous recevrons donc 5 € de monnaie, que nous pourrons utiliser pour de futurs achats.
Pour en revenir au monde de la cryptographie, l’expéditeur signe chaque transaction avec sa clé privée, afin de “déverrouiller” les UTXO qu’il possède, en indiquant également l’adresse du portefeuille ou la clé publique du destinataire. Cela permet de tracer les échanges : les UTXO représentent une “chaîne de propriété“, étant le début et la fin de chaque transaction. L'”histoire” d’un UTXO permet de remonter jusqu’au mineur qui, en premier lieu, l’a reçu en récompense de son activité mining.
Chaque nœud du réseau blockchain tient un registre à jour de tous les UTXO existants à un moment donné (ensemble) et de leurs propriétaires. Au total, l’ensemble des UTXO rassemble un nombre de pièces égal à la disponibilité totale de cette cryptomonnaie.
De cette façon, les nœuds peuvent vérifier la validité d’une transaction : ils vérifient toujours que la quantité d’entrée est égale ou supérieure à la somme des sorties, empêchant ainsi les utilisateurs de dépenser deux fois les mêmes UTXO, une action illégale appelée double dépense.
Le modèle UTXO n’est toutefois pas exploité par toutes les blockchains : Ethereum, par exemple, exploite le modèle de compte pour gérer les soldes des portefeuilles et les transactions sur le réseau.