Owlio
FR
← Blog
Guide pratiqueDébutant

Transaction Ethereum échouée : pourquoi le gaz est facturé

Une action échouée peut laisser vos jetons intacts tout en réduisant vos ETH. Lisez le relevé de transaction avant de payer un nouvel essai.

Une transaction Ethereum échouée peut tout de même coûter des ETH, car l’exécution utilise du calcul payant même lorsque l’action prévue est annulée. Si la transaction a été incluse dans un bloc et que son statut global est Failed, le transfert ou les modifications des contrats de cette transaction ne prennent pas effet. Les frais d’exécution restent facturés.

Ce guide concerne les transactions ordinaires sur Ethereum Mainnet depuis un compte qui paie lui-même son gaz. Les comptes intelligents, transactions sponsorisées, retraits d’exchanges et transferts entre plusieurs chaînes peuvent comporter des étapes ou des frais supplémentaires. L’échec d’une étape dans une application ne suffit pas à établir que toute la transaction sur la chaîne a échoué.

Établissez d’abord ce qui a vraiment échoué

Ouvrez la transaction depuis l’historique de votre portefeuille et vérifiez-la dans l’explorateur d’Ethereum Mainnet. Notez le hash complet, l’expéditeur, le numéro de bloc et le statut global. Ces informations publiques peuvent être consultées sans rien signer.

La distinction compte : les reçus Ethereum enregistrent le résultat d’exécution au niveau global, avec le statut 0 pour l’échec et 1 pour le succès. Un appel interne échoué dans une trace ne signifie pas nécessairement que toute la transaction a échoué. Si le statut global est Success, examinez le résultat réel de l’action au lieu de supposer que tout a été annulé.

S’il n’y a pas de numéro de bloc et que la transaction est encore en attente, utilisez la liste de vérification des transactions en attente. Les contrôles ci-dessous commencent après l’inclusion ; augmenter les frais d’une transaction déjà échouée ne change pas son résultat enregistré.

Lisez les frais séparément du montant prévu

Sur la page de la transaction échouée, trouvez Transaction Fee, Gas Used et le Gas Price effectif, lorsque l’explorateur les fournit. Gardez le montant du transfert prévu à part. Un champ Value peut décrire ce qui a été soumis sans prouver que ce montant a atteint le destinataire.

Pour une transaction ordinaire sur Mainnet, les frais d’exécution facturés correspondent au gaz utilisé multiplié par le prix effectif par unité de gaz. Le plafond de frais et la limite de gaz sont des bornes ; multiplier ces deux limites ne permet donc pas d’établir ce que vous avez réellement payé. La documentation Ethereum sur le gaz explique ces différences.

Voici un calcul illustratif, et non une transaction réelle ou une estimation des frais actuels :

Élément Valeur d’exemple
Transfert de jetons prévu 100 jetons
Statut global du reçu Failed
Gaz utilisé 60,000 unités
Prix effectif du gaz 5 gwei par unité
Frais d’exécution 300,000 gwei, soit 0.0003 ETH

En l’absence d’autre activité, le transfert échoué laisse le solde de jetons de l’expéditeur inchangé, tandis que son solde d’ETH diminue du montant des frais. Cet exemple ne définit pas une limite de gaz adaptée et ne donne pas le prix de votre prochaine transaction.

Si votre baisse d’ETH dépasse les frais enregistrés, examinez les autres transactions du même compte. N’utilisez pas un graphique de portefeuille en dollars pour reconstituer le prélèvement : les prix du marché peuvent évoluer simultanément. Si les quantités divergent encore entre les écrans, poursuivez avec la liste de vérification du solde du portefeuille.

Distinguez le manque de gaz de l’annulation par un contrat

Le guide des échecs d’Etherscan distingue une exécution qui épuise son gaz d’un contrat qui annule l’exécution. Les deux peuvent produire une transaction échouée, mais demandent des recherches différentes.

Gaz épuisé pendant l’exécution : le calcul a consommé le gaz disponible. Les modifications tentées sont annulées et le gaz fourni est consommé. Comparez le gaz utilisé à la limite et lisez l’erreur de l’explorateur. S’il s’agissait d’une action légitime que vous souhaitez toujours effectuer, consultez les recommandations actuelles du portefeuille ou du protocole pour l’estimer. Ne recopiez pas une ancienne limite d’un transfert sans rapport.

Exécution annulée : un contrat a arrêté l’exécution et annulé ses modifications. Il peut retourner une erreur expliquant une condition non remplie. La spécification REVERT permet de conserver du gaz inutilisé ; un reçu d’échec ne montre donc pas nécessairement 100% de la limite consommée.

Conservez l’erreur exacte et cherchez-la dans la documentation du protocole que vous vouliez utiliser. L’explorateur peut ne pas la décoder, et un message générique d’annulation peut ne pas révéler la cause. Dans ce cas, la cause reste inconnue. Un budget de gaz supérieur ne prouve pas que la condition du contrat a changé.

Le prix et la limite de gaz sont des réglages distincts. Payer plus par unité ne peut pas obliger un contrat à accepter une action qu’il refuse. N’assouplissez pas les protections de la transaction et n’augmentez pas les limites simplement pour faire disparaître un avertissement incompris.

Vérifiez les étapes précédentes réussies avant de réessayer

Un parcours d’application peut impliquer plusieurs transactions. Par exemple, une autorisation peut réussir dans une transaction et un échange ultérieur échouer dans une autre. Cet échec ultérieur n’annule pas une transaction précédente. Vérifiez chaque hash et son statut indépendamment.

Préparez un court relevé avant d’autoriser un nouvel essai :

  1. Action échouée : hash, bloc, statut global et erreur exacte.
  2. Coût : frais de transaction, gaz utilisé et prix effectif du gaz.
  3. Autres étapes : hashes et résultats des autorisations, dépôts ou essais distincts.
  4. État actuel : quantité de jetons et toute position pertinente dans le protocole pour ce compte sur Mainnet.
  5. Motif du nouvel essai : cause identifiée et ce qui a changé pour y remédier.

Si vous ne pouvez pas remplir le dernier point, réessayer laisse la cause irrésolue et peut entraîner de nouveaux frais si la nouvelle transaction est incluse dans un bloc. Utilisez le support officiel du protocole avec les informations publiques de la transaction et gardez votre phrase de récupération et vos clés privées secrètes.

Une action échouée ne crée pas de solde de gaz remboursable

MetaMask explique qu’il ne perçoit pas les frais de gaz du réseau et ne peut pas les rembourser. Le gaz disponible mais inutilisé est différent des frais déjà consommés par l’exécution. Vous n’avez pas besoin de vous connecter à un site de remboursement pour réclamer cette réserve inutilisée.

Un suivi de portefeuille peut aider à comparer les avoirs, mais son total ne peut ni expliquer une erreur de contrat ni annuler la transaction. Conservez le reçu d’échec et ses frais comme trace de cet essai. Avant de continuer, vous devriez savoir quelle action a échoué, ce qu’elle a coûté et quelle condition un nouvel essai changerait.

Questions fréquentes

Est-ce que je perds les jetons que je voulais envoyer si une transaction Ethereum échoue ?

Pour une transaction ordinaire sur Ethereum Mainnet dont le reçu indique un échec au niveau global, le transfert prévu et les modifications de l’état des contrats sont annulés. L’expéditeur paie tout de même l’exécution. Vérifiez les transactions distinctes et le contrat exact du jeton si vos soldes ne correspondent pas à ce résultat.

Une transaction échouée utilise-t-elle toujours toute la limite de gaz ?

Non. Un contrat peut volontairement annuler l’exécution avant d’utiliser tout le gaz disponible. Un épuisement du gaz pendant l’exécution consomme le gaz fourni. Consultez le gaz utilisé dans le reçu et la cause de l’échec plutôt que de déduire le résultat de la limite.

Augmenter le prix du gaz corrige-t-il une transaction annulée ?

Un prix plus élevé par unité de gaz ne change pas les conditions du contrat. Identifiez d’abord l’erreur. La limite et le prix du gaz sont deux réglages distincts, et un nouvel essai peut échouer et entraîner de nouveaux frais.