Passer au contenu principal

Journaliser les données des contrats intelligents avec les événements

contrats intelligents
Remix
Solidity
événements
Intermédiaire
jdourlens
3 avril 2020
2 minutes de lecture

Dans Solidity, les événements sont des signaux émis que les contrats intelligents peuvent déclencher. Les applications décentralisées (dapps), ou tout ce qui est connecté à l'API JSON-RPC d'Ethereum, peuvent écouter ces événements et agir en conséquence. Un événement peut également être indexé afin que l'historique des événements puisse être consulté ultérieurement.

Événements

L'événement le plus courant sur la chaîne de blocs Ethereum au moment de la rédaction de cet article est l'événement Transfert qui est émis par les jetons ERC-20 lorsque quelqu'un transfère des jetons.

event Transfer(address indexed from, address indexed to, uint256 value);

La signature de l'événement est déclarée à l'intérieur du code du contrat et peut être émise avec le mot-clé emit. Par exemple, l'événement de transfert journalise qui a envoyé le transfert (from), à qui (to) et combien de jetons ont été transférés (value).

Si nous revenons à notre contrat intelligent Counter et décidons de journaliser chaque fois que la valeur est modifiée. Comme ce contrat n'est pas destiné à être déployé mais à servir de base pour construire un autre contrat en l'étendant : il est appelé un contrat abstrait. Dans le cas de notre exemple de compteur, cela ressemblerait à ceci :

Remarquez que :

  • Ligne 5 : nous déclarons notre événement et ce qu'il contient, l'ancienne valeur et la nouvelle valeur.

  • Ligne 13 : Lorsque nous incrémentons notre variable count, nous émettons l'événement.

Si nous déployons maintenant le contrat et appelons la fonction d'incrémentation, nous verrons que Remix l'affichera automatiquement si vous cliquez sur la nouvelle transaction dans un tableau nommé logs.

Remix screenshot

Les journaux sont vraiment utiles pour déboguer vos contrats intelligents, mais ils sont également importants si vous créez des applications utilisées par différentes personnes et facilitent la réalisation d'analyses pour suivre et comprendre comment votre contrat intelligent est utilisé. Les journaux générés par les transactions sont affichés dans les explorateurs de blocs populaires et vous pouvez également, par exemple, les utiliser pour créer des scripts hors chaîne afin d'écouter des événements spécifiques et de prendre des mesures lorsqu'ils se produisent.