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 carteira pode ser esvaziada sem que você tenha caído em golpe nenhum naquele dia — basta que uma aprovação concedida muito antes seja 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. A biblioteca de casos destrincha vários casos ilustrativos baseados em táticas reais de golpe, 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.
Para dar uma ideia de escala: um endereço principal usado há alguns anos pode acumular dezenas de aprovações em várias redes, mais da metade ilimitadas, as mais antigas de protocolos que você já nem usa. Revogar uma a uma pode custar uns dez e poucos dólares de gas; dá para dividir em algumas sessões quando a rede estiver 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.