Une transaction ERC-20 échoue généralement parce que la blockchain a rejeté ses paramètres d’exécution ou parce que le contrat du jeton a lui-même annulé l’appel. Les causes les plus courantes sont un gas insuffisant, un solde de jetons trop faible, une autorisation manquante, des conflits de nonce, une adresse de destinataire non valide ou des règles propres au jeton, comme une suspension, une liste noire ou des frais de transfert. Dans la plupart des cas, vous pouvez résoudre le problème en déterminant si l’échec s’est produit pendant un transfert, une autorisation ou un appel de contrat depuis une DApp, puis en vérifiant dans cet ordre le solde, l’autorisation, le gas, le nonce et les restrictions du jeton.
Les échecs ERC-20 se produisent généralement à l’un de deux niveaux. Le premier est celui de la transaction, où les réseaux compatibles avec Ethereum vérifient la validité de vos paramètres de gas, de votre nonce et de l’état de votre compte. Le second est celui du contrat du jeton, où les règles propres au jeton déterminent si le transfert, l’autorisation ou l’interaction avec le contrat peut avoir lieu.
Cette distinction est importante, car la solution diffère. Si le réseau rejette la transaction avant son exécution, le problème est souvent lié au gas ou au nonce. Si la transaction atteint le contrat du jeton avant d’être annulée, l’échec provient généralement de la vérification du solde, de l’autorisation ou du destinataire, ou encore de restrictions propres au jeton.
De nombreux utilisateurs pensent que l’échec d’une transaction ERC-20 signifie que leur portefeuille est défectueux. En réalité, le portefeuille n’est souvent que l’interface ayant signé et diffusé une transaction que le réseau ou le contrat du jeton a refusée.
Le moyen le plus rapide de diagnostiquer le problème consiste à identifier l’action qui a échoué :
Si un transfert direct échoue, les causes probables sont un solde de jetons insuffisant, une adresse de destinataire non valide, une logique de suspension du jeton, des règles de liste noire ou un jeton limitant les transferts vers certains contrats.
Si une autorisation échoue, vérifiez si votre portefeuille contient assez de fonds pour payer le gas, s’il existe des restrictions d’autorisation propres au jeton ou si l’adresse du bénéficiaire de l’autorisation pose problème. Certains jetons connus ne permettent pas de remplacer directement une autorisation non nulle par une autre autorisation non nulle. Dans ce cas, vous devez d’abord autoriser 0, attendre la confirmation, puis envoyer une nouvelle autorisation avec le montant souhaité.
Si une interaction avec une DApp échoue pendant transferFrom, le problème provient souvent d’une autorisation insuffisante, d’un jeton à frais de transfert qui modifie le montant reçu ou de l’absence de prise en charge du comportement de ce jeton par le protocole.
Chaque action ERC-20 consomme du gas, car elle exécute du code sur la blockchain. Si la limite de gas est trop basse, la transaction peut épuiser le gas avant de se terminer. Elle échoue alors même si votre solde de jetons est correct.
Cette situation est particulièrement fréquente lorsque :
Une solution pratique consiste à renvoyer la transaction avec les paramètres de gas recommandés par le portefeuille plutôt qu’avec des valeurs manuelles trop serrées. Si le réseau prend en charge les frais de type EIP-1559, assurez-vous que les frais maximaux et les frais de priorité sont raisonnables au regard des conditions actuelles. Si un portefeuille fournit une estimation avancée du gas, utilisez-la sauf si vous avez une raison précise de ne pas le faire.
Le gas est payé dans la monnaie native du réseau, mais le transfert nécessite toujours un solde ERC-20 suffisant pour satisfaire les conditions du contrat. Si vous essayez d’envoyer plus de jetons que votre adresse n’en détient, le contrat du jeton annulera la transaction.
Certains échecs surviennent également parce que le solde affiché dans votre portefeuille est trompeur dans le cadre d’une opération avec une DApp. Par exemple, un protocole peut avoir besoin d’un montant légèrement supérieur à celui affiché en raison des frais du jeton, de marges de glissement ou de sa comptabilité interne. Un jeton à frais de transfert peut aussi réduire le montant reçu par le destinataire, ce qui risque de faire échouer un appel de contrat ultérieur alors que le transfert initial semblait suffisamment élevé.
Vérifiez toujours votre solde de jetons réellement disponible sur un explorateur de blocs, et pas seulement dans l’interface du portefeuille. Les données de l’explorateur permettent aussi de vérifier que vous utilisez le bon contrat de jeton et le bon format de décimales.
Les problèmes d’autorisation comptent parmi les causes les plus courantes d’échec des transactions de DApp. Dans le modèle ERC-20, de nombreuses applications ne récupèrent pas les jetons au moyen d’un simple transfert. Vous autorisez d’abord un contrat bénéficiaire, puis celui-ci utilise transferFrom pour déplacer les jetons.
Si l’autorisation est inférieure au montant requis, la transaction est annulée. L’ensemble d’erreurs standard d’OpenZeppelin mentionne explicitement l’autorisation insuffisante comme une catégorie d’échec courante, ce qui montre l’importance centrale de ce problème dans les intégrations ERC-20.
Vérifiez les points suivants :
Certains jetons utilisent également des protections contre les conditions de concurrence liées aux autorisations. Si une autorisation existante est déjà supérieure à zéro, ils peuvent rejeter une nouvelle autorisation non nulle. La séquence sûre est la suivante :
Si vous apprenez comment ces étapes fonctionnent avec un portefeuille associé à une plateforme d’échange, la page de création de compte de la plateforme d’échange WEEX constitue un exemple de point d’entrée, mais la logique d’autorisation elle-même dépend du contrat du jeton et de la DApp que vous utilisez.
Le nonce est le numéro d’ordre des transactions envoyées depuis votre portefeuille. Si deux transactions essaient d’utiliser le même nonce, ou si vous envoyez une transaction avec un nonce inférieur à celui attendu, le réseau peut la rejeter ou la laisser bloquée en attente.
Les cas d’échec courants liés au nonce comprennent :
La solution consiste généralement à examiner l’adresse sur un explorateur de blocs et à comparer le dernier nonce confirmé à la file des transactions en attente dans votre portefeuille. Vous devrez peut-être accélérer, annuler ou remplacer une transaction en attente avant d’envoyer une nouvelle action ERC-20.
Toutes les adresses ne constituent pas des destinations sûres pour des ERC-20. Un transfert direct de jetons peut échouer si le destinataire n’est pas valide, figure sur une liste noire ou est bloqué par des règles propres au jeton. L’une des erreurs les plus connues consiste à envoyer des jetons à l’adresse du contrat du jeton lui-même. Dans ce cas, les actifs peuvent rester définitivement bloqués, et certaines implémentations de jetons rejettent intentionnellement ce transfert.
ERC-20 n’impose pas non plus aux contrats destinataires d’implémenter une fonction de rappel standard pour la réception de jetons. Certains contrats ne peuvent donc pas traiter correctement les transferts ERC-20 directs. Un protocole peut attendre des utilisateurs qu’ils appellent une fonction de dépôt après l’autorisation plutôt que d’envoyer directement les jetons au moyen de transfer.
Avant de réessayer, vérifiez que :
Tous les jetons ERC-20 ne se comportent pas de la même manière. Beaucoup sont techniquement suffisamment conformes pour être répertoriés par les portefeuilles, mais ajoutent une logique qui contredit les hypothèses des utilisateurs et des protocoles.
| Comportement du jeton | Cause de l’échec | Solution habituelle |
|---|---|---|
| Jeton suspendu | Les transferts ou autorisations sont annulés pendant la suspension du jeton | Attendre que l’émetteur réactive les transferts |
| Liste noire ou liste de blocage | L’envoi depuis ou vers une adresse restreinte est annulé | Vérifier le statut de l’adresse ; il peut ne pas exister de solution côté utilisateur |
| Frais sur le transfert | Le destinataire reçoit moins que le montant envoyé, ce qui contredit les hypothèses de la DApp | Utiliser un protocole prenant en charge les jetons à frais de transfert |
| Règles d’autorisation non standard | La modification directe d’une autorisation non nulle peut échouer | Autoriser d’abord 0, puis définir un nouveau montant |
| Vérifications de destinataire non valide | Les transferts vers certains contrats ou vers l’adresse zéro sont annulés | Utiliser la méthode de dépôt prévue par le protocole |
La documentation d’OpenZeppelin met en avant des catégories d’erreurs standardisées courantes, comme un solde insuffisant, une autorisation insuffisante, un destinataire non valide et une suspension imposée. Ces catégories correspondent étroitement aux échecs ERC-20 les plus fréquents en conditions réelles.
Dans la DeFi, l’échec d’une transaction ERC-20 peut n’avoir aucun rapport avec une faute de frappe ou un solde insuffisant. Il se peut que le protocole cible ne prenne tout simplement pas en charge le jeton utilisé. Cette situation est courante avec les jetons à frais de transfert, les jetons soumis à une liste noire, les jetons à ajustement automatique de l’offre et ceux dont le comportement de transfer ou de balanceOf est inhabituel.
De nombreux protocoles supposent que :
Lorsqu’un jeton ne respecte pas ces hypothèses, le protocole peut annuler l’opération au plus profond d’un appel de contrat. Du point de vue du portefeuille, cela peut ressembler à un mystérieux échec ERC-20, alors que le véritable problème concerne la compatibilité avec le protocole.
Si un jeton échoue à plusieurs reprises dans une DApp, mais fonctionne ailleurs, la cause probable n’est pas votre portefeuille. Il s’agit souvent d’une incompatibilité d’intégration entre le protocole et la logique personnalisée de ce jeton.
Les explorateurs de blocs et les panneaux de débogage des portefeuilles révèlent souvent les indices les plus utiles. Si ces informations sont disponibles, consultez la trace ou le message d’erreur de la transaction échouée. Les messages courants correspondent clairement à une solution précise.
| Indice observé | Signification probable | Meilleure étape suivante |
|---|---|---|
| Gas épuisé | La limite de gas était trop basse | Réessayer avec une estimation de gas plus élevée fournie par le portefeuille |
| Solde insuffisant | Le montant de jetons dépasse les avoirs du portefeuille | Réduire le montant ou approvisionner le portefeuille |
| Autorisation insuffisante | La DApp ne peut pas dépenser suffisamment de jetons | Envoyer une nouvelle autorisation |
| Destinataire non valide | L’adresse du destinataire est bloquée ou non prise en charge | Vérifier la destination et la méthode de dépôt |
| Erreur liée à une suspension | Les transferts du jeton sont désactivés | Attendre une intervention de l’émetteur du jeton |
| Nonce trop faible ou frais de remplacement insuffisants | Conflit avec une transaction en attente | Remplacer ou accélérer la transaction, ou vider la file d’attente |
Si l’explorateur n’affiche aucune erreur lisible, comparez l’appel de méthode ayant échoué au déroulement attendu par le protocole. De nombreux utilisateurs découvrent qu’ils ont effectué un transfert direct alors que la DApp exigeait une autorisation suivie de l’appel d’une fonction de dépôt.
Suivez cet ordre pour résoudre rapidement la plupart des problèmes :
transfer, approve ou un appel de contrat depuis une DApp.transferFrom.Cette procédure est plus fiable que le renvoi répété de la même transaction avec des frais légèrement différents. Si le contrat du jeton annule la transaction pour une raison logique, augmenter le gas ne résoudra pas le problème.
Certains échecs ne peuvent pas être résolus uniquement depuis votre portefeuille. Si un jeton est suspendu, place votre adresse sur liste noire, impose des restrictions au destinataire ou utilise des contrôles de conformité gérés par l’émetteur, la transaction peut rester impossible jusqu’à ce que l’administrateur du jeton modifie son état.
De même, si un protocole de DeFi ne prend pas en charge un jeton non standard, vos possibilités sont limitées. Vous devrez peut-être utiliser un autre protocole, convertir l’actif en une version enveloppée si une méthode compatible existe, ou éviter ce jeton pour ce cas d’usage précis.
Il est important de reconnaître ces impasses. Cela évite de gaspiller du gas en multipliant les tentatives et vous aide à distinguer un problème de portefeuille pouvant être résolu d’une restriction stricte au niveau du contrat.
Cet article est fourni uniquement à titre informatif et ne constitue pas un conseil financier, juridique ou technique.
Ce contenu est fourni à titre informatif uniquement et ne constitue pas un conseil financier, d'investissement, juridique ou fiscal. Les événements, récompenses, promotions en ligne ou informations mentionnées ici ne doivent pas être considérés comme une recommandation, une sollicitation ou une invitation à acheter, vendre, trader ou effectuer toute autre opération sur des actifs crypto. Les actifs crypto sont très volatils et peuvent entraîner des pertes. La disponibilité des services, produits et événements liés à WEEX peut varier selon les régions. Veuillez vous assurer que votre participation respecte les lois et réglementations locales applicables.

Achetez de la crypto pour 1 $