Glossaire / Transactions et frais
Transaction bitcoin
Aussi appelé Transaction.
- Qu'est-ce qu'une transaction bitcoin ?
- Une transaction bitcoin est une instruction signée qui détruit des bitcoins existants et en crée de nouveaux à la place, et c'est le seul moyen par lequel de la valeur circule sur le réseau.
Rien dans le bitcoin ne détient un solde. Le registre est un ensemble de sorties non dépensées, un paiement consomme des sorties entières et en crée de nouvelles, et ce qui reste va au mineur sous forme de frais. La toute première jamais réalisée a déplacé 10 bitcoin de Satoshi Nakamoto à Hal Finney dans le bloc 170 le 12 janvier 2009, et comme toutes celles qui ont suivi, elle ne pouvait pas être annulée.
Comment cela fonctionne
Une transaction bitcoin est une courte structure binaire en six parties, et le portefeuille assemble l'ensemble avant toute diffusion.
La version fait 4 octets. La version 1 était l'originale ; la version 2 existe parce que le BIP68 a donné un nouveau sens aux numéros de séquence pour les verrous temporels relatifs, et les portefeuilles modernes la définissent par défaut. Viennent ensuite les entrées, chacune nommant une sortie créée précédemment et portant la preuve du droit de la dépenser. Puis les sorties, chacune contenant un montant en satoshis et un script de verrouillage qui indique qui peut la dépenser ensuite. Les transactions SegWit ajoutent une section témoin contenant les signatures, qui se situe en dehors de la partie qui détermine l'identifiant de transaction. Enfin vient le locktime, 4 octets, généralement défini sur la hauteur de bloc actuelle pour qu'une transaction ne puisse pas être tirée dans un bloc antérieur.
Il n'existe aucun champ de frais dans cette structure. Les frais sont arithmétiques : la valeur totale des entrées moins la valeur totale des sorties, et tout ce que vous ne parvenez pas à attribuer à une sortie est remis à celui qui mine le bloc. C'est pourquoi un bug de portefeuille qui calcule mal la monnaie peut jeter de l'argent réel, et pourquoi chaque portefeuille crée une sortie de monnaie vers lui-même plutôt que de laisser un reste.
La signature lie le tout. Selon la règle par défaut SIGHASH_ALL, chaque signature engage toutes les entrées et toutes les sorties, si bien que modifier un seul satoshi d'une seule sortie invalide toutes les signatures de la transaction. C'est ce qui rend une transaction diffusée définitive dans son contenu, mais pas encore dans sa confirmation.
La taille se mesure en octets virtuels plutôt qu'en octets bruts, car SegWit réduit les données témoin à un quart de leur poids, et les blocs sont plafonnés par un budget de 4 millions d'unités de poids. Une dépense SegWit native à une entrée et deux sorties représente environ 141 octets virtuels.
Pourquoi cela compte quand vous achetez du bitcoin
Deux choses complètement différentes sont appelées « envoyer du bitcoin » sur une plateforme d'échange, et une seule est une transaction.
Déplacer des bitcoins entre comptes au sein de la même plateforme est une mise à jour de base de données. C'est instantané, généralement gratuit, et cela ne laisse aucune trace sur la blockchain, car aucune transaction n'a été réalisée. Retirer vers une adresse que vous contrôlez construit une véritable transaction, paie de véritables frais, attend un véritable bloc, et c'est la seule version qui se termine avec vous propriétaire de bitcoins plutôt que titulaire d'une créance sur une entreprise.
Une fois que vous retirez, trois conséquences pratiques en découlent.
Vous ne pouvez pas l'annuler. Replace-by-fee permet à l'expéditeur d'augmenter les frais tant qu'une transaction n'est pas confirmée, mais seul le portefeuille qui l'a construite peut le faire, et une plateforme d'échange ne le fera pas à votre place. Vérifiez l'adresse avant d'approuver, pas après.
Chaque dépôt que vous recevez devient une sortie que vous paierez plus tard pour dépenser. Dix petits achats laissent dix sorties, et un paiement futur qui doit dépenser les dix coûte plusieurs fois ce qu'une seule sortie importante coûterait. Retirer en moins de fois et en montants plus importants est l'habitude la moins chère du bitcoin, et l'adopter ne coûte rien.
Les frais que votre plateforme d'échange facture correspondent à un montant fixé par sa politique, pas aux frais du réseau. Ils sont fixés à l'avance et suivent rarement le mempool, si bien qu'un jour calme vous pouvez payer plusieurs fois le coût réel et un jour chargé bien moins. Les avis de plateformes d'échange sur ce site indiquent comment chaque plateforme traite les retraits, et celles qui vous laissent choisir votre propre taux de frais méritent la préférence.
Lire un vrai retrait, champ par champ
Supposez que vous achetez 0,05 BTC et que vous les retirez. Ce qui apparaît sur un explorateur de blocs vous embrouillera probablement, car la transaction n'est pas la vôtre seule.
Les grandes plateformes d'échange regroupent les retraits. Une seule transaction de retrait peut dépenser 3 entrées du portefeuille chaud, d'une valeur totale de 2,41 BTC, et créer 42 sorties, dont l'une est vos 0,05 BTC et dont l'une est la monnaie qui revient à la plateforme. À environ 68 octets virtuels par entrée, 31 octets par sortie, et environ 11 octets de surcoût, cette transaction approche les 1 517 octets virtuels. À un taux de frais de 6 sat/vB, le mineur reçoit environ 9 102 satoshis, ce qui revient à environ 217 satoshis pour chaque client du lot. Envoyé seul, votre retrait aurait fait environ 141 octets virtuels et coûté environ 846 satoshis.
L'explorateur montre donc une transaction déplaçant bien plus de bitcoin que vous n'en avez retiré, avec des dizaines de destinataires dont vous n'avez jamais entendu parler. Rien ne cloche. Trouvez votre propre sortie par montant et par adresse, notez l'identifiant de transaction, et ignorez le reste.
Transaction bitcoin vs txid
Une transaction est l'objet ; un txid en est l'empreinte. L'identifiant est un hachage double SHA-256 de la transaction sérialisée, hors données témoin, écrit sous forme de 64 caractères hexadécimaux, et il existe pour qu'une transaction puisse être référencée sans être répétée. Les services d'assistance demandent le txid, les explorateurs l'indexent, et les transactions ultérieures y renvoient. Ce qu'il n'est pas, c'est un reçu : un txid prouve qu'une transaction au contenu exact existe, et ne dit rien sur qui l'a envoyée ni pourquoi.
Transaction bitcoin vs PSBT
Un PSBT est une transaction qui n'est pas encore terminée. Le format, défini dans le BIP174, contient les entrées et les sorties ainsi que les informations supplémentaires dont un signataire a besoin, comme la valeur et le script de chaque entrée dépensée, et il circule entre appareils plutôt que sur le réseau. Les configurations air-gapped et multisig en dépendent : un signataire hors ligne lit le PSBT, ajoute sa signature et le renvoie. Ce n'est qu'une fois chaque entrée signée que le fichier est finalisé en une transaction que le réseau acceptera, et jusque-là rien n'a été envoyé.