Glossaire / Transactions et frais
Sortie de transaction
Aussi appelé Sortie, TxOut.
- Qu'est-ce qu'une sortie de transaction ?
- Une sortie de transaction est un montant de bitcoin accompagné du verrou qui détermine qui pourra le dépenser ensuite, et c'est le seul endroit où le bitcoin existe réellement.
Deux champs en forment une : un montant en satoshis, et un script énonçant la condition pour le dépenser. L'adresse que vous collez dans un formulaire de retrait n'est rien d'autre que ce script dans un encodage lisible par l'être humain, et c'est pourquoi préférer bech32 à un format plus ancien est en réalité un choix sur le verrou derrière lequel vos bitcoins se trouveront. Les sorties coûtent peu à créer et cher à déverrouiller plus tard.
Comment cela fonctionne
Une sortie est un petit enregistrement où aucun propriétaire n'est nommé.
Le champ value fait 8 octets et contient un nombre entier de satoshis. Soixante-quatre bits sont amplement suffisants pour une monnaie plafonnée près de 2 100 000 000 000 000 satoshis, et l'usage de nombres entiers plutôt que de décimales explique l'absence d'erreurs d'arrondi dans la comptabilité du bitcoin. Vient ensuite un préfixe de longueur et le script de verrouillage, appelé scriptPubKey dans le code source, qui est un court programme qu'un futur dépensier doit satisfaire.
Des scripts différents produisent des tailles et des coûts différents. Un verrou pay-to-public-key-hash représente 25 octets de script, ce qui porte la sortie entière à 34 octets. Un verrou SegWit natif représente 22 octets, ce qui porte la sortie à 31 octets. Un verrou Taproot représente 34 octets de script et 43 octets au total. Les encodages d'adresse que vous reconnaissez correspondent directement à ces cas : un 1 initial, un bc1q, un bc1p.
Le mot « verrou » est plus exact que « propriétaire ». Le script n'enregistre pas une personne. Il enregistre un test, et quiconque peut réussir ce test peut dépenser le bitcoin, ce qui est précisément la raison pour laquelle une clé privée doit être protégée et non traitée comme un simple identifiant de connexion.
Deux autres propriétés comptent. Les sorties sont numérotées par position, en partant de zéro, de sorte que la deuxième sortie d'une transaction porte l'index 1. Et une sortie inférieure au seuil de poussière, environ 546 satoshis pour un verrou legacy et 294 pour un verrou SegWit natif, n'est pas relayée par défaut, car la dépenser coûterait plus qu'elle ne contient.
Où le voir
Les sorties occupent la colonne de droite de toute page d'explorateur de blocs, et il y en a presque toujours deux lors d'une dépense.
L'une est le paiement et l'autre est la monnaie rendue, et rien dans la transaction ne dit laquelle est laquelle. Cette déduction est la matière première de l'analyse de la blockchain, et c'est pourquoi un portefeuille qui réutilise son adresse de monnaie rendue est plus facile à suivre qu'un portefeuille qui ne le fait pas.
Les sorties sont aussi la mémoire du réseau. Chaque nœud complet conserve une base de données de toutes les sorties non dépensées, car cet ensemble est exactement ce à quoi une nouvelle transaction doit être comparée. Une sortie que vous créez reste dans cette base de données sur des dizaines de milliers de machines jusqu'à ce que quelqu'un la dépense. Créer de nombreuses sorties minuscules est donc légèrement antisocial en plus d'être coûteux, et les regrouper est une courtoisie autant qu'une économie.
La seule exception est délibérément non dépensable. Une sortie OP_RETURN transporte des données et ne peut jamais être dépensée, les nœuds l'écartent donc immédiatement de l'ensemble des sorties non dépensées au lieu de la stocker indéfiniment.
Pour qui achète du bitcoin, la version pratique est brève. Retirez vers un format d'adresse dont vous serez content plus tard, préférez des retraits moins nombreux et plus gros à beaucoup de petits, et rappelez-vous que le solde affiché par votre portefeuille n'est que la somme des sorties actuellement verrouillées au profit des clés qu'il contrôle.
Sortie de transaction vs UTXO
Une sortie est un enregistrement ; un UTXO est un statut que cet enregistrement conserve seulement tant que personne ne l'a dépensé. Toute sortie jamais créée est inscrite définitivement dans un bloc et peut y être lue des années plus tard, mais dès qu'une transaction ultérieure y fait référence, elle cesse d'être non dépensée et quitte l'ensemble suivi par les nœuds. Ainsi, tout UTXO est une sortie, alors que la plupart des sorties ne sont plus des UTXO. La distinction a un intérêt pratique : le solde de votre portefeuille est la somme de vos UTXO, pas la somme de tout ce qui a jamais été payé à vos adresses, et un explorateur de blocs affichant un total reçu élevé sur une adresse décrit un historique plutôt que les fonds que vous détenez encore.