Aprovações e allowance de tokens: como revisar e revogar ERC-20
Entenda o que uma aprovação ERC-20 permite, como funcionam allowances ilimitadas e assinaturas permit e o que a revogação altera — e o que não altera.
Neste guiaConectar a carteira e aprovar um token são permissões diferentes
Resumo breve
Uma chamada ERC-20 `approve` normalmente não envia tokens na hora. Ela registra quanto um spender específico poderá solicitar depois por meio de `transferFrom`. Desconectar a carteira de um site não necessariamente apaga essa allowance on-chain, e zerá-la não desfaz uma transferência já concluída.
Conectar a carteira e aprovar um token são permissões diferentes
Conectar-se a um site geralmente permite que o aplicativo veja um endereço público e solicite assinaturas. Isso, por si só, não autoriza o aplicativo a mover todos os tokens ERC-20. A allowance fica registrada separadamente no contrato do token. A MetaMask também diferencia desconectar uma dapp de revogar aprovações de tokens.
Uma allowance ERC-20 está ligada ao contrato do token, à rede, ao endereço do proprietário e ao endereço do spender. Uma aprovação na Ethereum não vale para o mesmo símbolo na Polygon nem para outro token. Lembrar apenas que “aprovei esse site” pode esconder qual token e qual rede ainda têm permissão ativa.
Este guia trata de approve, allowance e transferFrom de ERC-20 na Ethereum e em redes compatíveis. Transferências de ETH nativo, setApprovalForAll de NFT, outros padrões e conexões de login da carteira usam modelos diferentes. Para backup e recuperação de chaves, veja o guia de frase-semente e recuperação de carteira.
`approve` registra um limite de gasto; não envia o token
Com approve(spender, amount), o titular pode permitir que um spender específico use até certa quantidade de tokens. transferFrom permite que esse spender mova tokens em nome do titular. Assim, approve normalmente não altera o saldo naquele momento, mas uma chamada posterior do contrato pode consumir a allowance. Esse é o fluxo definido pelo padrão ERC-20.
Por exemplo, se uma carteira tem 300 tokens e concede allowance de 80 a um roteador, em um ERC-20 convencional o limite efetivo é o menor entre a allowance restante e o saldo. A permissão pode cobrir várias operações: o contrato pode chamar transferFrom mais de uma vez. Se o contrato autorizado ou o caminho de execução esperado for explorado, os tokens podem se mover de uma forma que o usuário não esperava. Comportamentos fora do padrão também importam.
A aprovação geralmente é uma transação on-chain para o contrato do token e pode gerar taxa de rede. Alguns aplicativos separam aprovação e swap; outros combinam uma assinatura de permissão com uma transação posterior. Confira o conteúdo que a carteira pede para assinar e a rede selecionada, não apenas o botão “Approve”.
Uma allowance ilimitada não é um saque imediato
“Unlimited” normalmente representa uma allowance próxima do valor inteiro máximo do token. Isso não cria tokens infinitos nem transfere o saldo quando a aprovação é feita. Porém, o spender poderá usar a permissão restante depois, inclusive sobre tokens que chegarem à mesma carteira para aquele token e rede. Algumas implementações preservam o valor máximo sem descontá-lo; confira como o token funciona.
Um aplicativo pode solicitar um limite amplo para evitar aprovações repetidas, mas conveniência e exposição devem ser avaliadas juntas. Uma vulnerabilidade ou abuso do controle do contrato spender pode tornar uma aprovação antiga relevante mais tarde. O guia de revogação da Ethereum.org explica por que uma allowance ampla pode continuar importando mesmo depois de devolver ativos à carteira.
Um limite menor não elimina todos os riscos. Aprovar um token falso ou o spender errado pode causar perda mesmo com um valor pequeno; aprovar a cada operação também traz taxas e oportunidades de erro. Considere o valor planejado, a frequência de uso, a confiança no contrato e se você consegue revisar a autorização depois.

Confira rede, token, spender e valor antes de assinar
Antes de assinar, confira quatro itens: se a rede selecionada coincide com a indicada pelo aplicativo; se o endereço do contrato do token está correto, e não apenas o símbolo; se o endereço do spender coincide com a documentação oficial ou dados verificáveis do contrato; e se o limite corresponde à operação planejada ou deixa uma permissão ampla por muito tempo.
Não conecte a carteira por links de mensagens diretas, QR codes, chats de suporte ou anúncios não verificados. Uma página de phishing pode imitar um aplicativo real. Comece por um domínio oficial salvo ou pela documentação do projeto. Um nome de contrato conhecido não prova que o endereço é seguro; a marca de verificação de um explorador também não certifica a segurança do contrato.
Um assinador de hardware pode manter a chave privada separada do navegador comum, mas não decide se o spender ou o valor são seguros. Se o dispositivo não mostrar o pedido de forma compreensível, pare e consulte a explicação oficial do provedor da carteira. Menos detalhes visíveis também significam menos possibilidade de revisão.
`permit` muda o caminho da aprovação, mas ainda cria uma permissão
Alguns ERC-20 suportam ERC-2612 permit. Em vez de enviar uma transação approve comum, o titular assina dados tipados; outra parte pode enviar essa assinatura para definir a allowance. A mensagem padrão inclui titular, spender, valor, nonce e deadline, além de um domínio que vincula a assinatura à rede e ao contrato.
A deadline do ERC-2612 é o último momento para enviar o permit assinado. Ela não significa que uma allowance já definida expire automaticamente naquele horário. O limite pode permanecer até ser usado, alterado ou revogado. Alguns tokens usam outros modelos de permit ou regras extras de expiração; não presuma que toda solicitação chamada “permit” segue ERC-2612.
Uma assinatura pode permitir que outra conta pague a taxa, mas isso não a torna uma confirmação inofensiva de login. Se a carteira não mostrar claramente token, spender, valor e condições de tempo — ou se os dados não coincidirem com a explicação do aplicativo — recuse e consulte a documentação oficial. Uma assinatura ainda não enviada também pode ser enviada por outra pessoa antes do prazo.
Desconectar um site não revoga uma allowance on-chain
Sair ou desconectar muda a sessão do navegador ou a permissão de conexão. Uma allowance ERC-20 já gravada no contrato do token pode continuar ativa. Por outro lado, revogá-la não apaga o endereço público que o site já conhece nem o histórico on-chain. O guia de desconexão da MetaMask explica essa diferença.
Revogar normalmente exige uma transação on-chain que define como zero a allowance daquele token e spender. A transação gera taxa de rede, e a permissão antiga pode valer até a confirmação. Depois, atualize a lista de aprovações ou consulte o contrato novamente para confirmar o valor zero para a mesma carteira, rede, token e spender. MetaMask e Ethereum.org descrevem verificadores por rede; confira o domínio oficial e a rede selecionada.
Cada rede mantém seu próprio estado. Zerar uma allowance na Ethereum não altera automaticamente a autorização do mesmo token em outra rede. Confira cada conta, contrato de token, spender e rede relevante e verifique o resultado após a confirmação. Uma ferramenta de revogação não precisa da sua frase-semente nem da chave privada.
Revogar bloqueia o uso futuro; não desfaz uma transferência concluída
Depois que uma allowance zero é confirmada, aquela permissão não pode sustentar um novo transferFrom. Revogar não desfaz transferências concluídas, não recupera tokens do destinatário nem remove permissões de outros contratos. Se um spender suspeito já moveu tokens, a revogação não garante a recuperação.
Se a chave privada da carteira estiver exposta, um invasor ainda poderá assinar transações de outras formas. Aprovações para outros spenders ou tokens, permissões de operador de NFT, assinaturas permit e permissões específicas de contratos também podem continuar ativas. Interprete o resultado somente para a carteira e a rede que você verificou.
Depois da revogação, talvez seja necessário aprovar novamente no próximo swap, depósito ou resgate. Antes, verifique se uma transação pendente ou posição ativa usa aquela permissão e consulte a ajuda oficial do protocolo se necessário. O importante é saber o que muda no próximo passo.
Ao alterar uma allowance, considere a condição de corrida do ERC-20
O padrão ERC-20 recomenda que a interface zere uma allowance não nula antes de substituí-la por outro valor não nulo. Se uma transação do spender entrar entre a autorização antiga e a nova, ele pode usar mais do que o usuário esperava. Por exemplo, ao mudar de 100 para 25, o spender pode usar os 100 antigos antes de o novo 25 ser registrado e depois usar também o novo limite.
Confirmar primeiro o zero reduz a chance de os valores antigo e novo ficarem disponíveis ao mesmo tempo, mas não desfaz o uso da allowance antiga antes da confirmação da transação zero. As duas etapas podem ter taxas, e o comportamento dos tokens varia. Siga o fluxo seguro documentado pela carteira ou pelo token e espere a confirmação.
Se não souber a allowance atual, consulte o contrato do token na rede selecionada antes de substituí-la. Se a carteira mostrar um valor vazio ou inesperado, confira se você não está vendo outra rede ou endereço. Tanto o endereço do proprietário quanto o contrato do token precisam corresponder.
Use uma rotina breve para revisar permissões
- Confirme o domínio oficial do projeto e a rede selecionada.
- Verifique os endereços do contrato do token e do spender; compare o limite com o valor necessário para a ação.
- Leia a transação ou os dados tipados que a carteira realmente mostra. Não assine algo que você não entende.
- Na rede correspondente, revise spenders que não usa mais ou não confia; se apropriado, zere a allowance e confirme o resultado.
- Ao comparar carteiras, confira as redes suportadas, a clareza com que mostram aprovações e as orientações de atualização e recuperação.
Uma carteira de hardware é uma opção para guardar chaves e revisar assinaturas, não uma garantia de que o contrato é seguro nem uma barreira contra aprovar um limite amplo. Confira você mesmo spender, token, rede e valor. Entender que allowances podem permanecer separadas da conexão com o site ajuda a comparar os recursos de segurança de uma carteira e seus limites reais.
Perguntas frequentes
Q1Desconectar minha carteira remove uma aprovação de token existente?
Não. A conexão ao site é uma sessão; a allowance ERC-20 é estado on-chain do contrato do token. Confira separadamente o spender na rede e no token correspondentes e revogue se necessário.
Q2Se eu zerar a allowance, posso recuperar tokens já transferidos?
Não. Após a confirmação, o zero impede usos futuros, mas não desfaz uma transferência concluída. Verifique outras aprovações e eventual exposição da chave separadamente.
Q3Todos os tokens cripto e NFTs usam allowances ERC-20?
Não. Este guia trata de approve e transferFrom do ERC-20. Permissões de operador de NFT, ativos nativos, outros padrões e regras específicas de cada rede são diferentes.
Fontes e leituras adicionais
Relatar um problema
Vamos preparar um e-mail com o link deste artigo. Mark só receberá o relato depois que você enviar
Verificação rápida
Terminou o guia? Confira o que aprendeu com 3 perguntas
Pergunta 01
O que `approve(spender, amount)` faz principalmente no ERC-20?
Escolha uma resposta para ver a explicação
Glossário de opções
Processo em que a obrigação de cumprir o contrato, após um aviso de exercício, é atribuída ao vendedor e pode criar entrega ou compra de ações.
Ler o guia completoDiferença entre ofertas de compra e vendaDiferença entre a melhor oferta de compra e a melhor oferta de venda de um contrato. Essa diferença é um custo implícito para entrar e sair da posição e pode aumentar quando a liquidez é baixa.
Ler o guia completo