Aller au contenu

Modèle UTXO

Comprendre comment Bitcoin représente la valeur dépensable par des sorties de transaction non dépensées, valide les dépenses, crée la monnaie et impose des arbitrages de sélection, de frais et de confidentialité.

Mis à jour

Contenu fourni uniquement à des fins éducatives, sans constituer un conseil en investissement. Tout investissement peut entraîner des pertes.

Réponse directe

Le modèle des sorties de transaction non dépensées (UTXO) représente la valeur disponible sous forme de sorties distinctes, plutôt que par un solde unique rattaché à un compte. Dans Bitcoin, l’entrée d’une transaction ordinaire désigne une sortie antérieure au moyen de l’identifiant de transaction et de l’index de sortie. Cette sortie contient un montant et un script de verrouillage. Le solde affiché par un portefeuille est la somme calculée des sorties qu’il peut dépenser, et non un champ de solde conservé dans une adresse.

Une sortie est dépensée en totalité. Si les entrées choisies dépassent le paiement et les frais, la transaction doit créer explicitement une sortie de monnaie; le protocole ne rend rien automatiquement. Une transaction peut consommer plusieurs UTXO existantes et en créer plusieurs nouvelles, chacune avec son montant et ses propres conditions de dépense.

Fonctionnement

Pour qu’une transaction ordinaire hors coinbase soit valide, chaque sortie référencée doit exister et rester non dépensée, chaque entrée doit satisfaire les conditions de verrouillage de la sortie correspondante, et la valeur totale des sorties ne doit pas dépasser celle des entrées. La différence est disponible comme frais de transaction :

fee = sum(inputs) - sum(outputs)

Lorsqu’un nœud accepte des blocs, il retire les sorties consommées de son ensemble UTXO courant et ajoute les sorties nouvellement créées. L’historique des blocs reste nécessaire pour vérifier et reconstruire cet état. Une réorganisation de chaîne peut remplacer des blocs récents; des sorties proches de la pointe peuvent alors redevenir non confirmées ou disparaître de l’historique accepté.

Dans un même historique de chaîne accepté, une sortie donnée ne peut être consommée qu’une seule fois. Des transactions non confirmées en conflit peuvent tenter de dépenser la même sortie, mais l’admission et le remplacement dans le mempool relèvent des politiques des nœuds, et non d’une règle validant une double dépense sur la chaîne. BIP 125 définit le signal et la politique de remplacement volontaire; recevoir une transaction non confirmée ne constitue donc pas un règlement définitif.

L’espace des blocs Bitcoin est principalement tarifé selon le poids de la transaction et le taux de frais, non selon le montant transféré. BIP 141 définit virtual size = ceil(weight / 4). Les entrées ajoutent généralement plus de données que les sorties; dépenser de nombreuses petites UTXO peut donc coûter davantage qu’une seule grande UTXO au même taux. La taille exacte dépend des types de script et de witness employés.

Les transactions qui dépensent des UTXO différentes ont des dépendances d’entrée séparées, ce qui peut faciliter leur validation et leur construction en parallèle. Elles ne sont pas automatiquement indépendantes dans toute implémentation ou application : deux transactions qui choisissent la même sortie sont en conflit, et les descendantes dépendent de leurs parentes non confirmées. La sélection des pièces par le portefeuille doit coordonner ces dépendances.

Les UTXO ne garantissent pas l’anonymat. Le regroupement d’entrées peut suggérer un contrôle commun; les méthodes de détection de la monnaie et la réutilisation d’adresses peuvent relier des activités. Ce sont des heuristiques, non des preuves cryptographiques, mais une consolidation peut révéler des liens que des dépenses séparées auraient masqués.

Par rapport à un modèle de comptes, le modèle UTXO rend explicites chaque objet dépensable et son chemin de consommation. Les systèmes à comptes mettent généralement à jour un état partagé, tel que les soldes et les nonces. Aucun modèle n’est universellement supérieur : leurs compromis diffèrent en matière de représentation de l’état, de programmabilité, de concurrence et de conception des portefeuilles.

Exemple chiffré

Alice contrôle des UTXO de 0.08 BTC, 0.12 BTC et 0.50 BTC. Pour payer 0.15 BTC à Bob, son portefeuille choisit les deux premières entrées, soit 0.20 BTC, et estime les frais à 0.0002 BTC. Il crée les sorties suivantes :

  • Bob : 0.15 BTC
  • Monnaie d’Alice : 0.0498 BTC

Le calcul est 0.20 - 0.15 - 0.0002 = 0.0498 BTC. Après confirmation, les sorties de 0.08 BTC et 0.12 BTC sont dépensées; la sortie de Bob et la monnaie d’Alice sont de nouvelles UTXO; la sortie de 0.50 BTC reste intacte.

Si la transaction ne créait que la sortie de Bob de 0.15 BTC, les 0.05 BTC omis deviendraient des frais, et non un remboursement automatique. Le portefeuille peut aussi choisir d’autres entrées, regrouper plusieurs paiements ou consolider de petites sorties lorsque les taux sont plus faibles. Ces choix arbitrent entre frais actuels et futurs, fiabilité de la confirmation et confidentialité.

Risques et contrôles

  • Risque de frais : des UTXO fragmentées alourdissent les entrées; il faut estimer la transaction signée et son taux avant diffusion.
  • Risque de confidentialité : regrouper des entrées et produire une monnaie reconnaissable peut relier des adresses; une nouvelle adresse ne garantit pas l’absence de lien.
  • Risque de confirmation : les transactions en conflit, les politiques de remplacement et les réorganisations rendent réversibles les réceptions non confirmées.
  • Risque de récupération : la chaîne conserve les UTXO, tandis que le portefeuille stocke ou dérive les clés et données de découverte nécessaires pour les trouver et les dépenser; tous les facteurs de récupération requis doivent être sauvegardés.

Idées reçues

Une adresse est un compte permanent

Une adresse encode ou représente des conditions de dépense. Un portefeuille peut contrôler des sorties envoyées à de nombreuses adresses de réception et de monnaie; une adresse isolée ne décrit donc pas son état complet.

Les frais sont proportionnels au paiement

Les frais dépendent surtout du poids de la transaction et du taux choisi. Un paiement de grande valeur avec peu d’entrées peut être plus petit et moins cher qu’un faible paiement constitué de nombreuses entrées.

Le protocole crée automatiquement la monnaie

La monnaie est une sortie ordinaire délibérément construite par le portefeuille du payeur. Toute valeur d’entrée non affectée à des sorties est disponible pour le mineur comme frais.

Non confirmée signifie réglée

Un mempool est la vue provisoire d’un nœud, pas un registre de consensus. Les politiques d’admission, de remplacement et d’éviction varient; le risque de confirmation diminue avec le temps au lieu de disparaître à la diffusion.

Sujets connexes

Sources

Navigation

Rechercher dans le wiki...