UTXO ou Unspent transaction output (sortie de transaction non dépensée) est l'un des concepts centraux qui permettent le bon fonctionnement de la technologie blockchain que Satoshi Nakamoto a développée pour Bitcoin, la première crypto-monnaie au monde.
Ddes décennies avant sa création Bitcoin, l'obsession de créer une monnaie purement numérique hantait la tête de nombreuses personnes. Mais l'un des principaux problèmes que tout le monde a rencontrés était le fameux double dépense.
Il était Satoshi Nakamoto qui, grâce à un ensemble de techniques, a résolu ce grand problème, pouvant créer la première monnaie décentralisée purement numérique. Dans cet article, nous expliquerons ce que sont les UTXO et le grand rôle qu'ils jouent dans la création de transactions afin que vos bitcoins puissent voyager en toute sécurité au sein du protocole. blockchain.
UTXO, un concept pour éviter les doubles dépenses
Comme nous l'avons déjà expliqué dans l'article Comment fonctionnent les transactions en Bitcoin?, une transaction est composée d'entrées et de sorties. L'ensemble des entrées et des sorties, ainsi que les pièces à envoyer et les signatures cryptographiques, aboutissent à un hachage de transaction, appelé HASH ID.
Les entrées sont l'ID HASH d'une transaction qui a reçu le porte-monnaie et qui n'ont pas été utilisés auparavant, c'est-à-dire qu'ils sont UTXO, tandis que la sortie est l'adresse de destination, pour laquelle UTXO sera créé et pourra ensuite être utilisé dans une transaction. La même adresse peut avoir UTXO infini. C'est pourquoi les UTXO sont définis comme un ensemble de transactions.
Lorsqu'une personne a besoin d'envoyer une transaction, elle doit se nourrir d'UTXO. C'est-à-dire à partir de transactions que vous avez reçues et qui n'ont pas été dépensées. Cela signifie qu'une personne peut utiliser un ou plusieurs UTXO pour la même transaction. En fait, ces UTXO peuvent faire partie d'une ou plusieurs adresses de votre portefeuille. Et nous allons plus loin, même une transaction pourrait être créée avec des adresses UTXO de différents portefeuilles, tant que chacun est signé avec sa clé privée claire correspondante.
Tout cela mène à un seul endroit : un UTXO ne peut être utilisé qu'une seule fois. Et cela est fondamental dans le fonctionnement de la technologie blockchain, puisqu'elle fait partie de l'ensemble d'outils qui garantit que certaines pièces ne seront pas utilisées plus d'une fois (la fameuse double dépense).
La fiabilité de l'utilisation de ce mécanisme pour identifier les pièces non dépensées est telle qu'il est la manière dont Bitcoin peut être compté combien de pièces sont en circulation. Ce qui est fait est d'ajouter toutes les pièces qui se trouvent dans l'UTXO, c'est-à-dire dans les transactions qui n'ont pas été dépensées.
Ensuite, nous vous laissons un exemple simple pour que vous compreniez le flux :
Imaginez que Maria veuille payer à Pedro un total de 100 € en bitcoins pour un travail. María espère recevoir un paiement de certaines personnes qui lui doivent des bitcoins et de cet argent, elle paiera le travail de Pedro.
Lorsque Maria reçoit ces paiements, elle a eu quelques «intrants» d'argent, et à partir de ces intrants, elle fera un «extrant» pour payer Pedro. Maria a été remboursée de ses dettes, soit un paiement de 75 € et un autre de 50 €.
Quand elle paie Pedro, Maria doit utiliser les deux entrées, car aucune d'elles n'en a assez, et elle mettra Pedro comme sortie.
Après cela, Pedro aura une entrée UTXO (il a reçu le paiement).
Où vont les pièces restantes?
Comme vous l'avez vu, María avait un total de 125 € répartis en deux UTXO, mais elle n'avait besoin d'envoyer que 100 €. Il a dû utiliser les deux UTXO, définissant l'adresse de Pedro comme sortie, mais son portefeuille aura fait quelque chose d'autre de manière transparente pour María. Votre porte-monnaie aura mis une adresse pour María comme sortie, à laquelle vous aurez attribué les 25 € restants. C'est ce qu'on appelle changer de direction.
D'ailleurs, il y a des transactions qui sont converties en UTXO mais qui ne sont pas générées par un UTXO précédent, vous verrez en quoi elles consistent plus tard.
Avec ce qui a été décrit ci-dessus, vous pouvez comprendre comment ce modèle de "Billets" y "Départs", peut nous aider à établir des relations de possession et d'octroi de l'argent. Une relation qui dans la blockchain est marquée par l'utilisation de la cryptographie et qui nous offre une sécurité absolue que l'argent a atteint sa destination et qu'il est effectivement sous le contrôle du destinataire.
UTXO et son importance dans Bitcoin
en Bitcoin toutes les transactions ont cette structure d'entrées et de sorties.
- Dans les "Inputs" d'une transaction Bitcoin, nous pouvons voir les origines du solde que nous gérons avec notre portefeuille ou notre porte-monnaie.
- Alors que dans les "Sorties", nous pouvons voir où nous envoyons notre argent.
- De plus, nous pouvons voir l'argent restant qui est retourné. Tout cela est visible et traçable par n'importe qui, puisque la blockchain Bitcoin est publique et transparente.
Si vous regardez bien, ce modèle vous permet d'avoir un contrôle total sur la façon dont l'argent est utilisé et dans quelles conditions il peut être dépensé. En premier lieu, Pour utiliser un solde Bitcoin, il doit être considéré comme un UTXO dans votre portefeuille.. Autrement dit, quelqu'un doit effectuer un paiement (une sortie ou UTXO) pour que ce paiement devienne votre entrée et que vous ayez ainsi un solde disponible à dépenser.
Il s'agit d'un processus récursif. C'est-à-dire qu'il est répété à partir du moment où la pièce est générée à la suite d'un bloc miné. Par exemple, un transaction coinbase est en fait un UTXO créé par le mineur pour envoyer ce solde à une adresse sous son contrôle. Ainsi, cette transaction de sortie devient une entrée d'argent pour le mineur qu'il peut ensuite dépenser. Le même processus est répété pour le reste des utilisateurs de Bitcoin. Avec cela, nous pouvons voir que les UTXO sont une partie essentielle des transactions Bitcoin et sans eux, leur fonctionnement serait impossible.
Expansion sur l'exemple du fonctionnement d'un UTXO sur Bitcoin
Nous pouvons voir le fonctionnement d'un UTXO en Bitcoin de la manière suivante:
Daniel veut payer la voiture de Luis, d'une valeur de 1 BTC, et un total de 1,5 BTC est disponible dans son portefeuille. Le solde de Daniel est divisé en deux directions, A avec 0,8 BTC et B avec 0,7 BTC.
Ainsi, Daniel se rend chez Luis et effectue le paiement pour 1 BTC. À ce stade, le portefeuille de Daniel ne peut pas envoyer 1 BTC directement car le solde est réparti entre deux adresses. Alors prend les deux soldes et les convertit en entrées de la transaction de paiement. Ensuite, il prend l'adresse de Luis et lui attribue l'envoi de 1 BTC, attribue en outre un total de 0,4995 BTC à l'adresse d'échange, et le reste reste la commission minière.
Une fois que Daniel aura soumis sa transaction, elle sera traitée et confirmée par le réseau, commençant son chemin vers l'irréversibilité. Et à ce stade, il sera facile de voir où se trouvent les UTXO de transaction.
Les premiers UTXO que nous pouvons détecter dans l'exemple sont les soldes de Daniel. Ces adresses avec un solde de 0,8 BTC et 0,7 BTC sont deux UTXO qui sont sous leur contrôle et sont celles qui leur permettent d'effectuer le paiement à Luis. Puisque Daniel contrôle ces soldes, il peut transformer son UTXO en "Inputs" pour un nouveau paiement comme il le fait effectivement dans cet exemple.
Immédiatement après que le réseau a confirmé la transaction de Daniel, la situation change. Maintenant, Daniel ne contrôle plus les soldes qu'il avait à l'origine, et à la place, votre transaction a généré de nouveaux UTXO qui écrasent les anciens. Les nouveaux UTXO en question sont représentés en premier, par l'adresse de Luis et le 1 BTC qu'il y a reçu de Daniel. Et deuxièmement, à cause de l'adresse d'échange et des 0,4995 BTC que Daniel a reçus du réseau, car c'est ce qui reste du paiement qu'il a effectué. Comme nous l'avons dit, le reste pour compléter les 1,5 BTC que Daniel avait en principe reste comme un paiement de commission pour le mineur.
Scripts Bitcoin et sa relation avec les UTXO
L'ensemble du fonctionnement de l'UTXO en Bitcoin est garanti par le Script Bitcoin, le langage de programmation utilisé pour écrire toutes les opérations en Bitcoin. Chaque transaction a un script associé qui nous permet de:
- Validez que le solde utilisé est bien le nôtre.
- Assurez-vous que les soldes envoyés ne peuvent être dépensés que par la personne à qui nous les envoyons.
Mais comment se déroulent ces opérations? C'est ce que nous expliquons ci-dessous:
Valider que le solde est le nôtre
La première tâche pour pouvoir utiliser un solde en Bitcoin est de démontrer que ce solde est bien le nôtre. Pour ce faire, la première chose à prendre en compte est que chaque UTXO que l'on transforme en input (solde que l'on va dépenser) est en fait le sortie d'une transaction précédente qui nous a donné accès à ces BTC. Autrement dit, chaque solde de Bitcoin est associé à un UTXO, et ledit UTXO est associé à un script de blocage.
Ce script de blocage est un cadenas numérique qu'il faut ouvrir pour pouvoir utiliser le solde dudit UTXO. Les scripts de blocage dans Bitcoin sont variés, mais le plus courant est le P2PKH (Payer au hachage de la clé publique). Bien qu'il existe également des P2SH (multisignature), l' P2PK (le plus primitif de tous). Ce script de blocage peut être ouvert avec la clé privée qui aboutit à l'adresse indiquée dans l'UTXO.
Donc, pour déverrouiller ce script, nous devons prendre l'adresse Bitcoin, avec notre clé privée et générer la clé publique de ladite adresse. À la fin, nous apposons notre signature numérique et avec toutes ces données vérifiées, le solde de ladite adresse est déverrouillé afin que nous puissions l'utiliser. Autrement dit, les nœuds accepteront la transaction et la placeront dans le mempool en attendant les mineurs
Au contraire, si nous ne respectons pas cette procédure, nous la transaction est rejetée par les nœuds et nous ne pourrons pas utiliser le solde. Ce processus s'appelle un script de déverrouillage. Bien sûr, ce processus cryptographique est automatique et transparent pour les utilisateurs d'un wallet, l'ensemble du processus est effectué par le portefeuille lui-même, mais vous savez maintenant ce qui se passe à l'intérieur. Dans ce schéma, cette partie de l'opération est décrite dans le scriptSig de chaque Bitcoin Script.
Création du script de verrouillage
Démontrant que nous pouvons dépenser nos UTXO, nous passons au processus de création de transaction, en créant un script de bloc pour le nouvel UTXO lié à la destination. Dans ce cas, ce que fait le portefeuille est de créer un script similaire à celui qui a été créé pour nous précédemment, ce qui indique que Le seul qui peut passer ce nouvel UTXO est celui qui a en sa possession les clés privées qui contrôlent les adresses auxquelles nous avons envoyé.
De cette façon, quoi est créé est une chaîne de validation, où les bitcoins lors du passage d'une adresse à une autre, sont bloqués pour être utilisés par la dernière personne qui en prend possession.
Comme vous pouvez le voir, dans Bitcoin, tout a une raison bien définie, et cela permet à toutes ses parties de se réunir pour permettre le bon fonctionnement de la crypto-monnaie. Étant un protocole ouvert, tous les nœuds qui veulent faire partie du protocole interprètent les règles de la même manière.
Toutes les transactions sont examinées par tous les nœuds, celles acceptées par la majorité étant validées et celles acceptées par la majorité de la puissance de hachage (générée par les mineurs) étant confirmées. Ces contrôles garantissent démocratiquement le respect du protocole.
Curiosités de l'UTXO en Bitcoin
Maintenant, dans l'exemple précédent, vous avez sûrement vu des choses curieuses sur UTXO et son fonctionnement en Bitcoin, et nous vous donnerons une explication dans cette section.
Transactions qui ne proviennent pas d'un UTXO
Comme nous l'avons indiqué précédemment, il existe des transactions spéciales, certaines qui ne sont pas générées avec des UTXO, car les pièces apparaissent "par magie". Ce cas particulier se présente dans le transactions coinbase, qui sont créés par les mineurs au moment de l'extraction d'un bloc et sont utilisés pour obtenir la récompense du bloc.
Pourquoi ne pas effectuer un paiement fractionné en utilisant les soldes en BTC?
En lisant l'exemple précédent, vous vous êtes sûrement demandé pourquoi le portefeuille Bitcoin de Daniel n'a pas effectué un paiement exact de 1 BTC en utilisant une seule entrée ? La réponse à cela est que Les UTXO représentent le solde au sein de Bitcoin de manière indivisible. Autrement dit, nous ne pouvons pas transformer ce solde en valeurs plus petites, à moins de dépenser le solde en créant une nouvelle transaction.
Pour vous faciliter la tâche, voyons cet exemple: si nous voulons payer 1 BTC avec notre portefeuille, mais que ce montant est divisé en 100 UTXO différents qui ont chacun 0,01 BTC, alors notre portefeuille prendra les 100 adresses comme entrées de notre transaction et avec elle effectuera le paiement. Autrement dit, le protocole Bitcoin marque ces 100 UTXO comme «dépensés». À partir de là, il génère une nouvelle transaction avec un nouvel UTXO où nous avons envoyé le paiement de 1 BTC, et cela nous laisse sans contrôle du solde dans ces adresses utilisées.
Relation avec les commissions en Bitcoin
Une autre utilité de l'UTXO concerne les commissions ou les frais en Bitcoin. Dans l'exemple précédent, nous avons expliqué que chaque fois que nous effectuons une transaction, la commission de ladite opération est égale à la différence entre les entrées et les sorties. C'est-à-dire:
Entrée totale - Sortie totale = Commissions
Ceci nous dit que la construction d'une transaction a dès le départ un solde de commissions. La commission aux mineurs n'est associée à aucune production, de sorte que les mineurs conservent ce qui n'est pas associé. Autrement dit, l'entrée totale doit toujours être supérieure à la sortie totale associée.
La commission aux mineurs n'est pas fixe, chacun décide du montant qu'il souhaite payer en fonction de la précipitation dans laquelle il se trouve, mais c'est quelque chose que nous voyons dans toutes les transactions au sein de Bitcoin et son but est deux choses:
- Encourager le travail des mineurs que lors de la génération d'un bloc, ils reçoivent non seulement la récompense de celui-ci, mais également les commissions de toutes les transactions confirmées par ledit bloc.
- Empêcher le réseau d'être vulnérable aux attaques malveillantes comme DDoS, attaque de poussière, entre autres. En effet, chaque transaction a un coût et effectuer des transactions en grand nombre a un coût élevé pour l'attaquant.
UTXO sur d'autres blockchains et crypto-monnaies
Le schéma UTXO est si bon que le reste des crypto-monnaies ont décidé de l'utiliser pour leurs systèmes. Bien sûr, chaque blockchain peut ajuster ce concept différemment. De cette manière, il peut s'adapter aux fonctions supplémentaires que chaque protocole blockchain où ils sont exécutés peut présenter. Cependant, l'opération de base est la même. D'où même des pièces de confidentialité comme Monero o Zcash, utilisez ce schéma adapté aux particularités de votre protocole.
Cours avancé de Bitcoin
Niveau avancéÀ Bit2Me Academy, nous vous proposons ce cours Bitcoin avancé gratuit pour que vous deveniez le prochain Satoshi Nakamoto.