MSTR Cat

Blockchain/Niveau II · Mécanismes/2.2 Transactions/Leçon 4

Les sorties de change

Le reliquat qui trahit l’expéditeur, et les algorithmes qui tentent de le masquer

MatérielUn explorateur de blocs (par exemple, mempool.space ou blockchain.com)Un portefeuille Bitcoin contenant au moins deux UTXOUn tableur pour consigner les identifiants de transaction, les valeurs des entrées et la structure des sorties

Curiosité

  1. Pourquoi une transaction qui paie un montant exact a-t-elle souvent une autre allure qu’une transaction qui nécessite du change ?
  2. Comment un analyste peut-il déterminer quelle sortie correspond au paiement et laquelle au change, sans voir l’état interne du portefeuille ?
  3. Qu’est-ce qui pousse un algorithme de sélection des pièces à préférer des frais légèrement plus élevés à des frais plus bas ?

Explorer

  1. Les entrées des transactions Bitcoin fonctionnent comme des billets de banque indivisibles. Si Alice veut payer 5 BTC mais ne détient qu’un seul UTXO de 20 BTC, elle ne peut pas diviser cette entrée. Elle doit dépenser la totalité des 20 BTC et récupérer 15 BTC en guise de change, une fois les frais déduits. C’est pourquoi la plupart des transactions comportent deux sorties : l’une pour le destinataire, l’autre pour le retour du change.
  2. Au niveau du protocole, il n’existe aucune distinction entre une sortie de « paiement » et une sortie de « change ». Toutes deux sont des scripts de verrouillage standard, comme P2PKH ou P2WPKH, en attente de leurs conditions de dépense. Seul le créateur de la transaction sait quelle sortie est laquelle. Cette absence de différenciation est un mécanisme de confidentialité fondamental : si une adresse de change et une adresse de paiement semblent identiques, les observateurs extérieurs ne peuvent pas les distinguer avec certitude.
  3. Les portefeuilles utilisent des algorithmes de sélection des pièces (coin selection) pour déterminer quelles entrées dépenser. Si Alice détient deux UTXO de 50 000 satoshis et souhaite payer 85 000 satoshis à Bob, elle dépense les deux entrées (100 000 sats) et crée deux sorties : une pour Bob (85 000 sats) et une pour elle-même (15 000 sats moins les frais). Cette forme, une ou plusieurs entrées et exactement deux sorties, est l’une des plus courantes sur la chaîne.
  4. Pour préserver la confidentialité, il est d’usage d’envoyer le change vers une nouvelle adresse, jamais utilisée, issue du pool de clés du portefeuille. Réutiliser une ancienne adresse pour le change permet aux analystes de la chaîne de relier l’activité transactionnelle antérieure à la nouvelle. Dans l’idéal, la sortie de paiement comme la sortie de change sont attribuées à des adresses neuves, de sorte qu’elles paraissent identiques aux observateurs extérieurs.
  5. Tous les paiements n’ont pas besoin de change. Des algorithmes de sélection des pièces comme Branch and Bound, décrit par Mark Erhardt en 2016 et utilisé dans Bitcoin Core, recherchent un ensemble d’entrées dont le total correspond d’assez près au paiement plus les frais pour que le petit reliquat puisse simplement être ajouté aux frais. Une transaction sans change coûte moins cher, ne crée pas de nouvelle petite sortie et offre aux analystes un indice de moins.
  6. Les très petites sorties posent leur propre problème. Sous le seuil de poussière (dust), soit par défaut environ 546 satoshis pour les sorties P2PKH et 294 pour les sorties P2WPKH, une sortie coûte plus cher à dépenser qu’elle ne vaut, et les nœuds ne relaient pas les transactions qui en créent une. Les analystes recherchent aussi des schémas de change révélateurs : la sortie au montant rond est généralement le paiement, et une sortie dont le type d’adresse correspond à celui des entrées est souvent le change.

Faits clés

  • Les entrées de transaction sont indivisibles ; le reliquat au-delà du paiement et des frais est renvoyé sous forme de change, sauf s’il est assez faible pour être ajouté aux frais.
  • Au niveau du protocole, il n’existe aucune différence technique entre une sortie de change et une sortie de paiement ; seul le créateur de la transaction sait laquelle est laquelle.
  • La sélection des pièces par Branch and Bound (Erhardt, 2016) recherche des ensembles d’entrées qui ne nécessitent aucune sortie de change.
  • Les transactions sans change n’ont aucune sortie renvoyant des fonds à l’expéditeur ; tout petit reliquat est ajouté aux frais.
  • Utiliser pour le change une adresse nouvelle, jamais vue auparavant, empêche les tiers de la distinguer facilement d’une sortie de paiement.
  • Le seuil de poussière (dust) par défaut de Bitcoin Core est d’environ 546 satoshis pour les sorties P2PKH et de 294 pour les sorties P2WPKH.

Exercice neuf, six, trois, un

9RassemblerListez 9 transactions Bitcoin récentes que vous avez observées ou créées. Pour chacune, indiquez le nombre d’entrées et de sorties, et si une sortie de change était présente.
6RegrouperRegroupez les 9 en 6 catégories selon leur structure : une entrée/une sortie, plusieurs entrées/deux sorties (change), plusieurs entrées/une sortie (sans change), coinbase, OP_RETURN, ou autres structures complexes.
3DistillerRéduisez les 6 groupes à 3 implications distinctes en matière de confidentialité, selon la facilité avec laquelle un analyste peut relier des sorties à l’identité d’un utilisateur précis.
1CristalliserRédigez 1 phrase expliquant pourquoi l’absence de distinction technique entre sorties de paiement et sorties de change est à la fois un atout pour la fongibilité et un défi pour la confidentialité individuelle.

Vérification des faits

Les dates, les chiffres et les affirmations ont été vérifiés à l’aide des sources publiées listées ci-dessous.

Ouvrir dans l'académie interactive →

EN PT ES ZH JA KO RU DE MS