Bonjour à tous,
Je suis en train de refactorer les événements et les erreurs de nos palettes Substrate. Pour rappel, “une palette peut émettre des événements lorsqu’elle souhaite envoyer des notifications sur des changements ou des conditions en cours d’exécution à des entités externes telles que des utilisateurs, des explorateurs de chaînes ou des applications décentralisées (dApps)”.
La liste des événements est alors placée dans le bloc et ne coûte qu’une lecture et deux écritures par bloc, donc leur coût est relativement faible, et le choix d’en ajouter/retirer est dicté par leur utilité pour le front-end.
Actuellement, toutes nos palettes implémentent des événements positifs (IdtyCreated {idty_index: T::IdtyIndex, owner_key: T::AccountId}) et des erreurs en cas d’échec (IdtyAlreadyCreated). Il est à noter que les erreurs ne peuvent pas contenir d’arguments. Seule la palette quota implémente des événements négatifs (NoQuotaForIdty(IdtyId).
Une stratégie de refactoring pourrait être la suivante :
- Conserver les événements positifs.
- Ajouter des événements négatifs en cas d’erreurs nominatives (IdtyAlreadyCreated, NoQuotaForIdty) qui permettraient d’informer directement l’utilisateur de la raison de l’échec.
- Conserver les erreurs qui sont obligatoires lorsqu’un extrinsic échoue,
et ne pas les accompagner d’un événement négatif lorsque l’erreur
dépend de l’état de la chaîne et non d’un problème inhérent à
l’utilisateur (RefundQueueFull).
La question est de savoir (et plus particulièrement pour ceux travaillant en front-end) si un refactoring en profondeur leur est utile, ou si l’état actuel (avec une harmonisation entre palettes et une bonne documentation) est suffisant et s’il y a d’autres besoins.