Introduction
Dans ce tutoriel, nous allons explorer la gestion des événements en Solidity, un langage de programmation orienté contrats pour la blockchain Ethereum. Les événements permettent de surveiller et réagir aux modifications effectuées dans les contrats intelligents. Ils sont très utiles pour informer les utilisateurs et les applications externes de l’état du contrat.
Nous utiliserons l’éditeur de code en ligne Remix pour nos exemples. Vous pouvez y accéder via l’URL suivante : https://remix.ethereum.org/
À quoi servent les événements ?
Les événements sont des mécanismes qui permettent aux contrats intelligents de signaler qu’un changement d’état a eu lieu. Ils sont essentiellement utilisés pour les raisons suivantes :
- Communication avec les applications externes : Les événements permettent aux applications externes de s’abonner et d’être informées des modifications apportées au contrat intelligent. Cela facilite la communication entre les contrats intelligents et les applications décentralisées (dApps).
- Traçabilité des transactions : Les événements sont enregistrés dans la blockchain avec les transactions qui les ont déclenchés. Cela permet de retrouver facilement l’historique des actions et des modifications apportées au contrat.
- Réduction des coûts de stockage : Les événements ne sont pas stockés dans le stockage permanent du contrat (state storage), mais dans les logs de la blockchain. Émettre un événement coûte moins de gaz que de stocker une valeur dans le contrat.
Étape 1: Déclaration des événements
Pour commencer, déclarons un événement dans notre contrat. Un événement est déclaré avec le mot-clé event
. Voici un exemple simple :
pragma solidity ^0.8.0;
contract ExempleEvenements {
event NouveauMessage(string message);
}
Dans cet exemple, nous avons déclaré un événement appelé NouveauMessage
qui prend une chaîne de caractères en argument.
Étape 2: Émission d’événements
Pour émettre un événement, nous utilisons le mot-clé emit
. Ajoutons une fonction qui émet notre événement NouveauMessage
:
pragma solidity ^0.8.0;
contract ExempleEvenements {
event NouveauMessage(string message);
function envoyerMessage(string memory _message) public {
emit NouveauMessage(_message);
}
}
La fonction envoyerMessage
prend une chaîne de caractères en argument et émet un événement NouveauMessage
avec cette chaîne.
Étape 3: Utilisation des événements dans Remix
Copiez et collez le code ci-dessus dans Remix. Déployez le contrat et utilisez la fonction envoyerMessage
. Vous verrez que l’événement est émis dans la section « logs » de Remix.
Voici comment lire les logs :
- Cliquez sur le bouton « deploy & run transactions » en haut à droite de la fenêtre Remix.
- Sous « Deployed Contracts », cliquez sur la flèche à côté du nom de votre contrat.
- Cliquez sur la fonction « envoyerMessage » et entrez un
message, par exemple « Bonjour ». 4. Cliquez sur le bouton bleu « transact » pour exécuter la fonction.
- Dans la section « logs », vous verrez l’événement
NouveauMessage
avec le message que vous avez envoyé.
Conclusion
Vous avez maintenant une meilleure compréhension de la gestion des événements en Solidity et de la manière d’interagir avec ces événements dans Remix. Les événements sont essentiels pour la communication entre les contrats intelligents et les applications externes, et ils sont un outil précieux pour le développement de contrats intelligents sur la blockchain Ethereum. Les événements permettent de créer des applications décentralisées réactives, d’améliorer la traçabilité des transactions et de réduire les coûts de stockage des données sur la blockchain.