MSTR Cat

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

Entrées et sorties

L’anatomie d’une transaction : outpoints, scripts et frais implicites

MatérielUn explorateur de blocs comme mempool.space ou blockchain.comUne calculatrice pour additionner des valeurs en satoshi

Curiosité

  1. Comment une transaction prouve-t-elle qu’elle a le droit de dépenser une valeur créée par une autre transaction ?
  2. S’il n’y a pas de champ explicite pour les frais, comment les mineurs savent-ils exactement ce qu’ils reçoivent en paiement ?
  3. Pourquoi la première transaction de chaque bloc est-elle structurellement inhabituelle ?

Explorer

  1. Une transaction Bitcoin est une structure de données dotée d’un numéro de version et d’un nLockTime, mais son cœur est constitué d’entrées et de sorties. Une entrée ne contient pas de valeur ; elle pointe vers une valeur. Chaque entrée fait référence à une sortie précédente précise au moyen d’un outpoint : le txid de 32 octets de la transaction source, plus un index de 4 octets indiquant quelle sortie de cette transaction est dépensée. Cette référence relie les transactions entre elles en une chaîne.
  2. Chaque entrée contient également des données de déverrouillage et un champ nSequence. Le nSequence régit les verrous temporels et les signaux de replace-by-fee (RBF). Les données de déverrouillage, stockées dans le scriptSig pour les transactions legacy ou dans la section witness pour SegWit, fournissent la preuve cryptographique nécessaire pour satisfaire les conditions de la sortie référencée. C’est là que se trouve la signature produite par la clé privée.
  3. C’est dans les sorties que réside la valeur. Chaque sortie précise un montant en satoshis, codé sur un entier de 8 octets, et un script de verrouillage (scriptPubKey) qui définit qui pourra la dépenser ultérieurement. Une même transaction peut avoir plusieurs entrées et plusieurs sorties, mais la somme des entrées doit être au moins égale à la somme des sorties.
  4. Les frais ne sont stockés nulle part. Ils sont déduits : c’est la différence entre la valeur totale consommée par les entrées et la valeur totale créée par les sorties. Ce reliquat revient au mineur qui inclut la transaction dans un bloc. Si les sommes étaient égales, les frais seraient nuls ; si les sorties dépassaient les entrées, la transaction serait invalide.
  5. La transaction coinbase est l’exception qui confirme la règle. Elle possède une entrée spéciale sans outpoint précédent, ce qui revient à créer de la valeur à partir de rien. Ses sorties contiennent la subvention de bloc (actuellement 3,125 BTC) ainsi que tous les frais perçus sur les autres transactions de ce bloc. Le txid de toute transaction est le double hachage SHA-256 de ses données sérialisées, à l’exclusion des données witness.
  6. Ouvrez un explorateur de blocs et recherchez le bloc 170, miné le 12 janvier 2009. Outre sa coinbase, il contient une seule transaction : Satoshi Nakamoto envoyant 10 BTC à Hal Finney. Son unique entrée dépense la sortie coinbase de 50 BTC du bloc 9. Elle comporte deux sorties : 10 BTC pour Finney et 40 BTC renvoyés à Satoshi. Les entrées comme les sorties totalisent 50 BTC, les frais sont donc nuls ; les premières transactions ne payaient souvent rien, car les blocs disposaient de beaucoup de place.

Faits clés

  • Une entrée fait référence à une sortie précédente au moyen d’un outpoint composé d’un txid et d’un index de sortie.
  • Les frais de transaction correspondent à la différence entre la somme des valeurs des entrées et la somme des valeurs des sorties.
  • Les sorties contiennent une valeur en satoshis codée sur 8 octets et un script de verrouillage (scriptPubKey).
  • Les entrées contiennent des données de déverrouillage (signature) ainsi qu’un champ nSequence pour les verrous temporels ou la signalisation RBF.
  • La transaction coinbase crée de nouveaux bitcoins au moyen d’une entrée spéciale sans outpoint précédent.
  • Le txid est le double hachage SHA-256 de la transaction sérialisée, à l’exclusion des données witness.

Exercice neuf, six, trois, un

9RassemblerExaminez 9 transactions récentes sur un explorateur de blocs. Pour chacune, notez le nombre d’entrées, le nombre de sorties et les frais en satoshis.
6RegrouperRegroupez les 9 en 6 selon leur structure : une entrée-une sortie, une entrée-deux sorties, plusieurs entrées-une sortie (consolidation), une entrée-plusieurs sorties (paiement groupé), plusieurs entrées-plusieurs sorties, ou autre.
3DistillerRéduisez les 6 à 3 raisons pour lesquelles une transaction comporte plusieurs entrées ou plusieurs sorties.
1CristalliserRédigez 1 phrase expliquant pourquoi Bitcoin peut laisser les frais implicites au lieu de les indiquer.

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