Aider à mettre à jour cette page

🌏

Il existe une nouvelle version de cette page, mais seulement en anglais pour le moment. Aidez-nous à traduire la dernière version.

Cette page est incomplète. Si vous êtes un expert sur le sujet, veuillez éditer cette page et l'enrichir de votre sagesse.

Transactions

Dernière modification: , Invalid DateTime
Edit page

Les transactions sont des instructions signées cryptographiquement depuis des comptes. Un compte va initier une transaction pour mettre à jour l'état du réseau Ethereum. La transaction la plus simple consiste à transférer de l'ETH d'un compte à un autre.

Prérequis

Pour vous aider à mieux comprendre cet article, nous vous recommandons de commencer par lire les pages Comptes et Introduction à Ethereum.

Qu'est-ce qu'une transaction ?

Une transaction Ethereum est une action initiée par un compte externe, c'est-à-dire un compte géré par un être humain et non par un contrat. Par exemple, si Marc envoie 1 ETH à Alice, le compte de Marc doit être débité et celui d'Alice doit être crédité. Cette action, qui modifie l'état, se produit dans le cadre d'une transaction.

Diagramme montrant un changement d'état de cause de la transaction Schéma adapté à partir du document Ethereum EVM illustrated

Les transactions, qui modifient l'état de l'EVM, doivent être diffusées sur l'ensemble du réseau. N'importe quel nœud peut diffuser une demande pour qu'une transaction soit exécutée sur l'EVM. Un mineur exécutera ensuite la transaction et propagera au reste du réseau le changement d'état qui en résultera.

Les transactions génèrent des frais et doivent être minées pour devenir valides. Pour simplifier cette présentation, nous couvrirons les frais de carburant et le minage dans un autre article.

Une transaction soumise comprend les informations suivantes :

  • recipient : Adresse de réception (S'il s'agit d'un compte externe, la transaction va transférer la valeur. S'il s'agit d'un compte de contrat, la transaction exécutera le code du contrat.)
  • signature : Identifiant de l'expéditeur. Cette signature est générée lorsque la clé privée de l'expéditeur signe la transaction, et confirme que l'expéditeur a autorisé cette transaction.
  • value : Quantité d'ETH à transférer de l'expéditeur au destinataire (en WEI, une dénomination de l'ETH).
  • data : Champ facultatif pour inclure des données arbitraires.
  • gasLimit : Quantité maximum d’unités de carburant pouvant être consommée par la transaction. Les unités de carburant représentent les étapes de calcul.
  • gasPrice : Les frais que l’expéditeur paye par unité de carburant

Le carburant est une référence au calcul nécessaire au traitement de la transaction par un mineur. Les utilisateurs doivent payer des frais pour ce calcul. Les paramètres gasLimit et gasPrice déterminent les frais de transaction maximum payés au mineur. Plus d'infos sur le carburant

L'objet de transaction ressemblera un peu à ceci :

1{
2 from: "0xEA674fdDe714fd979de3EdF0F56AA9716B898ec8",
3 to: "0xac03bb73b6a9e108530aff4df5077c2b3d481e5a",
4 gasLimit: "21000",
5 gasPrice: "200",
6 nonce: "0",
7 value: "10000000000",
8}
9
📋 Copier

Un objet de transaction doit être signé avec la clé privée de l'expéditeur. Cela prouve que la transaction ne pouvait venir que de l'expéditeur et n'a pas été envoyée de façon frauduleuse.

Un client Ethereum comme Geth gérera ce processus de signature.

Exemple d'appel JSON-RPC :

1{
2 "id": 2,
3 "jsonrpc": "2.0",
4 "method": "account_signTransaction",
5 "params": [
6 {
7 "from": "0x1923f626bb8dc025849e00f99c25fe2b2f7fb0db",
8 "gas": "0x55555",
9 "gasPrice": "0x1234",
10 "input": "0xabcd",
11 "nonce": "0x0",
12 "to": "0x07a565b7ed7d7a678680a4c162885bedbb695fe0",
13 "value": "0x1234"
14 }
15 ]
16}
17
Afficher tout
📋 Copier

Exemple de réponse :

1{
2 "jsonrpc": "2.0",
3 "id": 2,
4 "result": {
5 "raw": "0xf88380018203339407a565b7ed7d7a678680a4c162885bedbb695fe080a44401a6e4000000000000000000000000000000000000000000000000000000000000001226a0223a7c9bcf5531c99be5ea7082183816eb20cfe0bbc322e97cc5c7f71ab8b20ea02aadee6b34b45bb15bc42d9c09de4a6754e7000908da72d48cc7704971491663",
6 "tx": {
7 "nonce": "0x0",
8 "gasPrice": "0x1234",
9 "gas": "0x55555",
10 "to": "0x07a565b7ed7d7a678680a4c162885bedbb695fe0",
11 "value": "0x1234",
12 "input": "0xabcd",
13 "v": "0x26",
14 "r": "0x223a7c9bcf5531c99be5ea7082183816eb20cfe0bbc322e97cc5c7f71ab8b20e",
15 "s": "0x2aadee6b34b45bb15bc42d9c09de4a6754e7000908da72d48cc7704971491663",
16 "hash": "0xeba2df809e7a612a0a0d444ccfa5c839624bdc00dd29e3340d46df3870f8a30e"
17 }
18 }
19}
20
Afficher tout
📋 Copier
  • raw est la transaction signée sous forme de préfixe de longueur récursive (RLP)
  • tx est la transaction signée sous la forme JSON

Grâce au hachage de la signature, il est possible de prouver de façon cryptographique que la transaction provient de l'expéditeur et qu'elle a été soumise au réseau.

À propos du carburant

Comme mentionné, les transactions ont un coût en carburant pour être exécutées. Les transactions de transfert simples requièrent 21 000 unités de carburant.

Pour que Marc envoie 1 ETH à Alice à un gasPrice de 200 GWEI, il devra payer les frais suivants :

1200*21 000 = 4 200 000 GWEI
2--ou--
30,0042 ETH
4

Le compte de Marc sera débité de -1,0042 ETH.

Celui d'Alice sera crédité de +1,0 ETH.

Le mineur traitant la transaction recevra +0,0042 ETH.

Du carburant est également requis pour toute interaction avec un contrat intelligent.

Diagramme montrant comment le carburant inutilisé est remboursé Schéma adapté à partir du document Ethereum EVM illustrated

Tout carburant non utilisé dans une transaction est remboursé sur le compte de l'utilisateur.

Cycle de vie des transactions

Voici ce qui se passe une fois qu'une transaction a été soumise :

  1. Quand vous envoyez une transaction, la cryptographie génère un hash de transaction : 0x97d99bc77292111a21b12c933c949d4f31684f1d6954ff477d0477538ff017
  2. La transaction est ensuite diffusée sur le réseau et incluse dans un groupe comportant de nombreuses autres transactions.
  3. Un mineur doit sélectionner votre transaction et l'inclure dans un bloc pour la vérifier et la considérer comme "réussie".
    • Il peut exister un délai d'attente à ce stade quand le réseau est occupé et que les mineurs ne sont pas en mesure de suivre. Les mineurs donnent toujours la priorité aux transactions dont le GASPRICE est élevé, car ils gardent le montant des frais.
  4. Votre transaction recevra également un numéro de confirmation de bloc. Il s'agit du nombre de blocs créés depuis le bloc dans lequel votre transaction a été incluse. Plus le nombre est élevé, plus la certitude que la transaction a été traitée et reconnue par le réseau est grande. En effet, il arrive que le bloc dans lequel votre transaction était incluse n'ait pas été intégré à la chaîne.
    • Plus le numéro de confirmation de bloc est grand, plus la transaction est immuable. Ainsi, pour les transactions de grande valeur, un plus grand nombre de confirmations de blocs peut être souhaité.

Démonstration visuelle

Regardez Austin vous guider à travers les transactions, le carburant et le minage.

Complément d'information

Une ressource communautaire vous a aidé ? Modifiez cette page et ajoutez-la !

👈
PrécédentComptes
SuivantBlocs
👉