L’approbation de tokens : le talon d’Achille de vos cryptomonnaies

Attention à vos cryptomonnaies – Il ne vous viendrait pas à l’esprit d’accorder à n’importe qui le droit de se servir dans votre compte bancaire pour une durée illimitée ? Et pourtant, c’est littéralement ce que vous faites quand vous utilisez l’approbation de tokens sans comprendre son mécanisme ! Et même votre Ledger ne pourra vous défendre !

L’« approval » (approbation de tokens) est un mécanisme qui permet de donner à un tiers l’autorisation de transférer vos tokens. Malheureusement, cela peut également ouvrir la voie à des arnaques et à des pertes financières importantes si vous ne comprenez pas bien le fonctionnement de l’approbation. Dans cet article, nous allons apprendre ce qu’est l’approbation de tokens, et comment vous pouvez l’utiliser en toute sécurité pour transférer vos actifs numériques. Soyez vigilant, car la sécurité de vos tokens dépend de votre compréhension de ce genre de mécanisme.

Qu’est-ce que l’approbation pour les cryptomonnaies et pourquoi l’utiliser ?

Les tokens ERC20, ERC721 et ERC1155 sont des normes de jetons qui ont été créées afin de définir un standard en termes d’actif numérique.

Petit rappel, les tokens ERC20 sont des tokens fongibles, tandis que les tokens ERC721 et ERC1155 sont des tokens non interchangeables (semi-fongible pour les tokens ERC1155).

Ces trois normes ont été créées en intégrant un mécanisme que nous allons examiner aujourd’hui : l’approbation.

L’approbation de tokens (approval) permet à un utilisateur de donner à un autre utilisateur la permission de transférer un certain nombre de ses cryptomonnaies. Cela peut être utile dans plusieurs cas de figure, par exemple, si vous voulez autoriser un ami à déplacer vos tokens à votre place ou si vous souhaitez autoriser une application décentralisée (ou non) à utiliser vos tokens pour effectuer des transactions.

Il est important de noter que ce mécanisme n’est présent que pour les tokens émis sur la blockchain et non sur le token natif de cette dernière. Par exemple, l’ether de la blockchain Ethereum ne possède pas de mécanisme d’approbation, c’est pour cela que certaines applications utilisent le wrapped Ether (wETH) afin de profiter de la puissance d’un tel outil.

>> La sécurité, c’est la base ! Pour conserver vos cryptos près de vous, faites confiance à Ledger (lien commercial) <<

L’approbation de tokens, comment ça marche ?

L’approbation d’un token se fait directement auprès du contrat qui émet ce token. Par exemple, si vous souhaitez qu’une adresse ait accès à vos USDC alors, vous devez utiliser le contrat du token USDC pour réaliser l’approbation.

Vous retrouverez deux fonctions différentes dépendant du type de contrat. Voici le tableau des présences de ces deux fonctions :

ERC20ERC721ERC1155
approve 🚫
setApprovalForAll 🚫
Présence des fonctions d’approbation par norme.

La fonction approve permet aux utilisateurs de jetons ERC20 et ERC721 de donner à une autre adresse (généralement un contrat) l’autorisation de dépenser un montant ou un NFT spécifique.

La fonction « approve » d’ERC20 et ERC721 :

Pour ERC20, la fonction approve prends en paramètres l’adresse du spender, la personne qui aura accès à vos jetons, et le amount qui correspond au montant de token que vous souhaitez autoriser.

Les applications qui utilisent l’approbation de token ERC20 ont tendance à demander un montant d’approbation énorme afin de ne pas avoir à vous demander une nouvelle approbation à chaque transaction.

Extrait du code officiel de la norme ERC20 d'Openzeppelin, il présente la fonction "approve" qui est une fonction publique qui permet d'autoriser l'accès à ses cryptomonnaies
Fonction d’approbation « approve » de la norme ERC20 – Source : github @openzeppelin

Pour ERC721, la fonction approve prend toujours en premier paramètre l’adresse qui aura accès au NFT, mais cette fois si, le deuxième paramètre sera le numéro de votre NFT. Il permet donc de donner l’accès à un seul NFT du contrat, à condition que ce NFT soit le vôtre.

Extrait du code officiel de la norme ERC721 d'Openzeppelin, il définit la fonction "approve" qui est différente de celle de la norme ERC20 car elle permet de définir l'accès à un NFT précis.
Fonction d’approbation « approve » de la norme ERC721 – Source : github @openzeppelin

La fonction « setApprovalForAll » d’ERC721 et ERC1155 :

La fonction setApprovalForAll est présente pour les jetons de type ERC721 et ERC1155.

Les paramètres sont identiques pour les deux normes, le premier est toujours l’adresse qui aura l’accès, le deuxième est cette fois si un booléen (vrai ou faux) qui permet de définir si l’adresse en question a les droits sur vos tokens.

Cette fonction, comme son nom l’indique, donne automatiquement le droit sur l’ensemble des NFTs présent sur votre portefeuille pour un même contrat.

Extrait du code officiel de la norme ERC721 et ERC1155 d'Openzeppelin, il définit la fonction "setApprovalForAll" qui permet de donner l'accès à toutes ses cryptomonnaies/NFTs en une transaction.
Fonction d’approbation « setApprovalForAll » de la norme ERC721 et ERC1155 – Source : github @openzeppelin

Et quels sont les risques pour vos cryptomonnaies ?

Les risques liés à l’approbation de tokens sont nombreux.

Tout d’abord, il est possible qu’un tiers mal intentionné obtienne l’autorisation d’accéder à vos tokens et les transfère sans votre consentement, et ce via une application frauduleuse. Pour limiter ce risque, il est très important de bien lire les transactions que vous allez signer. Très souvent, votre portefeuille vous indiquera qu’une approbation est demandée, à vous de savoir si elle est normale ou pas.

De plus, les applications qui demandent des montants d’approbation énormes peuvent potentiellement vider votre portefeuille si elles sont piratées. En effet, il est important de noter que l’approbation est permanente et qu’elle est toujours active dans le temps.

Par exemple, imaginons que vous autorisiez le transfert de dix mille dollars d’USDT à un protocole. Ce dernier en utilise mille dollars. Ensuite, vous décidez de vider votre portefeuille en retirant les neuf mille dollars restants. Si un jour vous décidez de remettre des USDT sur votre portefeuille, même dans 10 ans, alors le protocole aura toujours accès à neuf mille dollars de vos fonds.

>> Vous préférez garder vos cryptos à l’abri ? Choisissez un portefeuille Ledger (lien commercial) <<

Comment se protéger contre un potentiel vol ?

En premier lieu, il est important de vérifier les transactions que vous allez signer et de lire les demandes d’approbation avec attention.

Il est également conseillé de révoquer les autorisations d’approbation que vous n’utilisez plus et de ne donner des autorisations qu’à des personnes ou des applications de confiance.

Mais comment révoquer ces autorisations ? Et bien il existe une seule manière, réutiliser les mêmes fonctions vues précédemment.

Par défaut, les plateformes utilisent setApprovalForAll pour les jetons ERC721 et ERC1155 ainsi que approve avec un montant énorme pour ERC20. Ceci leur permet de ne vous demander l’approbation qu’une seule fois. Pour révoquer ces approbations, il suffit de faire l’opération inverse, à savoir :

Pour ERC721 / ERC1155 :

Utiliser la fonction setApprovalForAll avec l’adresse du protocole (ou de la personne) en premier paramètre et false (faux) en deuxième, pour retirer l’approbation.

Pour ERC20 :

Utiliser la fonction approve avec l’adresse du protocole (ou de la personne) en premier paramètre et zéro en montant pour le deuxième, ceci va permettre de révoquer complètement le droit d’accès sur votre cryptomonnaie.

Petite astuce, si vous ne savez pas à qui vous avez déjà donné des approbations, ce site vous permet de les recenser et d’effectuer les révocations directement depuis leur application. Il est très important de le faire régulièrement pour une bonne hygiène numérique.


En conclusion, l’approbation de tokens peut être un mécanisme très utile pour transférer vos cryptomonnaies en toute sécurité, mais il est important de comprendre les risques associés à cette fonctionnalité. Pour se protéger, il est crucial de vérifier attentivement les transactions que vous signez, de ne donner des autorisations qu’à des personnes ou des applications de confiance, et de révoquer les autorisations d’approbation que vous n’utilisez plus. Avec une bonne compréhension de l’approbation de tokens et une utilisation responsable de cette fonctionnalité, vous pouvez profiter pleinement des avantages de la blockchain et de toutes ses applications.

Ne faites pas l’économie de la prudence ! Ainsi, pour conserver vos cryptomonnaies à l’abri, la meilleure solution est encore un wallet hardware personnel. Chez Ledger, il y en a pour tous les profils et toutes les cryptos. N’attendez pas pour mettre vos capitaux en sécurité (lien commercial) !

Maxime - 0xNekr

Je suis un développeur Web3 freelance qui vise à rendre le monde de la blockchain et du développement plus accessible à tous ! Ma mission est d'aider les personnes intéressées à mieux comprendre le monde de la blockchain ainsi que ses mécanismes.