Revogar aprovações de tokens a partir do SSP

·7 min de leitura·Por SSP Editorial Team
Ilustração da revogação de aprovações de tokens ERC-20 a partir da wallet SSP, com uma allowance zerada e uma SSP Key co-assinando a transação.

Revogar aprovações de tokens a partir do SSP

Sempre que você confirma um swap, um depósito ou uma listagem de NFT em uma chain EVM, você concede ao dApp permissão para mover um token ERC-20 específico em seu nome. Essas permissões — chamadas de aprovações ou allowances — permanecem on-chain depois que a transação é liquidada. Meses depois, o contrato em que você confiou em março ainda pode ter permissão para esvaziar aquele token em junho. A solução é direta: revogar as aprovações de que você não precisa mais. Este guia mostra como fazer isso a partir do SSP, o wallet auto-custodial 2-de-2 em que cada transação (revogações incluídas) é co-assinada pela sua SSP Key.

Se o conceito é novo para você, leia primeiro Aprovações de tokens: as permissões que você continua concedendo. Lá se explica por que as aprovações existem e por que allowances ilimitadas são a superfície de ataque padrão em DeFi. Este artigo é o complemento de limpeza.

Uma recapitulação rápida

Quando você assina uma chamada approve(spender, amount), o contrato do token registra que spender (tipicamente um contrato de router, vault ou marketplace) está autorizado a transferir até amount daquele token a partir do seu endereço. Muitos dApps solicitam 2^256 - 1 — na prática, ilimitado — para te poupar gas em interações futuras. Essa conveniência é também o risco: se o contrato spender for comprometido depois, ou se você parar de usar o dApp mas a allowance permanecer, um atacante pode esvaziar todo o saldo quando quiser.

A revogação reverte essa concessão. Ela não desfaz transferências passadas e não "apaga" nada — simplesmente devolve a allowance a zero.

Como a revogação funciona mecanicamente

Uma revogação é apenas mais uma transação. Você chama approve(spender, 0) no mesmo contrato do token, na mesma chain em que a aprovação original foi concedida. Essa única chamada de função escreve um novo 0 no mapping allowance[owner][spender] do contrato, sobrescrevendo o valor antigo.

Alguns detalhes para internalizar:

  • Uma revogação por chain por par token-spender. Se você aprovou um spender de USDC no Ethereum e o mesmo spender no Polygon, são necessárias duas transações de revogação — uma em cada chain. As allowances não são compartilhadas entre chains.
  • A revogação é uma transação autônoma. Custa gas como qualquer transferência. Planeje: tenha o ativo nativo da chain (ETH no Ethereum, MATIC no Polygon, etc.) para cobrir a taxa.
  • Pode ser mais barato do que você teme. Uma revogação é uma escrita simples, em geral mais barata do que um swap. Em Layer 2 como Base costuma custar centavos.
  • O SSP continua co-assinando. Como o SSP é um wallet 2-de-2, a transação de revogação segue o mesmo fluxo de qualquer outra: sua extensão a propõe, sua SSP Key a revisa e co-assina. Sua proteção se estende à própria limpeza — nenhum dispositivo sozinho pode revogar unilateralmente, e nenhum dispositivo sozinho pode ser enganado para aprovar algo disfarçado de revogação.

Dois caminhos para revogar

Você tem duas formas igualmente válidas de revogar aprovações a partir do SSP. Escolha a que se encaixar na situação.

Caminho 1: usar um explorador de blocos de confiança

Esta é a rota manual e transparente. Útil quando você sabe exatamente qual token e qual spender quer revogar, ou quando não quer se conectar a uma ferramenta de terceiros.

  1. Abra a página do contrato do token no explorador apropriado:
    • Ethereum: etherscan.io
    • Polygon: polygonscan.com
    • Base: basescan.org
    • BNB Smart Chain: bscscan.com
    • Avalanche: snowtrace.io
  2. Vá até a aba Contract, depois em Write Contract (ou Write as Proxy se o token for um contrato proxy — a maioria das principais stablecoins é).
  3. Encontre a função approve. As entradas são spender (o endereço que você quer revogar) e amount (a nova allowance).
  4. Defina amount como 0. Cole o endereço do spender — copie-o do seu histórico de transações, nunca digite de memória.
  5. Conecte sua wallet. A maioria dos exploradores suporta WalletConnect, que é a forma recomendada de conectar o SSP. Aprove a conexão na sua extensão.
  6. Clique em Write. O explorador monta a transação approve(spender, 0) e a entrega ao SSP. A extensão SSP mostra os detalhes da chamada; sua SSP Key co-assina; a revogação é transmitida.

Esse caminho é prolixo, mas não deixa qualquer ambiguidade sobre o que você assinou.

Caminho 2: usar uma ferramenta dedicada de revogação

Para a maioria dos usuários, esta é a opção prática. revoke.cash é a ferramenta open source amplamente usada para esse trabalho. Ela escaneia seu endereço nas chains suportadas, lista cada allowance ativa, sinaliza as arriscadas (valores ilimitados, contratos desconhecidos) e permite revogá-las — individualmente ou em lotes — pela wallet conectada.

O fluxo:

  1. Abra revoke.cash diretamente no navegador. Adicione o domínio verdadeiro aos favoritos e entre só por ele. Cópias de phishing de ferramentas de revogação existem precisamente porque os usuários chegam lá já prontos para assinar transações.
  2. Conecte via WalletConnect, depois escaneie o QR code ou cole o URI no SSP.
  3. Mude o seletor de chain para a chain que você quer auditar. O revoke.cash buscará suas aprovações naquela chain.
  4. Revise a lista. Cada linha mostra o token, o spender, o valor da allowance e, geralmente, um rótulo para o dApp.
  5. Clique em Revoke ao lado de qualquer coisa que você não usa mais. Cada revogação é uma transação approve(spender, 0) separada, co-assinada pelo SSP.

Um fluxo prático de auditoria

Uma ou duas vezes por ano, separe 20 minutos e siga este roteiro:

  1. Conecte o SSP ao revoke.cash via WalletConnect.
  2. Revise suas aprovações ativas em cada chain que você usou. Comece por Ethereum — historicamente o grafo de aprovações mais denso — e prossiga por Polygon, Base, BNB Smart Chain e Avalanche.
  3. Pegue primeiro o mais arriscado. Ordene ou passe os olhos buscando allowances ilimitadas e nomes de dApp desconhecidos. Um protocolo onde você fez um swap em 2024 e nunca mais tocou é um candidato perfeito. Assim como qualquer contrato que você não consiga identificar.
  4. Revogue. Confirme a transação na sua extensão SSP; a SSP Key te pede para co-assinar; a revogação é transmitida.
  5. Co-assine na SSP Key. Este é o momento de checar duas vezes o destino. A SSP Key mostra o contrato que você está chamando e a função — confirme se ambos correspondem ao que você pretendia.
  6. Repita por chain. As allowances são por chain. Não suponha que revogar no Ethereum também limpa o Polygon.

Você não precisa começar do zero. O objetivo é manter allowances nos contratos que você usa de fato e zerar o resto.

Cautelas

  • Higiene de domínio. Use apenas o domínio oficial revoke.cash. Clones de phishing miram exatamente esse fluxo porque o usuário já está no modo de assinar transações. Salve nos favoritos; verifique a barra de URL antes de conectar.
  • Realidade por chain. Revogar uma aprovação de USDC no Ethereum não toca a aprovação de USDC no Polygon, mesmo que o token "pareça o mesmo" no seu portfólio. Percorra cada chain explicitamente.
  • Orçamento de gas. A revogação custa gas. No Ethereum, um acúmulo de revogações pode somar; faça-as quando o gas estiver calmo. Em Layer 2, o custo é desprezível.
  • Verifique sempre o spender. Antes de assinar qualquer transação de "revogação", confirme que o endereço do spender na chamada coincide com o contrato que você queria revogar. Um site malicioso poderia apresentar uma UI de revogação falsa que, na verdade, está emitindo uma nova aprovação para um atacante. Ler o nome da função (approve) e o valor (0) no prompt da SSP Key é sua última linha de defesa.
  • Permits são diferentes. Alguns tokens (USDC, variantes de DAI) suportam permit — assinaturas off-chain que funcionam como aprovações. O revoke.cash trará as concessões baseadas em permit que reconhecer; trate qualquer coisa que você não reconheça exatamente como faria com uma allowance on-chain.

A vantagem do 2-de-2 na limpeza

Este é o ponto frequentemente esquecido: revogar no SSP não é um único clique em um único dispositivo. Sua extensão redige a revogação, mas não consegue transmiti-la sozinha. Sua SSP Key precisa co-assinar, e essa etapa de co-assinatura é onde você inspeciona o que está realmente sendo enviado. Se sua extensão fosse comprometida e tentasse enviar uma "revogação" maliciosa que, na verdade, fosse uma nova aprovação, a SSP Key mostraria a função e o valor reais na tela dela. Dois dispositivos, duas oportunidades de pegar o problema.

Higiene rotineira de aprovações é o hábito DeFi de maior alavancagem que a maioria dos usuários ignora. Coloque um lembrete no calendário, faça a auditoria, durma melhor. E continue a série — comece por Ethereum no SSP se quiser fixar os detalhes específicos da chain, ou revisite Aprovações de tokens: as permissões que você continua concedendo para se lembrar de por que isso importa.

Compartilhar este artigo

Artigos relacionados