Glossaire / Transactions et frais
Index de sortie
Aussi appelé vout.
- Qu'est-ce qu'un index de sortie ?
- Un index de sortie est la position d'une sortie à l'intérieur d'une transaction, comptée à partir de zéro, et c'est le nombre après le deux-points quand vous voyez un bitcoin écrit sous la forme txid:1.
Une transaction peut payer des dizaines de destinataires à la fois, donc l'identifiant seul ne dit jamais quel paiement est le vôtre. L'indice est stocké sous forme d'un nombre de quatre octets, ce qui permet des valeurs allant jusqu'à 4 294 967 295, bien plus de sorties qu'un bloc ne pourrait en contenir. Associé à l'identifiant de transaction, il forme un outpoint, l'adresse permanente d'un bitcoin à l'intérieur du registre.
Comment cela fonctionne
Les sorties sont ordonnées, et cet ordre est celui que le créateur de la transaction a sérialisé. La première sortie est l'indice 0, la deuxième est l'indice 1, et la numérotation se poursuit jusqu'à la fin de la liste sans lacune. Rien dans l'indice ne décrit le montant, le destinataire ou l'objet de la sortie ; c'est une position et rien de plus.
Chaque entrée de chaque transaction porte l'un de ces nombres. Une entrée commence par une référence de 36 octets : 32 octets d'identifiant de transaction suivis d'un indice de quatre octets en little-endian. C'est ainsi qu'une dépense indique quel bitcoin elle consomme, et c'est pourquoi les nœuds peuvent vérifier une dépense sans parcourir toute la chaîne.
La transaction coinbase de chaque bloc rompt délibérément le schéma. N'ayant aucun bitcoin à dépenser, son unique entrée pointe vers un identifiant de transaction de 32 octets nuls avec l'indice fixé à 0xffffffff, la valeur maximale que le champ peut contenir. Tout ce qui référence cet outpoint est reconnu comme de la monnaie nouvellement émise plutôt que comme un transfert.
La position laisse aussi fuir des informations, et c'est pourquoi les portefeuilles la traitent comme un réglage de confidentialité. Si la monnaie rendue atterrissait toujours à l'indice 1, chaque observateur pourrait étiqueter instantanément la sortie de monnaie rendue de chaque transaction. Bitcoin Core randomise l'emplacement de la sortie de monnaie rendue, et le BIP69 a proposé l'approche inverse consistant à trier les entrées et les sorties dans un ordre lexicographique déterministe afin que rien ne puisse être déduit de l'ordre.
Où le voir
Les écrans de contrôle des bitcoins sont l'endroit où la plupart des gens rencontrent ce nombre sans connaître son nom. Sparrow, Electrum et Bitcoin Core listent chacun vos bitcoins sous la forme d'un identifiant de transaction suivi d'un indice, car deux sorties de la même transaction peuvent vous appartenir toutes les deux et seul l'indice permet de les distinguer.
Le regroupement des retraits sur les plateformes d'échange rend le nombre visible. Quand Kraken ou Binance paie une centaine de retraits dans une seule transaction, votre bitcoin se trouve à la position que le logiciel de regroupement lui a donnée, donc voir votre argent à l'indice 87 sur 120 sorties est parfaitement normal et n'indique pas que quelque chose a mal tourné.
Les outils de développement le demandent directement. La commande gettxout prend un identifiant de transaction et un indice comme arguments séparés, les fichiers PSBT référencent les entrées par outpoint, et les portefeuilles matériels affichent « output 2 of 3 » à l'écran pendant que vous approuvez une dépense. Les services d'assistance qui demandent « the txid and the vout » demandent la même paire de valeurs.
Index de sortie vs outpoint
Un indice de sortie seul n'a pas de sens, car l'indice 0 existe dans chaque transaction jamais réalisée. Un outpoint est la paire, identifiant de transaction et indice ensemble, et il identifie exactement un bitcoin parmi tous ceux qui ont jamais existé. La distinction compte dès que vous collez quelque chose dans un champ de contrôle des bitcoins ou dans un ticket d'assistance : la moitié d'une référence n'est pas une référence.