
Analyse technique : Pourquoi les jetons à mécanisme déflationnaire sont-ils vulnérables aux attaques ?
TechFlow SélectionTechFlow Sélection

Analyse technique : Pourquoi les jetons à mécanisme déflationnaire sont-ils vulnérables aux attaques ?
Cet article examinera et analysera les raisons pour lesquelles les jetons en déflation ont été attaqués, puis proposera des solutions de défense appropriées.
Aperçu
Les jetons dotés d'un mécanisme déflationnaire sur la blockchain ont récemment été fréquemment attaqués. Cet article examine et analyse les raisons pour lesquelles ces jetons sont ciblés, puis propose des solutions de défense appropriées.
Il existe généralement deux façons d'implémenter un mécanisme déflationnaire dans un jeton : le mécanisme de brûlage (« burning ») et le mécanisme de réflexion (« reflection »). Nous allons analyser ci-dessous ces deux approches ainsi que les problèmes potentiels qu’elles peuvent présenter.
Mécanisme de brûlage
Habituellement, les jetons dotés d’un mécanisme de brûlage implémentent cette logique au sein de leur fonction _transfer. Parfois, l’expéditeur est chargé des frais de transaction. Dans ce cas, la quantité de jetons reçue par le destinataire ne change pas, mais l’expéditeur doit payer davantage car il supporte les frais. Voici un exemple simple :

Nous allons maintenant examiner les risques potentiels liés à cette situation.
En examinant uniquement le contrat du jeton, cette implémentation semble correcte. Toutefois, la blockchain comporte de nombreuses situations complexes nécessitant une attention particulière.
Typiquement, afin de donner une valeur marchande à un jeton, les projets ajoutent de la liquidité sur des bourses décentralisées telles qu’Uniswap ou Pancakeswap.
Sur Uniswap, il existe une fonction skim qui transfère au demandeur la différence entre le solde des deux jetons dans le pool de liquidité et leurs réserves, permettant ainsi de rééquilibrer ces valeurs :

À ce moment-là, l’expéditeur devient le pool de liquidité. Lorsque la fonction _transfer est appelée, une partie des jetons dans le pool est brûlée, entraînant une hausse partielle du prix du jeton.
Un attaquant peut exploiter cette caractéristique en envoyant directement des jetons vers le pool de liquidité, puis en appelant la fonction skim pour retirer la différence. En répétant plusieurs fois cette opération, une grande quantité de jetons dans le pool est brûlée, provoquant une envolée du prix. L’attaquant vend ensuite ses jetons pour réaliser un profit.
Un exemple réel d’attaque concerne le jeton Winner Doge (WDOGE) :

Dans la fonction _transfer du contrat WDOGE, lorsque block.timestamp > closingTime, on entre dans la boucle else. À la ligne 21 du code, le montant transféré est déduit du solde de l’expéditeur ; à la ligne 31, une quantité supplémentaire de jetons (tokensToBurn) est brûlée depuis le compte de l’expéditeur. L’attaquant exploite ce mécanisme de frais pour subtiliser, via la méthode décrite ci-dessus, toutes les liquidités en jetons de valeur (WBNB) du pool.

Mécanisme de réflexion
Dans le mécanisme de réflexion, chaque transaction prévoit des frais utilisés pour récompenser les détenteurs de jetons. Ce mécanisme n’entraîne pas de transfert réel, mais modifie simplement un coefficient.
Dans ce système, les utilisateurs possèdent deux types de quantités de jetons : tAmount (montant réel) et rAmount (montant réfléchi), avec un ratio égal à tTotal / rTotal. Une implémentation typique du code est la suivante :

Les jetons utilisant le mécanisme de réflexion incluent généralement une fonction nommée deliver, qui brûle les jetons du demandeur, réduisant ainsi la valeur de rTotal. Le ratio augmente alors, ce qui augmente aussi la quantité de jetons réfléchis pour les autres utilisateurs :

Les attaquants ont remarqué cette fonction et l’ont exploitée pour attaquer les pools de liquidité Uniswap correspondants.
Comment procèdent-ils ? Encore une fois, cela commence par la fonction skim d’Uniswap :

Sur Uniswap, « reserve » désigne les réserves, qui peuvent différer de token.balanceOf(address(this)).
L’attaquant appelle d’abord la fonction deliver pour brûler ses propres jetons, ce qui diminue rTotal, augmente le ratio, et donc augmente également la valeur des jetons réfléchis. Par conséquent, token.balanceOf(address(this)) augmente aussi, créant un écart avec la valeur de réserve.
L’attaquant peut alors appeler la fonction skim pour retirer une quantité de jetons égale à cet écart et ainsi réaliser un profit.

Un exemple concret d’attaque concerne le BEVO NFT Art Token (BEVO) :

Lorsque le contrat du jeton contient une fonction burn, une autre méthode similaire d’attaque devient possible :

Quand un utilisateur appelle la fonction burn, ses jetons sont brûlés et la valeur de tTotal diminue. Cela fait baisser le ratio, réduisant par conséquent la quantité de jetons réfléchis. Le nombre de jetons dans le pool de liquidité diminue alors, ce qui fait grimper le prix du jeton.
L’attaquant exploite cette propriété en appelant plusieurs fois la fonction burn pour réduire tTotal, puis en appelant la fonction sync du pool de liquidité afin de synchroniser les réserves et les soldes. À la fin, la quantité de jetons dans le pool chute fortement, entraînant une envolée du prix. L’attaquant vend ensuite ses jetons pour générer un profit.

Un exemple réel d’attaque concerne Sheep Token (SHEEP) :

Mesures de protection
En analysant les méthodes d’attaque contre les mécanismes de brûlage et de réflexion, on constate que le point central de l’attaque consiste à manipuler le prix dans le pool de liquidité. Ainsi, ajouter l’adresse du pool de liquidité à une liste blanche — excluant ainsi toute destruction de jetons ou participation au mécanisme de réflexion — permet d’éviter ce type d’attaque.
Conclusion
Cet article a analysé deux mécanismes courants de mise en œuvre des jetons déflationnaires, ainsi que les attaques spécifiques auxquelles ils sont exposés, avant de proposer des solutions adaptées. Lors de la rédaction de contrats intelligents, les porteurs de projet doivent impérativement tenir compte de l’intégration de leurs jetons avec les bourses décentralisées afin d’éviter de telles vulnérabilités.
Bienvenue dans la communauté officielle TechFlow
Groupe Telegram :https://t.me/TechFlowDaily
Compte Twitter officiel :https://x.com/TechFlowPost
Compte Twitter anglais :https://x.com/BlockFlow_News














