II.13 Qu'est-ce qu'une transaction ?
Maintenant, au lieu d'utiliser une simple chaîne de
caractères dans la data, nous allons-y insérer une transaction !
Nous avons des portefeuilles, il est temps de créer le processus pour
envoyer de l'argent d'un portefeuille à un autre. Ce processus est
appelé une transaction. Dans un premier temps, pour effectuer une
transaction, nous aurions besoin de
o Adresse du portefeuille de l'expéditeur.
o Adresse du portefeuille du récepteur.
o Montant à envoyer.
[83][84].
Prenons un aperçu d'un ajout d'une nouvelle transaction
dans la chaîne de blocs Bitcoin
Figure II- 15: New transaction
La transaction aura notre clé publique en tant
qu'émetteur, et la clé publique du destinataire, et nous signons
cela avec notre clé privée. Voir figure ci-dessous :
Chapitre II Fonctionnement de la blockchain
[55]
Figure II- 16: Signature de notre transaction avec
notre clé privée
La blockchain est maintenant capable d'utiliser notre
clé publique pour vérifier que nous sommes bien à
l'origine de cette transaction (fig. ci-dessous), que nous sommes bien
l'expéditeur et que la transaction n'a pas été
altérée par un tiers.
Figure II- 17: Blockchain vérifie que cette
transaction a bien été envoyée par le propriétaire
de la clé
privée
Donc une transaction doit nécessairement contenir :
o TxID : un identifiant
unique de transaction avec une fonction de crypto sha256 utilisées pour
identifier d'une façon exclusive une transaction.
o Input : l'adresse de puis
laquelle la transaction est émise.
o Output : les adresses
réceptrices des quantités échangées.
Dans la transaction ci-dessus, nous pouvons remarquer les
propriétés suivantes (83](84]:
[56]
Chapitre II Fonctionnement de la blockchain
Hacher
|
Cela fonctionne comme la clé unique de cette transaction.
C'est une combinaison de données incluses dans la transaction qui
crée cette clé.
|
Apparait dans
|
Dans quel bloc se trouve cette transaction.
|
Nombres d'entrées
|
Le nombre d'entrées. Les entrées sont des
références à des transactions dont le portefeuille, qui
souhaite envoyer de l'argent, a reçu de l'argent.
|
Total BTC en
|
Le nombre total de Bitcoins reçus par le portefeuille.
|
Nombre de sorties
|
Le nombre d'expéditeurs.
|
Total BTC out
|
Le nombre total de Bitcoins envoyés par le portefeuille.
Il doit être égal au « Total BTC in ». Si vous souhaitez
envoyer seulement une partie du montant de votre portefeuille, vous pouvez
envoyer la partie à la destination et le reste à
vous-même.
|
Taille
|
Taille des données en octets
|
Frais
|
Si vous souhaitez donner une petite récompense au bon ami
qui a pris votre transaction, l'ajoutez dans un bloc et trouvez un nonce pour
ce bloc afin qu'il puisse être ajouté dans la chaîne de
blocs.
|
|
Tableau II- 4: Propriété d'une
transaction
L'illustration suivante montre un exemple de transaction qui
prend 4 entrées et génère deux sorties (à
l'exclusion de la sortie de commission) :
Figure II- 18: Exemple de
transaction
o Entrée de transaction : Les
entrées de transaction font référence à une sortie
de transaction utilisable (UTXO) capturée dans la structure de
données de point d'entrée de transaction. De plus, un script doit
être ajouté avec une signature valide permettant à la
partie qui crée la transaction de réclamer l'UTXO
référencé [83][84].
Chapitre II Fonctionnement de la blockchain
[57]
Taille
|
Nom
|
Type
|
Commentaire
|
44
|
PreviousOutput
|
TransactionInputOutpoint
|
Référence à UTXO
|
4
|
Séquence
|
uint 32
|
L'index de l'entrée spécifique dans la
transaction
|
var.
|
Scénario
|
[] octet
|
Signature pour vérifier la propriété de la
clé publique de l'UTXO référencé
|
|
Tableau II- 5: Structure de données
Transaction Input
o Point d'entrée de transaction :
Les points d'entrée de transaction sont des
références aux sorties de transaction précédentes.
La référence est capturée avec un hachage de transaction,
un index de l'UTXO à réclamer et la valeur contenue dans
l'UTXO
(831(841.
Taille
|
Nom
|
Type
|
Commentaire
|
32
|
Hacher
|
[32] octet
|
Le hachage de la transaction référencée
|
4
|
Indice
|
Uint 32
|
L'index de la sortie spécifique dans la transaction
|
8
|
Valeur
|
uint64
|
Valeur UTXO
|
|
Tableau II- 6: Structure de données
Transaction Input Outpoint
o Sortie de transaction (831(841
Taille
|
Nom
|
Type
|
Commentaire
|
4
|
Indice
|
Uint 32
|
Paramètre de commande
|
8
|
Valeur
|
Uint 64
|
Valeur de sortie de transaction
|
var.
|
Scénario
|
[] octet
|
Script définissant les conditions pour revendiquer cette
sortie
|
32
|
NodeID
|
[32] octet
|
Clé publique du noeud qui souhaite participer au PoS
|
Tableau II- 7: Structure de données
Transaction Output
Chapitre II Fonctionnement de la blockchain
|