Glossaire / Transactions et frais
Identifiant de transaction
Aussi appelé Transaction ID, Txid, Hash de transaction.
- Qu'est-ce qu'un identifiant de transaction ?
- Un identifiant de transaction est l'empreinte hexadécimale de 64 caractères d'une transaction bitcoin, produite en la hachant deux fois avec SHA-256, et c'est ainsi que tout le monde désigne ce paiement.
Personne n'attribue l'identifiant : il découle du contenu même de la transaction, si bien que modifier un seul satoshi en produit un complètement différent. La valeur fait 32 octets, s'affiche sous forme de 64 caractères hexadécimaux et est présentée par tous les explorateurs dans l'ordre inverse des octets. C'est la seule chaîne qui vous permet, à vous et au service d'assistance d'une plateforme d'échange, de regarder le même paiement.
Comment cela fonctionne
Le calcul d'un identifiant de transaction se fait en deux étapes et sans aucun secret. La transaction est sérialisée sous sa forme brute en octets, puis passée deux fois dans SHA-256, et les 32 octets obtenus constituent l'identifiant. Quiconque dispose des octets bruts obtient le même résultat, et c'est pourquoi un identifiant ne peut être réservé, demandé ni falsifié.
L'ordre d'affichage est la première chose qui déroute. Le protocole Bitcoin calcule les hachages dans un sens et les affiche dans l'autre, si bien que les octets visibles sur un explorateur sont l'inverse des octets du fichier. Rien ne cloche lorsqu'un outil de développement vous montre une chaîne qui semble à l'envers.
SegWit a scindé l'identifiant en deux. Depuis l'activation du BIP141 au bloc 481 824, le 24 août 2017, l'identifiant de transaction est calculé sur la transaction sans ses données témoins, tandis qu'un second identifiant, le wtxid, couvre tout, signatures comprises. La raison est la malléabilité : les signatures pouvaient auparavant être réencodées par quiconque relayait la transaction, ce qui changeait l'identifiant tout en laissant l'argent aller exactement là où il allait. Mt. Gox a imputé à la malléabilité ses bitcoins manquants en février 2014, mais une étude de Decker et Wattenhofer a mesuré les attaques réelles et a conclu que seuls 386 BTC pouvaient être attribués à la malléabilité avant que la plateforme n'arrête les retraits, contre les centaines de milliers de bitcoins qu'elle avait perdus.
L'identifiant est aussi ce à quoi un bloc s'engage. Chaque identifiant de transaction d'un bloc est haché dans la racine de Merkle stockée dans l'en-tête du bloc, si bien qu'un mineur ne peut pas échanger discrètement un paiement contre un autre après coup.
Pourquoi cela compte quand vous achetez du bitcoin
L'identifiant de transaction est la seule preuve qui survit à l'écart entre deux entreprises. Lorsqu'un retrait depuis Coinbase ou Bitstamp n'est pas arrivé, le ticket d'assistance ne mène nulle part tant que vous ne le fournissez pas, et une fois que vous l'avez, vous n'avez plus besoin du ticket : collez la chaîne dans n'importe quel explorateur de blocs et vous pouvez voir vous-même les sorties, les frais et le nombre de confirmations. C'est aussi le moyen le plus rapide de savoir si le retard vient de la file d'attente de la plateforme d'échange ou du réseau.
Le cas inverse est le dangereux. Un identifiant de transaction prouve qu'un paiement existe, pas qu'il vous a été envoyé, pas qu'il sera confirmé, et pas que l'expéditeur est bien celui qu'il prétend être. Les vendeurs sur les places de marché pair-à-pair se voient couramment présenter une capture d'écran d'une page d'explorateur et remettent la marchandise avant de vérifier si une sortie de cette transaction paie une adresse qu'ils contrôlent. Vérifiez l'adresse, vérifiez le montant et vérifiez les confirmations, dans cet ordre.
Les identifiants non confirmés peuvent aussi disparaître. Le remplacement intégral par les frais (full replace-by-fee) est la politique de relais par défaut dans les versions modernes de Bitcoin Core, si bien qu'un expéditeur peut diffuser une version concurrente du même paiement, et cette version a un identifiant différent. Bitcoin Core écarte aussi les transactions qu'il garde depuis plus de 336 heures, ou 14 jours. Un explorateur qui affiche "transaction not found" signifie généralement que l'un de ces deux cas s'est produit, pas que vos bitcoins ont disparu.
Lire l'identifiant de transaction du bloc de genèse
L'identifiant de transaction le plus ancien du bitcoin est 4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b, l'unique transaction du bloc miné le 3 janvier 2009. Comme ce bloc ne contient qu'une seule transaction et rien d'autre, la racine de Merkle du bloc est la chaîne identique, ce qui illustre le plus clairement le fonctionnement de cet engagement.
Cette transaction paie 50 BTC à une clé publique, et Bitcoin Core n'a jamais ajouté la sortie à son ensemble de sorties non dépensées, si bien que l'identifiant désigne de l'argent qui ne pourra jamais bouger. Elle porte aussi, dans son champ coinbase, le titre de journal "The Times 03/Jan/2009 Chancellor on brink of second bailout for banks".
La dépendance va dans un seul sens. Changez une seule lettre de ce titre et l'identifiant de transaction comme la racine de Merkle deviennent méconnaissables, et c'est pourquoi un identifiant est une empreinte plutôt qu'une étiquette. Vous ne pouvez pas en choisir un, et vous ne pouvez pas modifier une transaction sans en produire un nouveau.
Identifiant de transaction vs adresse bitcoin
Une adresse est une destination et un identifiant de transaction est l'enregistrement d'un événement. Les adresses peuvent être distribuées à l'avance et réutilisées ; les identifiants n'existent qu'après la construction d'une transaction. Envoyer des bitcoins à un identifiant de transaction est impossible, et les portefeuilles rejettent la tentative parce que la chaîne échoue à la validation de la somme de contrôle d'une adresse. Les usurpateurs de services d'assistance exploitent la confusion en demandant « votre identifiant de transaction », puis en fournissant une adresse qui leur appartient.
Identifiant de transaction vs outpoint
Un identifiant de transaction désigne une transaction entière, qui peut payer 300 personnes différentes dans un seul lot d'une plateforme d'échange. Un outpoint désigne une sortie à l'intérieur de cette transaction, écrit sous la forme de l'identifiant, deux-points, puis index de la sortie. Les écrans de contrôle des pièces, les confirmations sur portefeuille matériel et les fichiers PSBT fonctionnent tous en outpoints, si bien qu'un identifiant seul ne suffit pas à dire de quelle pièce vous parlez.