setApprovalForAll expliqué : L'approbation NFT qui vide des collections entières
— By Tony Rabbit in Tutorials

Une arnaque setApprovalForAll fonctionne en vous incitant à accorder le contrôle d'opérateur sur une collection entière de NFT en une seule signature. Découvrez comment la fonction fonctionne, comment elle diffère des allocations ERC-20, comment lire la demande avant de signer, et comment la révoquer.
Une arnaque setApprovalForAll est le moyen le plus courant de vider des collections de NFT, et elle commence presque toujours par une signature que vous n'avez pas entièrement lue. La fonction setApprovalForAll fait partie intégrante des spécifications de jetons ERC-721 et ERC-1155. Lorsque vous l'appelez, vous désignez une autre adresse comme "opérateur" et vous donnez à cet opérateur la permission de déplacer chaque NFT que vous détenez d'un contrat de collection donné, maintenant et à l'avenir. Il n'y a pas de limite par article ni de champ de montant. Une fois qu'un attaquant est défini comme votre opérateur, il peut transférer toute votre collection de ce contrat en un seul balayage, sans vous demander de signer à nouveau. Ce guide explique exactement ce que fait l'octroi, pourquoi il est mécaniquement différent d'une allocation de jetons, comment les sites malveillants déguisent la demande, et comment l'auditer et la révoquer.
Points Clés
- setApprovalForAll accorde à un opérateur le contrôle sur une collection entière de NFT à partir d'un seul contrat, et non sur un seul article.
- Il n'a pas de champ de quantité ou de montant, l'octroi est donc effectivement illimité et persistant jusqu'à sa révocation.
- Les faux mints et les marchés contrefaits le demandent sous le couvert de "l'activation" ou de la "mise en vente" de vos NFT.
- La révocation d'une approbation d'opérateur est une action distincte de la révocation des allocations de jetons ERC-20.
Ce que setApprovalForAll accorde réellement
setApprovalForAll prend deux arguments : une adresse d'opérateur et un booléen (true ou false). Lorsque vous le signez avec la valeur true, le contrat NFT enregistre que l'opérateur nommé est autorisé à appeler transferFrom et safeTransferFrom sur tout ID de jeton que vous possédez au sein de ce contrat. C'est une autorité à l'échelle de la collection. Si vous détenez dix NFT d'un projet aujourd'hui et que vous en mint cinq de plus le mois prochain, l'opérateur peut déplacer les quinze sans nouvelle signature.
C'est la chose la plus importante à comprendre : l'approbation est liée au contrat de collection et à l'opérateur, et non à des NFT spécifiques. Vous n'approuvez pas "ce singe-là". Vous approuvez "toute personne détenant cette clé d'opérateur peut prendre tout ce que je possède de ce contrat, indéfiniment". C'est l'équivalent NFT de remettre à quelqu'un une clé passe-partout d'une pièce et de le laisser la garder. Cette persistance est la raison pour laquelle setApprovalForAll est à l'origine de la majorité des vidages de portefeuilles NFT.
En quoi cela diffère d'une allocation de plafond de dépenses ERC-20
La plupart des gens rencontrent le mot "approbation" pour la première fois via les jetons ERC-20. Là, la fonction approve définit un plafond de dépenses : une allocation numérique qu'un dépensier peut retirer, comme 100 USDC. Le risque avec ERC-20 est le modèle d'approbation infinie, où les dApps demandent un plafond illimité par commodité. Mais même une allocation ERC-20 infinie est toujours limitée à un seul jeton. setApprovalForAll est une forme de risque différente car c'est un interrupteur booléen, pas un nombre, et il couvre l'ensemble de vos avoirs dans une collection à la fois. Si vous êtes nouveau sur le concept, notre guide des transactions d'approbation couvre les mécanismes sous-jacents plus en détail.
Comment les faux mints et les marchés contrefaits le demandent
Les attaquants demandent rarement setApprovalForAll hors contexte. Ils l'enveloppent dans une action d'apparence normale. Une fausse page de mint promettant un drop gratuit ou à prix réduit fera apparaître une demande de portefeuille au moment où vous cliquez sur "mint", et cette demande est en fait setApprovalForAll sur une collection que vous possédez déjà. Un clone de marché contrefait, souvent annoncé via un compte social piraté ou une publicité payante, vous demandera d'"activer" ou d'"approuver pour le trading" avant de pouvoir lister quoi que ce soit. Les marchés légitimes utilisent setApprovalForAll, ce qui est précisément ce qui rend la fausse version convaincante.
La tromperie fonctionne parce que l'action que vous attendez (minting, listing, claiming) est plausible, et le portefeuille affiche un nom de fonction que la plupart des utilisateurs ne reconnaissent pas. Ce modèle chevauche fortement le ice phishing, où la transaction malveillante est une approbation plutôt qu'un transfert évident, et des tactiques plus larges de signature phishing. L'actif ne quitte jamais votre portefeuille pendant l'étape de signature, donc rien ne semble encore volé. Le vidage se produit des minutes ou des heures plus tard lorsque l'opérateur appelle transferFrom et balaie la collection. À ce moment-là, l'approbation a déjà fait son travail.
Comment lire la demande avant de signer
La meilleure défense est d'apprendre à lire l'invite du portefeuille. Lorsqu'un site déclenche une transaction, les portefeuilles modernes affichent la méthode de contrat appelée. Si vous voyez "setApprovalForAll" et un paramètre défini sur "true" pour une action qui ne devrait pas en avoir besoin, arrêtez-vous. Demandez-vous si l'opération devant vous nécessite réellement une permission à l'échelle de la collection. Réclamer un airdrop, visualiser une galerie ou se connecter à un site ne devrait jamais l'exiger.
Vérifiez trois choses. Premièrement, le nom de la fonction : est-ce setApprovalForAll ? Deuxièmement, l'adresse de l'opérateur : correspond-elle au contrat vérifié de la plateforme que vous aviez l'intention d'utiliser, ou est-ce une adresse inconnue ? Troisièmement, le booléen : true signifie que vous accordez, false signifie que vous révoquez. De nombreux sites de drainer comptent sur vous pour cliquer sur l'invite en pilote automatique. Un marché contrefait vous demandera également souvent d'accorder une approbation pour une collection sur un site avec lequel vous n'avez jamais interagi auparavant, ce qui est un signal d'alarme fort. Si quelque chose n'est pas familier, rejetez la demande et vérifiez l'URL indépendamment avant de réessayer. La plupart de ces flux sont alimentés par un kit wallet drainer prêt à l'emploi conçu pour que l'invite semble routinière.
Comment auditer et révoquer les approbations d'opérateur
Les approbations d'opérateur se trouvent sur une surface différente des allocations ERC-20, de sorte qu'un outil ou un tableau de bord qui n'affiche que les plafonds de dépenses de jetons peut ne pas les afficher du tout. Pour auditer correctement, utilisez un outil de révocation qui liste explicitement les approbations d'opérateur NFT, souvent étiquetées "approbations pour tous" ou affichées par collection. Connectez votre portefeuille en mode lecture, examinez chaque collection où un opérateur est défini, et identifiez toute adresse d'opérateur que vous ne reconnaissez pas ou n'utilisez plus.
Pour révoquer, vous appelez à nouveau setApprovalForAll sur le même contrat de collection, cette fois avec le booléen défini sur false pour cet opérateur. Il s'agit d'une transaction on-chain, elle coûte donc du gas, et elle doit être effectuée par collection et par opérateur. Il n'existe pas de bouton unique qui efface toutes les approbations NFT en une seule fois sur tous les contrats. Notre guide de révocation étape par étape montre le processus pour les allocations de jetons et les approbations d'opérateur. Faites-en une habitude périodique, et non un nettoyage ponctuel, surtout après avoir utilisé de nouveaux sites de mint ou des marchés.
Habitudes à adopter pour éviter d'approuver en bloc des contrats inconnus
La prévention est moins chère que le nettoyage. Gardez un portefeuille de "minting" dédié qui ne contient que les fonds et les NFT que vous utilisez activement, afin qu'une mauvaise approbation ne puisse pas exposer vos avoirs à long terme. Traitez chaque demande setApprovalForAll comme une décision délibérée plutôt qu'une formalité, et ne l'accordez jamais sur un site que vous avez atteint via une publicité, un message direct ou un lien non sollicité. Vérifiez les URL des marchés et des mints auprès de sources officielles, et non des publicités de recherche, qui sont régulièrement détournées par les opérateurs de drainer.
Enfin, établissez une routine : examinez vos approbations mensuellement, révoquez tout ce qui est obsolète, et révoquez immédiatement après avoir fini d'utiliser un site de mint ponctuel. Les approbations d'opérateur n'expirent pas d'elles-mêmes, donc un ancien octroi d'un projet oublié reste une surface d'attaque active tant que vous le laissez actif. Quelques minutes d'audit protègent des actifs qui peuvent valoir bien plus que le gas que coûte la révocation.
Cet article est à des fins éducatives uniquement et ne constitue pas un conseil financier.