5 minutes de lecture
Aperçu
Les transactions sur Ethereum sont des messages de données signés cryptographiquement qui contiennent un ensemble d'instructions. Ces instructions peuvent consister à envoyer de l'Ether d'un compte Ethereum à un autre ou à interagir avec un contrat intelligent déployé sur la blockchain. Les transactions constituent un concept simple mais puissant qui a permis aux utilisateurs du monde entier d'interagir au sein d'un réseau décentralisé. Ce guide abordera le concept des transactions dans le contexte du réseau Ethereum.
Ce que nous allons aborder
- Principes fondamentaux des transactions
- Architecture des transactions
- Consultation des données de transaction par programmation
Ce dont vous aurez besoin
- Fenêtre du terminal
Principes fondamentaux des transactions
Une transaction comprend généralement les paramètres suivants : [nonce, gasPrice, gasLimit, to, value, data, v, r, s]. Cependant, Ethereum a évolué pour prendre en charge d’autres normes de transaction, telles que l’EIP-1559. La norme de transaction EIP-1559 est issue d’une proposition d’amélioration visant à rendre les frais de gaz plus prévisibles et à rendre le marché des transactions plus efficace. Avant d’aborder les transactions, rappelons rapidement d’où elles proviennent.
Comptes
Il existe deux types de comptes : les comptes de contrats intelligents et les comptes détenus par des tiers (EOA) :
-
Les comptes détenus par des tiers (EOA) désignent les comptes gérés par des personnes, tels qu’un portefeuille Metamask ou Coinbase personnel. Ce type de compte est identifié par une clé publique (également appelée « adresse de compte ») et contrôlé par une clé privée. La clé publique est dérivée de la clé privée à l’aide d’un algorithme cryptographique. Il est important de noter que ces comptes ne peuvent stocker aucune information autre que le solde de votre compte et le nonce.
-
Les comptes de contrats intelligents (également appelés « comptes de contrat ») comportent eux aussi une correspondance entre une adresse et un solde, mais se distinguent en ce qu’ils peuvent également inclure du code EVM et de l’espace de stockage. Les comptes de contrat s’autogèrent selon la logique définie dans le code EVM stocké au sein du compte.
Ethereum utilise l'algorithme de signature numérique à courbe elliptique (ECDSA) pour prouver l'authentification (c'est-à-dire pour prouver que nous disposons d'une clé privée correspondant à notre adresse publique) et vérifier que notre transaction provient bien du compte qui la signe et qu'elle n'est pas frauduleuse.
Types de transactions
Faisons le lien entre ce que nous venons d'apprendre sur les comptes et les différents types d'opérations:
- Transaction d'appel de message: un appel de message provient d'un compte détenu par un tiers (EOA) qui souhaite interagir avec un autre compte EOA ou un compte de contrat. Un exemple d'appel de message serait l'envoi d'Ether d'un compte à un autre, ou l'interaction avec un contrat intelligent (par exemple, l'échange de jetons sur Uniswap).
- Transaction de création de contrat: une création de contrat est une opération émanant d'un compte EOA visant à créer un compte de contrat intelligent (généralement pour héberger du code et de l'espace de stockage). Le déploiement d'un contrat intelligent de stockage destiné à stocker des données constitue un exemple de ce type de transaction.
États des transactions
- En attente: transactions diffusées sur le réseau en attente d'être validées. Si la transaction prend plus de temps que prévu, il est possible que vos frais de gaz ne soient pas suffisamment élevés pour garantir son exécution à ce moment-là.
- En attente: transaction qui ne peut pas encore être validée en raison de la présence d'une autre transaction en attente devant elle dans la file d'attente ou d'un nonce hors séquence.
- Annulé: ne peut plus être miné. Remplacé par une transaction comportant des frais de gaz plus élevés, la même valeur de nonce et une valeur nulle pour le champ « data » et/ou « value ».
- Remplacé: ne peut plus être miné. Sert à remplacer les ordres en attente afin d'accélérer leur exécution ou de modifier leurs valeurs et leurs données. Cela implique également d'utiliser le même nonce que la transaction que vous souhaitez annuler et de payer des frais de gaz plus élevés.
- Échec: transaction ayant généré une erreur en raison d'une annulation, d'instructions incorrectes, d'un code illogique ou d'un manque de gaz pour exécuter le reste d'un appel de fonction.
Pour en savoir plus sur les transactions en attente et mises en file d'attente, consultez notre guide Quicknode ici.
Architecture des transactions
Le format de transaction d'Ethereum était à l'origine unique, mais il a évolué au fil du temps pour permettre d'autres formats de transaction. L'ensemble des instructions contenues dans un objet de transaction se présente comme suit :
from- l'adresse d'expédition.to– l'adresse de destination (s'il s'agit d'un compte EOA, la transaction permettra de transférer des fonds ; s'il s'agit d'un compte de contrat intelligent, la transaction utilisera le code du contrat).valeur– le montant en ETH à envoyer depuis l'adresse d'origine (exprimé en Wei)données– peut contenir du code ou un message destiné au destinataire.gasLimit– le nombre maximal d'unités de gaz pouvant être utilisées.Nonce- un numéro servant à suivre l'ordre des transactions et à empêcher les attaques par rejeumaxPriorityFeePerGas- le montant maximal de gaz à inclure à titre de pourboire pour le mineur.maxFeePerGas- le montant maximal de gaz que l'on est prêt à payer pour la transaction (y compris « baseFeePerGas » et « maxPriorityFeePerGas »).signature– dérivée de la clé privée du compte émetteur et créée lorsque l'émetteur signe la transaction.
Comme vous pouvez le constater dans les champs ci-dessus, le terme « gas » revient à plusieurs reprises. Il s’agit d’un élément essentiel d’une transaction. Les transactions utilisent le « gas » comme carburant pour s’exécuter et être enregistrées sur la blockchain, mais surtout, les frais de « gas » contribuent à assurer la sécurité du réseau Ethereum. Le « gas » est payé en Ether (la cryptomonnaie native d’Ethereum), mais il est exprimé en d’autres unités telles que les Wei et les Gwei afin d’être plus facilement mesurable. Le Wei est utilisé pour décrire les transactions de faible valeur, tandis que le Gwei est couramment utilisé lorsqu’il s’agit des frais de « gas ».
Cycle de vie d'une transaction
Le cycle de vie d'une transaction peut se résumer ainsi :
- Un compte externe crée un objet de transaction.
- Le compte à l'origine de la transaction la valide en la signant, ce qui génère un hachage de transaction.
- La transaction est diffusée sur le réseau via un nœud Ethereum.
- L'exécution de la transaction reste en attente jusqu'à ce que celle-ci soit validée et ajoutée au bloc, ou qu'elle soit remplacée ou annulée.
Configurer votre point de terminaison Quicknode pour Ethereum
Maintenant, mettons en pratique tout ce que nous avons appris. Nous allons facilement configurer un point de terminaison Ethereum avec Quicknode et l'utiliser pour récupérer une transaction à partir de son hachage. Si vous disposez déjà d'un compte, rendez-vous sur la page « Endpoints » et lancez un point de terminaison Ethereum sur le réseau principal. Sinon, créez un compte sur notre page d'inscription.

Consultation des données de transaction par programmation
Commencez par ouvrir votre fenêtre de terminal et exécutez la commande boucle (vérifiez que vous disposez des dépendances nécessaires). Si vous obtenez la réponse (essayez curl --help ou curl --manual (pour plus d'informations), parfait, vous disposez des dépendances requises et pouvez exécuter le code curl ci-dessous.
Copiez le code ci-dessous et remplacez l'espace réservé à l'URL par votre point de terminaison Quicknode. Collez le code modifié dans votre terminal et appuyez sur Entrée.
curl -X POST https://YOUR-QUICKNODE-ENDPOINT \
-X POST \
-H "Content-Type: application/json" \
--data '{"method":"eth_getTransactionByHash","params":["0xb1fac2cb5074a4eda8296faebe3b5a3c10b48947dd9a738b2fdf859be0e1fbaf"],"id":1,"jsonrpc":"2.0"}'
Le résultat doit contenir les mêmes valeurs que celles indiquées ci-dessous :

La plupart des données renvoyées sont au format hexadécimal, mais si vous souhaitez les décoder facilement, vous pouvez utiliser des outils tels qu’Etherscan ou des bibliothèques de programmation comme Ethers ou Web3.py.
Pour découvrir d'autres points de terminaison RPC Quicknode que vous pouvez appeler, rendez-vous sur notre documentation Quicknode.
Conclusion
Et voilà ! Dans ce guide, nous avons expliqué les concepts fondamentaux des transactions sur Ethereum. N'oubliez pas qu'Ethereum fonctionne selon un modèle de « solde de compte » et qu'il permet d'utiliser différents types de transactions en fonction des cas d'utilisation. Nous espérons que vous continuerez à approfondir vos connaissances et à les partager avec d'autres.
Abonnez-vous à notre newsletter pour découvrir d'autres articles et guides sur Ethereum. N'hésitez pas à nous contacter sur Twitter si vous avez des commentaires. Vous pouvez également discuter avec nous sur notre serveur Discord, où vous rencontrerez certains des développeurs les plus géniaux qui soient :)
Nous ❤️ les commentaires !
Faites-nous savoir si vous avez des commentaires ou des suggestions de nouveaux sujets. Nous serions ravis de vous entendre.
