Bitcoin, pièce par pièce · 6 min · démo interactive

Les UTXO de Bitcoin : où est vraiment ton argent ?

Ton wallet affiche un solde, mais la blockchain n'en contient aucun. Elle ne garde que des pièces indivisibles, que tu vas sélectionner toi-même.

L’idée en une phrase

Sur Bitcoin, tu n'as pas un compte avec un solde : tu détiens un tas de pièces de tailles différentes, et ton solde n'est que leur somme.

Ces pièces s'appellent des UTXO, pour Unspent Transaction Outputs, sorties de transaction non dépensées. Chacune se dépense en entier, une seule fois. Comme un billet de 50 € pour payer 35 €, elle disparaît et tu récupères la différence sous forme d'une nouvelle pièce.

La démo

Tes pièces (coche-les pour passer en choix manuel)

Pièce (txid:sortie)Valeur (sat)Coût pour la dépenser (sat)
a3f19c2e:0120 000680
7be04d91:150 000680
c8127fa6:030 000680
19de53b0:212 000680
e46a0c77:04 000680
5d2b98f3:11 500680
217 500 satsolde (somme des pièces)
6pièces détenues
141 vBtaille de la transaction
1 410 satfrais
83 590 satmonnaie rendue

Transaction préparée

Entrées (1) : 120 000 = 120 000 sat Sortie destinataire : 35 000 sat Sortie de monnaie vers toi : 83 590 sat Frais pour le mineur : 1 410 sat
Aucune transaction envoyée pour le moment.

Exemple sans JavaScript : pour envoyer 35 000 sat à 10 sat/vB, la pièce de 120 000 sat suffit. La transaction a 1 entrée et 2 sorties, soit 141 vB et 1 410 sat de frais. Tu récupères 120 000 − 35 000 − 1 410 = 83 590 sat de monnaie. Avec quatre petites pièces, la taille monte à 345 vB et les frais à 3 450 sat pour le même paiement. Les tailles sont des approximations pour des adresses SegWit P2WPKH (68 vB par entrée, 31 vB par sortie, 11 vB de base).

Intégrer cette démo

Copie ce code sur ton site, ton cours ou ton blog. La démo reste gratuite ; garde simplement le lien vers protocole.org.

Pourquoi ça compte

Imagine que tu reçois 1 000 petits paiements de 2 000 satoshis chacun. Ton wallet affiche 2 millions de satoshis et tout semble normal. Le jour où les frais montent à 50 sat/vB, chaque pièce coûte 3 400 satoshis à dépenser, plus qu'elle ne vaut. Ton solde affiché est intact, mais une bonne partie est devenue inutilisable tant que les frais restent à ce niveau.

Le modèle UTXO explique aussi pourquoi une adresse inconnue apparaît dans tes transactions, pourquoi les frais Bitcoin dépendent du nombre de pièces et non du montant, et comment un observateur peut relier tes adresses entre elles. Ce sont des conséquences directes, pas des détails techniques.

Le code

Voici le cœur du simulateur. Change tarif ou l'ordre des pièces, ou passe montant à 48500 pour voir le cas où la monnaie serait trop petite pour exister.

Clique sur Lancer pour exécuter ce code dans ton navigateur.

Ce qui se passe vraiment

Commence par le tableau. Chaque ligne est une sortie d'une transaction passée, identifiée par le hash de cette transaction et le numéro de la sortie. La somme de ces lignes donne le solde. Ce solde n'est écrit nulle part sur la blockchain : ton wallet le calcule en cherchant les pièces que tes clés peuvent débloquer.

Lis ensuite la transaction préparée. Elle détruit des pièces en entrée et en crée de nouvelles en sortie. Il n'existe pas de dépense partielle. Si tu envoies 35 000 sat avec une pièce de 120 000, toute la pièce disparaît, et la différence revient vers une nouvelle adresse à toi. C'est la monnaie. Clique sur « Envoyer la transaction » : la grosse pièce quitte le tableau et une pièce de 83 590 sat apparaît, avec un nouvel identifiant.

Les frais n'ont pas de champ dédié dans la transaction. Ils valent simplement la somme des entrées moins la somme des sorties. Le mineur encaisse cet écart. Oublier la sortie de monnaie revient donc à tout offrir au mineur.

Change maintenant la stratégie. « Les plus petites d'abord » nettoie ton portefeuille, mais grossit la transaction : chaque entrée ajoute 68 vB, car elle porte une référence à la pièce et une signature. Une sortie n'ajoute que 31 vB. Le coût dépend donc surtout du nombre de pièces dépensées, et pas du tout du montant.

Pousse le tarif à 100 sat/vB et regarde la troisième colonne. La pièce de 1 500 sat passe au rouge dès 23 sat/vB, car sa dépense coûte plus que sa valeur. La démo montre aussi un seuil : place le montant à 48 500 sat, le tarif à 10 sat/vB et choisis « La plus petite pièce suffisante ». La pièce de 50 000 sat laisserait 90 sat de monnaie, sous le seuil de poussière de 294 sat. Les nœuds ne relaient pas une telle sortie par défaut, donc le surplus part en frais.

La démo simplifie plusieurs points. Elle ne connaît qu'un seul type d'adresse, ne signe rien, et ses stratégies sont basiques. Les vrais wallets utilisent des algorithmes qui cherchent aussi une combinaison sans monnaie.

Dans la vraie vie

Pour valider une transaction, un nœud vérifie notamment deux points : chaque entrée pointe vers une pièce encore présente dans l'ensemble des UTXO, et la signature satisfait le script qui verrouille cette pièce. Une signature numérique valide prouve le droit de dépenser, et la disparition de la pièce empêche la double dépense. Le nœud n'a besoin de connaître aucun titulaire de compte.

Ton wallet génère normalement une nouvelle adresse à chaque réception et pour chaque monnaie, à partir de la même seed phrase. C'est pour cela que tes fonds peuvent être répartis sur des dizaines d'adresses tout en formant un seul solde à l'écran.

La consolidation consiste à fusionner plusieurs petites pièces en une seule quand les frais sont bas, en t'envoyant une transaction à toi-même. Elle prépare les futures dépenses, mais coûte des frais tout de suite et relie ces pièces entre elles aux yeux de tous.

Ce modèle diffère de celui d'Ethereum, qui tient un solde par compte. La comparaison est détaillée dans Ethereum vs Bitcoin. Le modèle UTXO facilite la vérification en parallèle, car deux transactions qui touchent des pièces différentes sont indépendantes.

Ce qui peut mal tourner

  • Accumuler de la poussière. Des pièces minuscules deviennent non rentables à dépenser quand les frais montent. Vérifie la taille des paiements que tu acceptes et le nombre de pièces que tu accumules.
  • Relier tes adresses sans le vouloir. Quand une transaction a plusieurs entrées, un observateur suppose qu'elles appartiennent à la même personne. Le livre blanc de Bitcoin signalait déjà cette limite. Le contrôle des pièces (coin control) te permet de choisir ce que tu mélanges.
  • Tomber dans une attaque par poussière. Un inconnu envoie de très petits montants à tes adresses, puis attend que ton wallet les fusionne avec tes autres pièces pour relier tes adresses. Ne dépense pas ces pièces reçues sans raison.
  • Croire que la monnaie est une perte. Une sortie inconnue pour un gros montant dans ton historique est souvent ta propre monnaie. À l'inverse, vérifie bien l'adresse de destination avant de signer.
  • Construire une transaction à la main sans monnaie. Tout écart entre entrées et sorties part en frais. Une erreur dans un outil manuel peut offrir une grosse pièce entière au mineur, sans aucun recours.
  • Restaurer une vieille sauvegarde partielle. Si ta sauvegarde ne contient qu'une clé et non la seed, la monnaie partie vers une nouvelle adresse peut sembler avoir disparu.

Teste-toi

1. Tu dépenses une pièce de 100 000 sat pour payer 30 000 sat. Que devient le reste ?
2. Où sont stockés les frais d'une transaction Bitcoin ?
3. Quel envoi coûte le plus cher en frais, au même tarif ?