En octobre 2026, la plupart des erreurs de wallet relèvent de deux groupes. Les erreurs levées avant qu'une transaction soit incluse dans un bloc, comme « nonce too low », « replacement transaction underpriced », « insufficient funds for gas * price + value » ou « Transaction simulation failed: Blockhash not found » sur Solana, signifient que rien n'a été enregistré on-chain et qu'aucun frais de réseau n'a été dépensé. Les échecs après inclusion, comme une transaction EVM qui a fait un revert ou manqué de gas, une transaction Solana incluse avec une erreur, ou un échec de la phase de calcul sur TON, consomment quand même les frais correspondant au travail effectué. Retrouvez votre message exact dans les tableaux ci-dessous pour sa signification et la solution.
Une transaction échouée vous a-t-elle coûté des frais ? La règle à vérifier en premier
Une transaction échouée ne coûte des frais de réseau que si elle a été incluse dans un bloc avant d'échouer.
Une transaction peut échouer à deux moments :
- Avant l'inclusion. La simulation du wallet, le nœud RPC ou le mempool la rejette. Rien n'atteint un bloc : aucun frais de réseau n'est dépensé.
- Après l'inclusion. La transaction est incluse dans un bloc, son code s'exécute et échoue. Les frais du travail effectué sont dépensés. Etherscan indique que le gas est quand même déduit sur les transactions échouées en raison du calcul utilisé, et la documentation de Solana sur les frais précise que si la transaction échoue, les frais sont quand même facturés.
Pour savoir dans quel cas vous êtes, recherchez le hash ou la signature de la transaction sur un explorateur de blocs. Aucune trace au bout de quelques minutes signifie généralement qu'elle n'a jamais été incluse et n'a rien coûté ; un statut Pending signifie qu'elle n'a pas encore été incluse. Une trace marquée Failed ou Reverted, ou avec un code de sortie non nul, signifie qu'elle a été incluse et que les frais ont été dépensés.
Quelles erreurs EVM signifient « nonce too low », « underpriced » ou « out of gas » ?
Ce sont les messages exacts du code source du client go-ethereum, et la plupart signifient que la transaction a été refusée avant d'atteindre un bloc.
| Erreur exacte | Signification | Frais de réseau dépensés ? | Que faire |
|---|---|---|---|
| « nonce too low » | Une transaction portant ce numéro a déjà été confirmée ; l'état du wallet est périmé | Non | Resynchronisez le wallet et consultez l'explorateur ; ne renvoyez que si l'action voulue n'a pas déjà eu lieu |
| « replacement transaction underpriced » | L'accélération ou l'annulation a utilisé une hausse de frais trop faible | Non | Augmentez davantage ; Geth exige 10 % par défaut |
| « max fee per gas less than block base fee » | Vos frais maximums sont inférieurs aux frais de base actuels | Non | Relevez les frais maximums |
| « insufficient funds for gas * price + value » | La monnaie native ne couvre pas le montant plus le gas maximum | Non | Rechargez la monnaie native ; voir des jetons mais pas de jeton de gas |
| « already known » | La même transaction se trouve déjà dans le mempool | Non | Patientez ; c'est sans danger |
| « out of gas » | L'exécution a dépassé sa limite de gas ; les changements sont annulés | Oui | Réessayez avec une limite de gas plus élevée |
Que signifie « execution reverted » ?
« Execution reverted » signifie qu'un smart contract a refusé l'action et annulé tous les changements qu'il avait effectués. Cela apparaît à deux moments, et les frais diffèrent.
Si cela apparaît dans l'estimation préalable à l'envoi du wallet, rien n'a été envoyé et aucun frais n'a été dépensé. Si la transaction a été incluse, Etherscan l'affiche comme Fail ou Reverted et, selon Alchemy, l'expéditeur paie quand même le gas utilisé. Le texte après les deux-points est la vraie raison. Les plus courantes :
- « UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT » : le prix a dépassé votre limite de slippage entre la signature et l'inclusion.
- « ERC20: insufficient allowance » : l'approbation du jeton est inférieure au montant dépensé. Son pendant, « ERC20: transfer amount exceeds balance », signifie que vous détenez moins de ce jeton que ce que vous avez tenté de déplacer.
Les deux messages ERC-20 proviennent des contrats OpenZeppelin v4 ; les versions plus récentes utilisent des erreurs personnalisées aux noms différents.
Que signifient les codes AA d'ERC-4337 et les erreurs EIP-7702 ?
Les comptes à smart contract envoient une UserOperation via un bundler plutôt qu'une transaction ordinaire, et la spécification EIP-4337 indique que les messages d'erreur de l'EntryPoint commencent par un code de la forme AA##.
| Code | Signification | Frais de réseau dépensés ? |
|---|---|---|
| AA21 didn't pay prefund | Aucun paymaster utilisé, et le dépôt du compte auprès de l'EntryPoint ne peut pas couvrir le gas maximum | Non |
| AA23 reverted | Le code de validation du compte a rejeté l'opération | Non |
| AA33 reverted | La validation du paymaster a rejeté l'opération | Non |
| AA95 out of gas | La limite de gas du lot était trop basse pour l'opération ou un sous-appel | Normalement non ; handleOps fait un revert |
La spécification EIP-4337 indique qu'un bundler doit abandonner une opération dont la simulation fait un revert ; les échecs de validation (AA2x et AA3x) ne laissent donc normalement rien on-chain. Si une opération est incluse et que son appel principal fait un revert, le gas est quand même payé on-chain par le compte ou par le paymaster qui l'a sponsorisée. Alchemy note qu'AA95 signifie généralement que les limites de gas étaient trop basses ; handleOps fait un revert, réessayez donc avec des limites de gas plus élevées (un réglage du bundler ou du SDK).
EIP-7702 ajoute une erreur que vous pouvez voir de la part d'un nœud : « in-flight transaction limit reached for delegated accounts » (le pool de Geth n'accepte qu'une seule transaction exécutable en attente pour un tel compte, patientez donc). Une autorisation avec un mauvais identifiant de chaîne ou un mauvais nonce est ignorée silencieusement : la transaction peut donc réussir sans que la délégation soit appliquée. Si vous n'avez pas délégué votre compte en connaissance de cause, vérifiez et révoquez la délégation : une délégation inattendue est un signal de drainer.
Que signifient « Blockhash not found » et « block height exceeded » sur Solana ?
« Block height exceeded » signifie que le blockhash a expiré, et « Blockhash not found » signifie que le nœud n'a pas reconnu le blockhash (généralement expiré, parfois un nœud en retard). Dans les deux cas, la transaction n'a normalement pas été traitée. Un blockhash reste valide pendant environ 151 blocs, soit à peu près 60 à 90 secondes d'après le guide de confirmation de Solana, et une transaction expirée ne peut plus être traitée.
| Erreur exacte | Signification | Frais de réseau dépensés ? | Que faire |
|---|---|---|---|
| « Transaction simulation failed: Blockhash not found » | Blockhash trop ancien, ou le nœud de simulation ne l'avait pas encore vu | Non | Réessayez pour obtenir un blockhash récent |
| « block height exceeded » (TransactionExpiredBlockheightExceededError) | Elle n'a pas été incluse avant l'expiration du blockhash | Non, sauf si elle a été incluse juste avant l'expiration ; vérifiez la signature | Vérifiez la signature sur un explorateur, puis réessayez |
| « Transaction simulation failed: Error processing Instruction N: custom program error: 0x... » | Le programme a prédit un échec, par exemple un slippage de swap | Non, lorsqu'elle est interceptée en simulation avant l'envoi ; si un wallet ou une application saute la simulation, la transaction peut être incluse avec le statut Failed et les frais sont dépensés | Lisez la raison ; ajustez le slippage ou le montant |
| « Attempt to debit an account but found no record of a prior credit. » | Le compte payeur ne détient aucun SOL | Non | Alimentez-le en SOL |
| « Transaction results in an account (0) with insufficient funds for rent » | L'envoi laisserait un compte sous le minimum d'exonération de rent | Non, lorsqu'elle est interceptée en simulation ; si la simulation est sautée, elle peut être incluse avec le statut Failed et coûter les frais | Envoyez un peu moins ; voir le rent de Solana |
| L'explorateur affiche « Failed » | Elle a été incluse et le programme a renvoyé une erreur | Oui | Lisez le journal de l'explorateur, corrigez, renvoyez |
Les frais Solana se paient toujours en SOL : « Insufficient funds for fee » et « insufficient funds for rent » signifient donc que vous avez besoin de SOL. Un simple « insufficient funds » ou « custom program error: 0x1 » lors d'un transfert de jeton signifie que vous détenez moins de ce jeton que ce que vous avez tenté d'envoyer.
Faut-il augmenter la priority fee sur Solana ?
N'augmentez la priority fee que lorsqu'une transaction continue d'expirer en période de congestion, pas lorsqu'une erreur de simulation apparaît.
Selon la documentation de solana.com sur les frais, les frais Solana se composent de frais de base de 5 000 lamports par signature (50 % brûlés, 50 % pour le validateur) plus une priority fee facultative : le prix de l'unité de calcul (en micro-lamports) multiplié par la limite d'unités de calcul, divisé par 1 000 000 et arrondi au lamport entier supérieur, le tout revenant au validateur. Une priority fee plus élevée augmente les chances qu'un leader très sollicité planifie votre transaction. Elle ne corrige ni le slippage, ni le rent, ni les erreurs dues à un manque de SOL, et elle est quand même facturée si la transaction est incluse puis échoue. Si une erreur de simulation apparaît, corrigez-en plutôt la cause.
Que signifient les codes de sortie TON et les messages bounced ?
Une transaction TON s'exécute en phases (stockage, crédit, calcul, action, bounce), et d'après docs.ton.org les codes de sortie 0 et 1 signifient le succès alors que tout autre code signifie un échec. Si le calcul échoue, la phase d'action est ignorée et, pour un message entrant de type bounceable, un message de bounce est formé ; les frais sont déduits phase par phase, les frais antérieurs restent donc dépensés. Les frais se paient en GRAM (anciennement Toncoin ; voir ce qui a changé avec le changement de nom).
| Signal | Signification | Frais de réseau dépensés ? | Que faire |
|---|---|---|---|
| Code de sortie 13 ou -14 | Manque de gas dans la phase de calcul | Oui, pour le gas utilisé | Joignez plus de GRAM |
| Code de sortie 9 | Cell underflow : le contrat a tenté de lire plus de données qu'une cellule n'en contient, souvent parce que la charge utile ne correspond pas à ce que le contrat attend | Oui | Vérifiez que la charge utile ou le commentaire convient à ce contrat |
| Code de sortie 37 | Phase d'action : « Not enough GRAMs » pour envoyer le message sortant | Oui | Joignez plus de GRAM |
| Phase de calcul ignorée | Le message portait trop peu de GRAM pour payer l'exécution | Pas de gas ; la phase de stockage s'exécute quand même | Envoyez avec plus de GRAM joints |
| Message bounced | La destination a échoué ou n'existe pas | Oui, frais déduits | La valeur revient, moins les frais de message et de gas |
Comment WATS Wallet se rapporte à ces erreurs
WATS Wallet, d'Alltoscan LLC, est un wallet non-custodial (extension Chrome et application iOS/Android) pour les réseaux EVM, Solana et TON, où vous détenez vos propres clés et votre phrase de récupération. Les messages de ce guide sont des erreurs au niveau du réseau définies par ces chaînes, pas des codes propres à WATS.
Sur Solana, les frais de réseau se paient en SOL, donc la ligne « insufficient funds » de Solana s'applique directement : conserver un petit solde de SOL l'évite. Les lignes TON décrivent des erreurs au niveau du protocole ; dans WATS Wallet, les frais sur TON sont payés en ATS. Sur les réseaux EVM, WATS Wallet facture les frais de réseau en ATS via un paymaster ERC-4337, depuis un seul solde ATS sur BNB Chain ; le fonctionnement des frais en ATS est expliqué séparément.
Foire aux questions
Est-ce que je perds de l'argent quand une transaction crypto échoue ?
Cela dépend du moment de l'échec. Si elle a été rejetée avant l'inclusion (erreurs de simulation, de nœud ou de mempool comme « nonce too low », « replacement transaction underpriced » ou « Blockhash not found »), rien n'a été enregistré et aucun frais de réseau n'a été dépensé. Si elle a été incluse puis a échoué (un revert ou un manque de gas sur EVM, un « Failed » sur l'explorateur Solana, un code de sortie TON non nul), les frais du travail effectué ont été dépensés, mais le montant que vous essayiez d'envoyer reste dans votre compte, et les bounces TON renvoient la valeur moins les frais. Vérifiez le hash ou la signature sur un explorateur pour voir quel cas s'applique.
Pourquoi mon wallet affiche-t-il « nonce too low » alors que je n'ai aucune transaction en attente ?
Le nonce est le compteur de transactions du compte, et « nonce too low » signifie qu'une transaction portant ce numéro a déjà été confirmée. Les causes courantes : utiliser le même compte depuis une autre application de wallet ou un autre appareil, une transaction « bloquée » qui a en réalité été confirmée, ou un état du wallet périmé en cache. Vérifiez sur un explorateur si le paiement ou l'action voulue est déjà passé ; si oui, ne renvoyez pas ; sinon, resynchronisez le wallet et renvoyez. La tentative rejetée elle-même n'a coûté aucun frais. Si une transaction est réellement en attente, voir <a href="/blog/speed-up-or-cancel-stuck-transaction">comment accélérer ou annuler une transaction en attente</a>.
Puis-je réessayer sans risque après « block height exceeded » ou « Blockhash not found » sur Solana ?
En général oui. « Block height exceeded » signifie que le blockhash a expiré (environ 151 blocs, soit à peu près 60 à 90 secondes), et « Blockhash not found » signifie que le nœud ne l'a pas reconnu, le plus souvent parce qu'il a expiré. Une transaction expirée ne peut plus être traitée : elle ne peut donc pas être incluse plus tard et faire doublon avec la nouvelle ; regardez malgré tout la signature sur un explorateur Solana d'abord, puis réessayez avec un blockhash récent. La tentative expirée n'a pas été facturée, sauf si elle a été incluse avant l'expiration, ce que la recherche sur l'explorateur montre, et une priority fee modérément plus élevée peut aider si elle continue d'expirer en période de congestion.

