Skip to content
Guide intermédiaire

Autorisations de tokens expliquées : allowance et révocation

Ce qu'une autorisation ERC-20 permet à une autre adresse, pourquoi une allowance illimitée élargit l'exposition et ce que la révocation change, ou non.

8 min de lectureEthereumERC-20Sécurité

Une autorisation de token (approval) est une permission enregistrée dans le contrat d'un token ERC-20. Elle permet à une adresse précise de déplacer, en votre nom, vos tokens jusqu'à un montant fixé. L'autorisation elle-même ne transfère rien, et ce n'est pas un passe-partout pour votre wallet : elle vaut pour un token, une adresse et un réseau.

On la croise le plus souvent quand une application de DeFi demande votre accord avant un swap ou un dépôt. Avec la fonction standard approve, cette demande est une transaction on-chain à part entière, et la permission qu'elle crée reste en place tant que personne ne la modifie. Ce guide décrit le mécanisme et ses risques ; il ne dit pas si telle ou telle application mérite d'être utilisée.

Qu'est-ce qu'une allowance ERC-20 ?

L'allowance est le chiffre derrière l'autorisation : le nombre de tokens qu'une adresse autorisée peut encore prélever sur le solde du détenteur. ERC-20 est le standard que suivent la plupart des tokens fongibles sur Ethereum, et il règle ce mécanisme en quelques lignes. Son abstract indique d'emblée que des tokens peuvent être approuvés pour être dépensés par un tiers on-chain (EIP-20).

Détenteur, contrat du token et spender

Trois acteurs sont en jeu, et la plupart des malentendus viennent de ce qu'on les confond.

  • Le détenteur (owner) : l'adresse qui possède les tokens, en général celle de votre wallet.
  • Le contrat du token : le smart contract qui tient les soldes d'un token. C'est aussi lui qui stocke chaque allowance pour ce token.
  • Le spender : l'adresse qui reçoit la permission. Souvent, c'est le smart contract d'une application, mais le standard accepte n'importe quelle adresse, y compris une adresse contrôlée par une personne.

Chaque allowance correspond à une seule combinaison détenteur, token et spender, sur une seule chaîne. Autoriser un spender pour un token ne lui donne rien sur un autre. Une allowance accordée sur le Mainnet d'Ethereum ne s'étend pas non plus à un token du même nom sur un autre réseau : c'est un autre contrat, avec ses propres registres. Enfin, le spender est une adresse, pas un site web. Le domaine affiché dans votre navigateur ne dit rien de fiable sur le contrat que vous avez réellement autorisé.

Approve et transferFrom

L'EIP-20 définit trois fonctions qui vont ensemble (EIP-20, ethereum.org : ERC-20) :

  • approve(spender, value) est envoyée par le détenteur et fixe ce que le spender peut prélever.
  • allowance(owner, spender) lit ce qu'il reste de cette permission.
  • transferFrom(from, to, value) est appelée par le spender et déplace réellement les tokens depuis le solde du détenteur, dans la limite de l'allowance.

Un exemple inventé, qui ne vient d'aucun wallet réel : vous autorisez un spender à hauteur de 100 tokens. Rien ne bouge. Plus tard, le spender appelle transferFrom pour 30 d'entre eux. Si vous interrogez allowance ensuite, la réponse est 70, et le spender peut utiliser ces 70 en une ou plusieurs fois sans vous redemander quoi que ce soit.

Autorisations limitées et illimitées

Beaucoup d'applications ne demandent pas le montant exact qu'exige une opération. Elles réclament une allowance illimitée, un nombre si grand qu'il ne s'épuise jamais en pratique. D'après ethereum.org, les projets procèdent ainsi pour que vous n'autorisiez qu'une fois et ne payiez les frais de transaction qu'une fois, au lieu de recommencer avant chaque utilisation (ethereum.org : How to revoke token access). Certains wallets permettent de modifier le montant directement dans la demande.

Ce que le chiffre limite

L'allowance est un plafond. Elle indique ce que le spender peut déplacer, pas ce qu'il a déplacé. Une allowance élevée ne signifie pas, à elle seule, que le moindre token ait quitté votre wallet.

En revanche, elle fixe jusqu'où un problème peut aller. Avec une allowance illimitée, le spender peut déplacer tous les tokens de ce type présents sur l'adresse, y compris ceux qui arrivent plus tard. Ethereum.org souligne que c'est encore vrai une fois vos fonds retirés de la plateforme vers votre wallet, et que les permissions de contrat n'ont pas de date d'expiration : une autorisation accordée il y a des années reste utilisable aujourd'hui (ethereum.org : How to revoke token access).

Le poids de ce risque dépend du spender. Un contrat qui ne prélève jamais que ce que vous avez demandé n'a rien à voir avec un contrat bogué, un contrat modifiable par mise à jour au gré d'un tiers ou un code écrit pour vider les soldes autorisés. Le chiffre montre l'exposition maximale possible. Il ne prédit pas une perte.

Comment vérifier les autorisations existantes ?

Les allowances sont on-chain, donc lisibles par tout le monde, et chaque appel réussi à approve doit émettre un événement public Approval (EIP-20). Ce sont ces données publiques qui permettent aux explorateurs de blocs et aux outils de vérification dédiés d'afficher les allowances accordées par une adresse. Ethereum.org cite plusieurs outils de ce type (ethereum.org : How to revoke token access) ; ce guide ne se porte garant d'aucun.

Vérifier le réseau, le token et le spender

Une liste d'autorisations n'a de sens que lue dans le bon contexte :

  • Le réseau. Un outil affiche les autorisations de la chaîne sélectionnée. L'exemple d'ethereum.org : connecté au Mainnet d'Ethereum, vous voyez les contrats Ethereum, pas ceux de Polygon. Chaque autre réseau se vérifie séparément.
  • L'adresse. Assurez-vous que l'adresse examinée est bien celle qui détient les tokens. Beaucoup de gens en utilisent plusieurs.
  • Le spender. Lisez son adresse, pas seulement l'étiquette à côté. Un nom d'application connu ne prouve pas que le contrat qui se cache derrière soit celui que vous vouliez autoriser, et encore moins qu'il soit sûr.
  • Le montant. Regardez s'il reste un chiffre précis ou une allowance de fait illimitée.

Ouvrez l'outil depuis un favori ou une adresse que vous avez vérifiée vous-même, pas depuis un lien qu'on vous a envoyé.

Que se passe-t-il quand on révoque une autorisation ?

Révoquer, c'est remettre à zéro l'allowance pour un token et un spender. ERC-20 ne prévoit pas de fonction de révocation distincte. En pratique, une révocation est donc un simple appel à approve avec la valeur 0, ce qui écrase la valeur précédente (EIP-20).

Remettre l'allowance à zéro

Comme elle modifie des données on-chain, la révocation est une nouvelle transaction. Votre wallet vous demande de la confirmer, et elle coûte des frais de réseau comme n'importe quelle transaction ; sur le Mainnet d'Ethereum, ils se paient en ETH, comme l'explique le guide sur les frais de gas Ethereum. Selon ethereum.org, le traitement prend d'une à plusieurs minutes selon le réseau, et il est conseillé de recharger l'outil ensuite pour vérifier que l'entrée a disparu (ethereum.org : How to revoke token access).

Tant que la transaction n'est pas dans un bloc, l'ancienne allowance reste valable. La révocation ne vaut que pour la suite : elle ne rembourse pas les frais de l'autorisation initiale et ne fait rien revenir de ce que le spender a déjà déplacé.

Réduire ou remplacer une limite

Un appel standard à approve n'ajoute rien et ne retranche rien à l'allowance en cours. Il la remplace (EIP-20). Pour passer de 100 à 50, on fixe 50, on ne retire pas 50.

Passer directement d'une valeur non nulle à une autre présente une faille connue. Un spender qui voit venir le changement pourrait utiliser l'ancienne allowance avant que la nouvelle soit confirmée, puis la nouvelle par-dessus. L'EIP-20 indique donc que les interfaces devraient d'abord mettre l'allowance à 0, puis à la nouvelle valeur. Elle précise aussi que le contrat du token ne devrait pas l'imposer lui-même, par souci de compatibilité avec les contrats déployés auparavant. Chaque token peut malgré tout implémenter approve à sa manière : ne partez pas du principe que tous les tokens et tous les wallets traitent un changement de la même façon.

Ce que la révocation ne fait pas

La révocation a une portée étroite, et c'est voulu. Elle change un chiffre dans un contrat de token, sur une chaîne. Rien d'autre.

Déconnecter une dApp, c'est autre chose

Déconnecter votre wallet d'un site met fin à la connexion entre ce site et votre wallet. Les allowances accordées pendant la connexion restent intactes, et le spender peut continuer à s'en servir. La FAQ d'ethereum.org le dit sans détour (ethereum.org : How to revoke token access).

La révocation laisse aussi en l'état :

  • Les transferts passés. Les tokens déjà déplacés par un spender ne reviennent pas.
  • Les positions ouvertes. D'après ethereum.org, révoquer ne met fin ni au staking, ni au pooling, ni au lending. Vous restez dans ces positions.
  • Un wallet compromis. Quiconque détient votre clé privée ou votre seed phrase peut envoyer vos tokens par un transfert ordinaire, sans aucune allowance.
  • Les autorisations signées et celles des NFT. Certains tokens acceptent aussi une autorisation sous forme de message signé plutôt que de transaction (EIP-2612), et les NFT ont leurs propres fonctions d'autorisation. Remettre une allowance ERC-20 à zéro n'annule pas une signature qui n'a pas encore servi et ne touche pas aux autorisations de NFT.

Ce que le token check de CoinVett peut vous dire, et ce qu'il ne dit pas

Le Token Safety Check de CoinVett examine le contrat d'un token : des signaux comme un comportement de honeypot, des fonctions de mint, un montage en proxy ou le degré de concentration des avoirs. Le guide pour lire un scan de sécurité token passe ces signaux en revue un par un.

C'est une question sur le token. Vos allowances, elles, sont une question sur vous : quels spenders vous avez autorisés, pour quel token, sur quelle chaîne. Un token dont le scan de contrat ne signale rien peut très bien se trouver dans votre wallet avec une autorisation illimitée accordée à un spender auquel vous ne faites plus confiance. Le Token Safety Check n'est ni une liste de vos autorisations, ni un moyen de les révoquer.

Un détail prête souvent à confusion. L'ETH natif n'est pas un token ERC-20, même s'il sert à payer le gas sur Ethereum : il n'a donc pas d'allowances. Les applications qui ont besoin d'ETH au format ERC-20 utilisent le wrapped ether (WETH), et le WETH, comme tout token ERC-20, peut faire l'objet d'autorisations (ethereum.org : WETH).

Toute autorisation se décrit entièrement par quatre éléments : le réseau, le token, l'adresse du spender et le montant encore permis. Ensemble, ils disent exactement ce qu'un tiers peut déplacer depuis votre adresse. Une révocation change cela dès sa confirmation, au prix de frais de transaction. Le passé, lui, ne bouge pas.

Avertissement : les montants de tokens de l'exemple sont fictifs ; les sources sont liées dans le texte. À titre d'information uniquement, il ne s'agit pas d'un conseil en investissement.

Questions fréquentes

Déconnecter son wallet révoque-t-il une autorisation ERC-20 ?

Non. La connexion entre un site et votre wallet est distincte de l'allowance enregistrée dans le contrat du token. Le spender peut continuer à utiliser cette allowance jusqu'à ce qu'elle soit modifiée par une transaction on-chain, par exemple une transaction qui la remet à zéro.

Révoquer une autorisation déplace-t-il mes tokens ou annule-t-il d'anciens transferts ?

Ni l'un ni l'autre. La révocation remet à zéro l'allowance de ce token et de ce spender sur ce réseau, si bien que le spender ne peut plus s'en servir ensuite. Vos tokens restent où ils sont, les transferts déjà effectués ne sont pas annulés, et la révocation elle-même coûte en général des frais de réseau.

Les autorisations de tokens illimitées expirent-elles automatiquement ?

Non. Une allowance ERC-20 ordinaire n'a pas de date d'expiration. Elle reste valable jusqu'à ce qu'elle soit épuisée ou modifiée, et une allowance illimitée ne s'épuise pas en pratique : elle reste donc utilisable jusqu'à ce qu'elle soit remplacée ou révoquée. D'autres formes d'autorisation peuvent obéir à leurs propres règles.

Coins associés à explorer

Envie d'approfondir ? Consultez ces pages de coins pour voir les données de marché et les analyses IA.

Guides similaires

Ces guides couvrent des sujets proches et constituent de bonnes prochaines lectures.

Prêt à passer à l'action ?

Le trouveur de profil crypto vous aide à explorer une catégorie de profil éducative à partir de vos réponses.

Continuer à apprendre

Catégories crypto expliquées : ce que dit vraiment une étiquette de secteur

Guide suivant →
Équipe éditoriale

Équipe CoinVett

L'équipe éditoriale de CoinVett combine une expertise du marché crypto avec des outils d'analyse alimentés par l'IA.

Ce site n'utilise que les cookies strictement nécessaires à son fonctionnement. Aucun suivi publicitaire, aucune mesure d'audience non essentielle.