Resposta curta

A maioria dos approvals ERC-20 e ERC-721 não expiram automaticamente. Uma vez concedidos, persistem até você explicitamente revogá-los. As exceções: assinaturas Permit (EIP-2612) incluem um parâmetro deadline — essa assinatura expira no tempo especificado. Assinaturas Permit2 também têm deadline. Mas chamadas clássicas setApprovalForAll e ERC-20 approve não têm expiração; um approval de 2021 ainda é válido hoje.

Os três tipos de approval

ERC-20 approve. "Approve unlimited" padrão usado pela maioria das integrações DEX pré-2023. Sem expiração. Approval persiste por anos. Revogável apenas via transação de revoke explícita.

ERC-721 setApprovalForAll. Usado por marketplaces NFT (OpenSea, LooksRare). Boolean — true concede, false revoga. Sem expiração. Approval persiste indefinidamente até toggle manual.

EIP-2612 Permit / Permit2. Assinatura off-chain com deadline embutido. Assinada em 2024 com deadline de 1 hora → expira após 1 hora. Assinada com deadline de 1 ano → expira após 1 ano. Assinada com deadline de 2099 → efetivamente nunca.

Por que isto importa

Um approval concedido em 2021 para um DEX que você não usa mais ainda está ativo. Se o contrato desse DEX é depois comprometido (Multichain 2023, Curve 2023, etc.), o atacante pode usar seu approval antigo para drenar esse token da sua wallet — três anos depois de você ter esquecido que o concedeu.

Esta é a razão central para o hábito quartral revoke.cash. Quanto mais tempo approvals ficam, maior sua attack surface exposta.

O que auto-expira com segurança

Implementações modernas de Permit e Permit2 geralmente definem deadlines curtas (1 hora a 30 dias). O frontend do Uniswap V3, por exemplo, solicita uma assinatura Permit2 com deadline de 30 dias por padrão. Após 30 dias, essa assinatura específica não pode ser usada.

Mas isso é per-assinatura, não per-token. Uma nova assinatura Permit2 para o mesmo token funciona bem; a antiga expirada não desabilita sua habilidade de conceder novas.

A armadilha do equívoco

Muitos usuários acreditam que approvals "expiram quando eu desconecto a wallet" ou "expiram quando eu fecho a dApp". Nenhum é verdadeiro. Estado de conexão vive na UI da sua wallet; approvals vivem on-chain. Desconectar, reconectar, fechar, reabrir — o approval on-chain não é afetado.

A única suposição segura

Trate todo approval como permanente até você revogar. Rode revoke.cash quartralmente. Revogue approvals para contratos que você não usa mais. Especialmente revogue approvals "unlimited" — são a categoria de mais alto risco.

Para endereços de armazenamento longo prazo que não deveriam conceder approvals: mantenha-os em uma hardware wallet, nunca conecte a qualquer dApp. A approval surface é zero se você nunca assina um approval.

Leitura adicional: revoke.cash, EIP-2612 Permit.