setApprovalForAll Explicado: A Aprovação de NFT Que Esvazia Coleções Inteiras
— By Tony Rabbit in Tutorials

Um golpe de setApprovalForAll funciona enganando você para conceder controle de operador sobre uma coleção inteira de NFT em uma única assinatura. Aprenda como a função funciona, como ela difere das permissões ERC-20, como ler a solicitação antes de assinar e como revogá-la.
Um golpe de setApprovalForAll é a forma mais comum de coleções de NFT serem esvaziadas, e quase sempre começa com uma assinatura que você não leu completamente. A função setApprovalForAll é uma parte padrão das especificações de token ERC-721 e ERC-1155. Ao chamá-la, você nomeia outro endereço como um "operador" e concede a esse operador permissão para mover todos os NFTs que você possui de um determinado contrato de coleção, agora e no futuro. Não há limite por item e nenhum campo de valor. Uma vez que um invasor é definido como seu operador, ele pode transferir toda a sua coleção desse contrato em uma única varredura, sem pedir que você assine novamente. Este guia explica exatamente o que a concessão faz, por que é mecanicamente diferente de uma permissão de token, como sites maliciosos disfarçam a solicitação e como auditá-la e revogá-la.
Principais Pontos
- setApprovalForAll concede a um operador controle sobre uma coleção inteira de NFT de um contrato, não um único item.
- Não possui campo de quantidade ou valor, então a concessão é efetivamente ilimitada e persistente até ser revogada.
- Cunhagens falsas e mercados falsificados solicitam isso sob o pretexto de "habilitar" ou "listar" seus NFTs.
- Revogar uma aprovação de operador é uma ação separada da revogação de permissões de token ERC-20.
O que setApprovalForAll realmente concede
setApprovalForAll aceita dois argumentos: um endereço de operador e um booleano (true ou false). Quando você o assina com o valor definido como true, o contrato NFT registra que o operador nomeado tem permissão para chamar transferFrom e safeTransferFrom em qualquer ID de token que você possua dentro desse contrato. Essa é uma autoridade para toda a coleção. Se você possui dez NFTs de um projeto hoje e cunha mais cinco no próximo mês, o operador pode mover todos os quinze sem uma nova assinatura.
Esta é a coisa mais importante a entender: a aprovação está vinculada ao contrato da coleção e ao operador, não a NFTs específicos. Você não está aprovando "este único macaco". Você está aprovando "qualquer pessoa que possua esta chave de operador pode pegar tudo o que eu possuo deste contrato, indefinidamente". É o equivalente NFT a entregar a alguém uma chave mestra de uma sala e deixá-la com ela. Essa persistência é a razão pela qual setApprovalForAll está por trás da maioria dos esvaziamentos de carteiras NFT.
Como difere de uma permissão de limite de gastos ERC-20
A maioria das pessoas encontra a palavra "aprovação" pela primeira vez através de tokens ERC-20. Lá, a função approve define um limite de gastos: uma permissão numérica que um gastador pode retirar, como 100 USDC. O risco com ERC-20 é o padrão de aprovação infinita, onde dApps solicitam um limite ilimitado por conveniência. Mas mesmo uma permissão ERC-20 infinita ainda está limitada a um token. setApprovalForAll é uma forma diferente de risco porque é um interruptor booleano, não um número, e cobre toda a sua posse em uma coleção de uma só vez. Se você é novo no conceito, nosso guia para transações de aprovação aborda a mecânica subjacente em mais profundidade.
Como cunhagens falsas e mercados falsificados o solicitam
Os invasores raramente pedem setApprovalForAll fora de contexto. Eles o envolvem em uma ação de aparência normal. Uma página de cunhagem falsa prometendo um lançamento gratuito ou com desconto exibirá uma solicitação de carteira no momento em que você clicar em "cunhar", e essa solicitação é, na verdade, setApprovalForAll em uma coleção que você já possui. Um clone de mercado falsificado, frequentemente anunciado através de uma conta social hackeada ou um anúncio pago, pedirá que você "habilite" ou "aprove para negociar" antes de poder listar qualquer coisa. Mercados legítimos usam setApprovalForAll, o que é exatamente o que torna a versão falsa convincente.
O engano funciona porque a ação que você espera (cunhagem, listagem, reivindicação) é plausível, e a carteira mostra um nome de função que a maioria dos usuários não reconhece. Este padrão se sobrepõe fortemente ao ice phishing, onde a transação maliciosa é uma aprovação em vez de uma transferência óbvia, e com táticas mais amplas de phishing de assinatura. O ativo nunca sai da sua carteira durante a etapa de assinatura, então nada parece roubado ainda. O esvaziamento acontece minutos ou horas depois, quando o operador chama transferFrom e varre a coleção. Até então, a aprovação já cumpriu sua função.
Como ler a solicitação antes de assinar
A melhor defesa é aprender a ler o prompt da carteira. Quando um site aciona uma transação, as carteiras modernas exibem o método do contrato que está sendo chamado. Se você vir "setApprovalForAll" e um parâmetro definido como "true" para uma ação que não deveria precisar disso, pare. Pergunte se a operação à sua frente realmente exige permissão para toda a coleção. Reivindicar um airdrop, visualizar uma galeria ou conectar-se a um site nunca deveria exigir isso.
Verifique três coisas. Primeiro, o nome da função: é setApprovalForAll? Segundo, o endereço do operador: ele corresponde ao contrato verificado da plataforma que você pretendia usar, ou é um endereço desconhecido? Terceiro, o booleano: true significa que você está concedendo, false significa revogando. Muitos sites de drenagem contam com você clicando no prompt no piloto automático. Um mercado falsificado também costuma pedir que você conceda aprovação para uma coleção em um site com o qual você nunca interagiu antes, o que é um forte sinal de alerta. Se algo for desconhecido, rejeite a solicitação e verifique a URL independentemente antes de tentar novamente. A maioria desses fluxos é alimentada por um kit wallet drainer pronto para uso, projetado para fazer o prompt parecer rotineiro.
Como auditar e revogar aprovações de operador
As aprovações de operador residem em uma superfície diferente das permissões ERC-20, então uma ferramenta ou painel que mostra apenas limites de gastos de token pode não exibi-las. Para auditar corretamente, use uma ferramenta de revogação que liste explicitamente as aprovações de operador NFT, frequentemente rotuladas como "aprovações para todos" ou mostradas por coleção. Conecte sua carteira no modo de leitura, revise cada coleção onde um operador está definido e identifique qualquer endereço de operador que você não reconheça ou não use mais.
Para revogar, você chama setApprovalForAll novamente no mesmo contrato de coleção, desta vez com o booleano definido como false para aquele operador. Esta é uma transação on-chain, então custa gas, e deve ser feita por coleção por operador. Não há um único botão que limpe todas as aprovações de NFT de uma vez em todos os contratos. Nosso passo a passo de revogação mostra o processo para permissões de token e aprovações de operador. Torne isso um hábito periódico, não uma limpeza única, especialmente depois de usar novos sites de cunhagem ou mercados.
Hábitos para evitar aprovar contratos desconhecidos de forma abrangente
Prevenção é mais barata que limpeza. Mantenha uma carteira de "cunhagem" dedicada que contenha apenas os fundos e NFTs que você está usando ativamente, para que uma aprovação ruim não possa expor suas posses de longo prazo. Trate cada solicitação de setApprovalForAll como uma decisão deliberada, e não como uma formalidade, e nunca a conceda em um site que você acessou através de um anúncio, uma mensagem direta ou um link não solicitado. Verifique as URLs de mercados e cunhagens de fontes oficiais, não de anúncios de busca, que são rotineiramente sequestrados por operadores de drenagem.
Finalmente, crie uma rotina: revise suas aprovações mensalmente, revogue qualquer coisa obsoleta e revogue imediatamente após terminar de usar um site de cunhagem único. As aprovações de operador não expiram por si mesmas, então uma concessão antiga de um projeto esquecido permanece uma superfície de ataque ativa enquanto você a deixar ativa. Alguns minutos de auditoria protegem ativos que podem valer muito mais do que o gas que custa para revogar.
Este artigo é apenas para fins educacionais e não constitui aconselhamento financeiro.