O que é, de fato, uma aprovação de token
Numa rede como a Ethereum, tokens como USDT e USDC são, cada um, um contrato próprio que mantém o seu próprio livro-razão. Quando você quer trocar USDT por ETH numa DEX como a Uniswap, esbarra num problema — o contrato da Uniswap não consegue simplesmente sacar USDT da sua conta, porque ele não tem permissão para isso.
Então o padrão ERC-20 quebra a ação em duas etapas. Primeiro você chama o approve(spender, amount) do contrato do token, que diz ao contrato do USDT: "autorizo este endereço da Uniswap a mover até esta quantidade de USDT da minha conta." Depois, quando a Uniswap executa a troca, ela chama transferFrom para puxar os tokens. A primeira etapa é a autorização; a segunda é o gasto de fato.
Esse mecanismo é o que faz toda a DeFi funcionar — trocas em DEX, depósitos em protocolos de empréstimo, mover tokens entre redes via bridge, quase tudo tem um approve em algum lugar por baixo. O problema mora em dois pontos: o valor da aprovação e o seu prazo de vida. Ninguém te obriga a pensar em nenhum dos dois, e o padrão da carteira costuma fazer a escolha mais preguiçosa — e mais perigosa — no seu lugar.
Por que aprovação ilimitada é a maior porta dos fundos
Quando a maioria dos dApps abre um pedido de approve, o valor que ele já vem preenchido não é "o trocadinho que você está trocando agora" — é o valor máximo de um uint256, que na prática é ilimitado. A lógica é prática: aprove um valor ilimitado uma vez e você nunca mais precisa assinar outro approve para aquele token, então a experiência continua fluida. O preço é que você entregou ao contrato spender o controle sobre todo o seu saldo daquele token, mais qualquer coisa que você venha a receber depois.
O problema maior é o prazo de vida — a aprovação nunca expira sozinha. Uma aprovação ilimitada que você deu a algum protocolo três anos atrás para uma única troca continua viva hoje. No dia em que aquele contrato for comprometido, ou se era um contrato de phishing esperando o tempo todo, o atacante só chama transferFrom uma vez e o seu saldo daquele token some de uma só vez — sem precisar da sua chave privada, sem precisar de outra assinatura, porque você já assinou faz tempo.
Aprovação ilimitada somada a um contrato comprometido é o caminho clássico de "perder fundos enquanto dorme" on-chain. A maioria de quem é esvaziado não caiu num golpe naquele dia — uma aprovação concedida muito antes finalmente foi explorada. Isso é diferente de chave privada vazada: chave vazada perde o endereço inteiro, enquanto uma aprovação abusada costuma custar só o token que foi aprovado. Mas conceda aprovações ilimitadas a uma dúzia de protocolos e você abriu uma dúzia de portas na mesma parede.
O que o golpista realmente quer: suas aprovações
Quando você entende o mecanismo de aprovação, uma categoria gigante de golpes de carteira de repente faz sentido: eles não estão atrás da sua chave privada, estão te induzindo a assinar uma aprovação ou uma assinatura equivalente. É também por isso que acontece o famoso "eu nunca falei minha seed para ninguém, como é que perdi fundos?" — você não vazou a seed, só assinou a aprovação errada uma vez. Já destrinchamos vários casos reais aqui no site, e a isca é sempre essa mesma etapa de aprovação:
- Um falso airdrop que te atrai a assinar uma armadilha de phishing com setApprovalForAll — um botão de "aprovar tudo" de NFT que, depois de assinado, entrega uma coleção inteira ao atacante.
- Uma página disfarçada de DEX legítima escondendo um Permit EIP-2612 de falsa troca — você acha que está assinando uma troca de rotina, mas está assinando uma aprovação off-chain.
- Uma armadilha de permit em bid da Blur embutida no fluxo de ofertas de um marketplace de NFT — uma "assinatura de listagem" de aparência inofensiva que silenciosamente leva embora uma aprovação.
- Uma assinatura falsa de Permit2 se passando pela Uniswap — mirando exatamente o mecanismo Permit2 que vamos ver abaixo.
O que esses casos têm em comum é o momento da assinatura: o popup é ou um hexadecimal incompreensível, ou foi cuidadosamente embrulhado para parecer uma "operação normal". Defender-se deles não é só "não clicar em qualquer coisa" — é entender o que você está aprovando e limpar depois as aprovações de que não precisa mais. A primeira parte — como ligar a decodificação de assinatura — cobrimos em Segurança no MetaMask para uso diário; a verificação e a revogação é o tema deste guia.
Passo um · achar suas aprovações existentes
Você não consegue listar suas aprovações de cabeça — para quem está na ativa há um ou dois anos, a lista costuma ser assustadoramente longa. A boa notícia é que aprovações são dados públicos on-chain, então qualquer um pode consultar. Três tipos de ferramenta aparecem com mais frequência:
Verificadores de aprovação dos block explorers
Na Ethereum você usa o Etherscan; na BNB Chain, o BscScan. Os dois trazem um Token Approval Checker embutido (o endereço fica tipo etherscan.io/tokenapprovalchecker). Cole o seu endereço e ele lista cada aprovação ERC-20 / ERC-721 que aquele endereço emitiu: quem é o spender, qual o valor da allowance, para qual token. Aprovações ilimitadas vêm marcadas como Unlimited, então dá para identificar de bate-pronto.
Essa é a fonte mais confiável — os dados vêm direto da própria rede. O porém é que é por rede: o Etherscan só enxerga a mainnet Ethereum, então suas aprovações em Arbitrum, Optimism ou Base têm que ser conferidas nos explorers de cada uma. Passe por cada rede que você usou, uma por uma; não confira só a mainnet e ache que está limpo.
Agregadores como o revoke.cash
O revoke.cash é a ferramenta de terceiros mais usada nesse campo, juntando aprovações de várias redes numa única interface: conecte a carteira ou cole um endereço e ele puxa o seu conjunto completo de aprovações entre redes, ordenado por valor e por data do último uso, marcando as allowances ilimitadas e as que você não toca há séculos. Dá até para disparar a revogação ali mesmo, sem voltar para um explorer chamar o contrato na mão.
Verificar aprovações é só leitura: colar um endereço para consultar não exige conectar carteira nem assinar nada — é seguro. Só a etapa de revogar é que precisa de conexão da carteira, assinatura e gas. Então "consultar primeiro, decidir o que revogar, depois conectar e agir" é a ordem mais segura. Ao acessar ferramentas assim, sempre digite o domínio oficial na mão ou use o favorito — nunca clique a partir de um anúncio de busca ou de um link no Twitter. Sites falsificados vivem exatamente disso.
O gerenciador de aprovações embutido na carteira
Várias carteiras hoje já trazem o próprio painel de aprovações. O MetaMask, nas versões depois da 11.x, deixa você ver algumas aprovações pelos detalhes do token ou pelo menu de segurança e revogá-las direto; algumas carteiras mobile colocaram uma entrada parecida em "Configurações / Segurança". As ferramentas embutidas ganham por não precisar sair da carteira, mas costumam cobrir menos redes e tokens que as dedicadas. Minha rotina é dar uma olhada no painel embutido no dia a dia e cruzar com um explorer mais o revoke.cash numa faxina periódica.
Passo dois · como revogar
Antes de tudo, deixa isso claro: revogar também é uma transação on-chain, e custa gas. Não é uma chave que você liga num site — é uma transação de verdade enviada à rede que reescreve a allowance registrada no contrato do token. Então, antes de revogar, garanta que a carteira tem um pouco da moeda nativa da rede (ETH, BNB e por aí) para cobrir a taxa. Tomando o revoke.cash como exemplo — o fluxo é bem parecido entre as ferramentas:
- Conecte a carteira e confirme que a rede mostrada no canto superior direito é a rede cujas aprovações você quer limpar. Para limpar várias redes, troque de rede e cuide de cada uma na sequência.
- Escolha os spenders a revogar na lista. Priorize três tipos: tudo com allowance Unlimited, tudo usado pela última vez há muito tempo e qualquer contrato cujo nome você nem reconhece.
- Clique em Revoke e a carteira abre um pedido de transação. É aqui que você assina — leia o que ela vai fazer antes de assinar. Uma revogação normal coloca a allowance em 0, ou vira o setApprovalForAll de volta para false.
- Pague o gas e espere a confirmação. Quando a transação entra na rede, aquela aprovação está morta.
Tenha claro os dois tipos de aprovação e como se revoga cada um. Uma aprovação ERC-20 (USDT, USDC e afins) é um valor, então revogar significa colocar o valor em 0 — embora você também possa deixá-lo num valor pequeno e suficiente em vez de ir até o zero. ERC-721 / ERC-1155 (NFTs) costumam usar o setApprovalForAll, que é um interruptor: tudo ligado ou tudo desligado, sem meio-termo de "diminuir o valor". Revogar significa virar esse booleano de volta para false.
Uma vez fiz uma limpeza completa num endereço principal que eu usava há mais de três anos (os números abaixo são ilustrativos). Em quatro redes apareceram mais de 40 aprovações, mais da metade ilimitadas, a mais antiga de um protocolo que eu usei uma vez dois anos atrás e nunca mais toquei. Revogar uma a uma deu uns dez e poucos dólares de gas, divididos em duas noites quando a rede estava tranquila.
O que Permit e Permit2 têm de especial
O approve acima é uma aprovação on-chain — é uma transação por si só, registrada no seu histórico, então dá para achar. Mas o Permit (EIP-2612) e o Permit2 da Uniswap, que viraram moda nos últimos anos, são aprovações assinadas off-chain, e isso complica a auditoria.
O Permit foi pensado para economizar gas: em vez de enviar uma transação de approve separada, você assina uma mensagem de autorização off-chain e envia essa assinatura junto com a ação, fundindo aprovação e uso numa etapa só. A desvantagem é que essa assinatura não necessariamente deixa um registro de approve avulso on-chain, então você pode não ver nada no seu histórico de transações sobre o que aprovou. Os golpistas exploram exatamente isso, disfarçando uma aprovação maliciosa de uma assinatura inofensiva.
O Permit2 é o contrato de aprovação unificado da Uniswap. A lógica: você faz um único approve on-chain (muitas vezes ilimitado) ao contrato Permit2, e daí em diante todo app que usa Permit2 pede uma allowance a ele por assinatura off-chain, com o Permit2 movendo seus tokens em nome deles. Isso centraliza a gestão de aprovações num só lugar, mas também significa que o próprio contrato Permit2 detém uma permissão enorme sobre seus tokens.
A forma de auditar o Permit2:
- Primeiro, verifique quais approves de ERC-20 você concedeu ao endereço do contrato Permit2 em si — esses são registros on-chain, achados num explorer ou no revoke.cash.
- Depois confira as allowances que o Permit2 concedeu internamente: ferramentas como o revoke.cash já leem as relações de aprovação internas do Permit2, mostrando para quais apps ele subdelegou, em que valor e quando expiram.
- As subaprovações do Permit2 podem carregar um prazo de expiração, mas muitos padrões ainda vêm bem longos. Entre periodicamente e limpe as subaprovações que você não usa mais, junto com os prazos longos demais.
Por passarem por assinatura off-chain, um popup de Permit / Permit2 costuma mostrar uma assinatura estruturada em vez de uma "transação de transferência", o que o torna mais enganoso. Crie o hábito: quando uma assinatura traz palavras como Permit, spender ou allowance, pare e leia o endereço do spender e o valor; se não baterem com o esperado, recuse. Para fazer a carteira mostrar esses campos em linguagem clara, veja a seção de decodificação de assinatura em Segurança no MetaMask.
Boas práticas · manter a exposição no mínimo
Verificar e revogar são remendos depois do fato; o que realmente poupa dor de cabeça é não espalhar tanto a sua exposição já de início. Algumas regras que eu sempre sigo:
- Revogue quando terminar. Testou um protocolo novo ou fez um mint avulso, revogue a aprovação assim que acabar — feche a porta no instante em que a operação termina.
- Não conceda ilimitado. Se o popup de approve deixa editar o valor, dê só o que esta transação precisa. A maioria das carteiras e dApps grandes já suporta valor personalizado.
- Audite com regularidade. Estabeleça um ritmo — tipo, varrer as redes com o revoke.cash a cada trimestre e limpar as ilimitadas, as sem uso há muito tempo e as irreconhecíveis.
- Guarde fundos grandes numa carteira separada que nunca conecta a dApps. Esse é o isolamento físico mais eficaz: deixe o grosso dos ativos num endereço que não conecta em nada e use outro endereço "de linha de frente", com saldo pequeno, para a interação do dia a dia — se a linha de frente cair num golpe, o caixa principal fica intacto. Para fazer camadas entre endereços, veja o guia completo de carteiras.
- Leia antes de assinar. A última linha de toda defesa são os três segundos antes de assinar — entender o spender e o valor vale mais que qualquer ferramenta.
Custo e alguns mitos comuns
Há alguns mal-entendidos sobre revogar que vale a pena esclarecer, para você não entrar em pânico nem relaxar pelos motivos errados.
Mito um: revogar é de graça. Errado — é uma transação on-chain e você paga gas. Então não precisa revogar cada aprovação do seu histórico. Priorize as ilimitadas, as que você não usa mais e as de origem desconhecida; uma allowance pequena para um protocolo de confiança que você usa sempre pode ficar, te poupando o gas de reaprovar toda hora.
Mito dois: ter aprovação = já fui roubado. Errado. Uma aprovação só significa que o spender poderia mover seus tokens; não significa que já moveu. Aparecer um monte de aprovação ilimitada não é motivo para se assustar — ordene por risco e comece a revogar pelas mais perigosas. Algo só dá errado de fato se aquele contrato for malicioso ou comprometido.
Mito três: revogou uma vez, resolvido para sempre. Errado. Uma revogação só vale para aquela concessão — da próxima vez que você usar o mesmo protocolo, ele vai pedir aprovação de novo, o que é normal; é só conceder um valor suficiente conforme a necessidade. Revogar não é "bloquear", é "retomar esta chave de uma vez".
Mito quatro: trocou de app de carteira e as aprovações antigas sumiram. Errado. Uma aprovação fica atrelada ao endereço, não ao app que você usa para abri-lo. Enquanto o endereço antigo ainda tiver tokens, aquelas aprovações continuam vivas e continuam sendo risco — você precisa conectar e revogar. Se o endereço antigo está totalmente vazio e fora de uso, dá para deixar, mas o mais seguro é aposentá-lo e nunca mais enviar nenhum ativo para ele.
O que nos leva a um ângulo que não tem como driblar: toda essa trabalheira de verificar, revogar e auditar é, no fundo, o custo da autocustódia — você gerencia suas próprias chaves, então gerencia suas próprias aprovações. Se uma parte dos seus ativos está ali só para segurar a longo prazo, sem plano de interação on-chain frequente, então deixá-la numa corretora centralizada como a Binance faz com que aprovações simplesmente não existam: a plataforma faz a custódia para você e você não perde fundos por uma aprovação errada (a contrapartida é confiar na própria plataforma). Autocustódia e custódia têm cada uma seus trade-offs, e dividir os fundos por finalidade é a saída realista — algo que também abrimos em carteira fria vs carteira quente.
Uma última coisa
Aprovações de token são o encanamento por baixo da DeFi — bem usadas, deixam tudo fluido; negligenciadas, viram uma porta destrancada na sua carteira. Este guia se resume a três coisas: saber o que é uma aprovação, conferir com regularidade o que você concedeu e revogar o excesso e o perigoso. Mais um hábito que atravessa tudo — ler o que você está aprovando antes de assinar.
Tire dez minutos hoje e varra o seu endereço do dia a dia com o revoke.cash. É bem provável que apareçam algumas aprovações ilimitadas que você tinha esquecido faz tempo — revogue-as e talvez você acabe de barrar uma perda futura sobre a qual você nunca nem ficaria sabendo.
Interfaces e ferramentas mudam rápido. Se algo neste guia não bater com o que você vê, avise a gente — registramos na página de correções. Desastre de aprovação costuma vir com uma assinatura enganosa, então vale ler Segurança no MetaMask junto com este: aquele cobre "como ler antes de assinar", e este cobre "como retomar depois" — duas defesas, uma antes e uma depois.