Bitcoin transaction

De Bitcoin Wiki
Ceci est la révision approuvée de la page, et aussi la plus récente.
Aller à : navigation, rechercher

Transaction est une section de données confirmée par la signature. Elle est transmis dans le réseau de Bitcoin bien qu'elle forme des blocs. Typiquement, elle contient des références à des transactions précédentes et associe un certain nombre des Bitcoins avec une ou plusieurs clés publiques (Bitcoin-adresses). Elle n'est pas cryptée parce qu’il n'y a rien à crypter dans le système de Bitcoin.

Navigateur de la chaîne des blocs est un endroit où toutes les transactions sont combinées en forme d'une chaîne de blocs. On peut les trouver et vérifier. Cela est nécessaire pour déterminer les paramètres techniques de transaction bien que pour vérifier la qualité de paiement.

Format général de Bitcoin transactions (dedans le bloc)[modifier]

Zone Description Taille
Numéro de version Maintenant 1 4 bytes
Contrôleur entrant Entier positif VI = VarInt 1-9 bytes
Liste des données entrantes On appelle premier entrée de la première transaction aussi comme une "base monétaire" (coinbase) <contrôleur entrant> beaucoup de données entrantes
Contrôleur sortant Entier positif VI = VarInt 1-9 bytes
Liste des données sortantes Données sortantes de la première transaction utilisent des Bitcoins trouvés pour le bloc <contrôleur sortant> beaucoup de données sortantes
Temps de verrouillage Si ils ne sont pas égales au 0 et numéros de séquence sont inférieurs à OxFFFFFFFF: hauteur du bloc ou marquage du temps (pour les transactions terminales) 4 bytes


Exemple de Bitcoin transaction avec une entrée et une sortie[modifier]

Données[modifier]

Input:
Previous tx: f5d8ee39a430901c91a5917b9f2dc19d6d1a0e9cea205b009ca73dd04470b9a6
Index: 0
scriptSig: 304502206e21798a42fae0e854281abd38bacd1aeed3ee3738d9e1446618c4571d10
90db022100e2ac980643b0b82c0e88ffdfec6b64e3e6ba35e7ba5fdd7d5d6cc8d25c6b241501
Output:
Value: 5000000000
scriptPubKey: OP_DUP OP_HASH160 404371705fa9bd789a2fcd52d2c580b65d35549d
OP_EQUALVERIFY OP_CHECKSIG

Interprétation[modifier]

L'entrée dans cette transaction importe 50 BTC de la sortie # 0 dans les transactions f5d8..., puis la sortie envoie 50 BTC sur un Bitcoin-adresse (exprimé ici en forme d'un système hexadécimal - 4043 ...). Quand le destinataire veut dépenser son argent, il fera référence à la sortie # 0 de cette transaction pour l'entrée de sa propre transaction.

Entrée[modifier]

Entrée est une référence à la sortie d'une autre transaction. Transaction possède souvent plusieurs entrées. Les valeurs de ces références sont résumées, et la quantité totale de Bitcoins peut être utilisées lors de la sortie d'une transaction courante. Previous tx est un hash d'une transaction précédente. Index est une certaine sortie de cette transaction. ScriptSig est une première moitié du script (plus détaillé sur ce point - ci-dessous).

Script comprend deux composants: signature et clé publique. La clé publique appartient au l'utilisateur qui applique les sorties de transaction et confirme que le créateur de transaction a le droit de disposer de la somme obtenue des sorties. Un autre composant est ECDSA (signature du hash d'une version simplifiée de la transaction).` Dans une combinaison avec la clé publique cette signature confirme que la transaction a été créée par un vrai propriétaire de ce Bitcoin-adresse.

Sortie[modifier]

Sortie contient des instructions sur l'envoi des bitcoins. Valeur est un nombre de satoshi (1 BTC = 100000000 satoshi), qui peut être utiliser par la transaction pour laquelle une transaction courante sera comme l'entrée. ScriptPubKey est une deuxième moitié du script (sera examinée ci-après). On peut avoir plus d'une sortie et elles vont partager entre eux une somme venant des entrées. Chaque sortie de transactions peut être utilisée comme l'entrée pour la prochaine transaction seulement une seule fois, de sorte que la somme de toutes les entrées de la transaction courante doit être utilisée lors de ses sorties. Sinon la somme restante des entrées de la transaction sera perdue. Par exemple, si l'entrée est égale aux 50 BTC et l'utilisateur doit envoyer seulement 25 BTC, bitcoin crée deux sorties de 25 BTC chacun: l'une ira à la destination, et l'autre ira encore une fois au propriétaire des fonds (le soi-disant "reste" - une transaction laquelle en fait l'utilisateur envoie à lui-même). Toute somme des entrées des bitcoins sans l'application lors des sorties devient un taxe de la transaction. Personne qui génère le bloc obtiendra ce taxe.

Vérification de la transaction[modifier]

Afin de vérifier si les entrées sont enregistrées pour application des sommes indiquées dans les sorties des transactions précédentes, Bitcoin utilise le système standard du script (voir ci-dessous) de scriptSig - entrée et scriptPubKey - sortie auxquels cette transaction fait-elle référencé . Ils sont évalués à l'aide de scriptPubKey en utilisant les valeurs restantes dans l'ensemble de scriptSig.

L'entrée est confirmée si le script scriptPubKey retourne une valeur "vrai". Grâce au système de script, l'expéditeur peut créer des conditions très complexes à remplir par les personnes qui veulent obtenir la valeur sortante. Par exemple, c'est possible de créer l'entrée et tout utilisateur l'obtiendra sans autorisation. Il est également possible de demander que l'entrée a été signé par 10 clés différentes ou vérifié par mot de passe.

Format général de chaque entrée de transaction - Txin[modifier]

Zone Description Taille
Hash d'une transaction précédente L'entremêlement double SHA256 d'une transaction précédente 32 bytes
Txout-indice précédent Entier arithmétique. Il indexe les sorties d'une transaction précédente 4 bytes
Longueur du script Txin Entier arithmétique VI = VarInt 1-9 bytes
Txin-script / scriptSig Script <longueur dedans le script> beaucoup de bytes
numéro de séquence normalement 0[FFFFFFFF; fonctionne en cas si le temps de verrouillage de transaction > 0 4 bytes

L'entrée décrit adéquatement où et comment peut-on obtenir le nombre des bitcoins qui peuvent être disposer par leur nouveau propriétaire. Si c'est la seule entrée de la première transaction du bloc, elle est appelée l'entrée d'une transaction générée. Son contenu est complètement ignoré.

Format général de chaque sortie de transaction - Txout[modifier]

Zone Description Taille
valeur Entier arithmétique donnant une somme de satoshi (BTC/10^8) nécessaires pour les transactions 8 bytes
Longueur du Txout-script Ensemble arithmétique 1-9 bytes
Txout-script / scriptPubKey Script <longueur du script sortant> beaucoup de bytes

Sortie détermine les conditions de l'utilisation des données de Bitcoin dans les transactions suivantes. Somme des valeurs de sortie de la première transaction dans le bloc est une valeur des Bitcoins tirés pour le bloc. On ajoute ici une somme du taxe des autres transactions intégrées dans ce bloc.