Uma troca pode ser concluída enquanto a autorização subjacente permanece ativa. As aprovações de tokens permitem que um endereço especificado gaste tokens da sua carteira, dentro da autoridade que conceder. Fechar a aplicação não remove necessariamente essa autoridade.
Este guia centra-se nos tokens ERC-20 na Ethereum e noutras redes EVM. Outros padrões de tokens e blockchains utilizam sistemas de permissões diferentes. A tarefa prática consiste em compreender quem é o gastador, o montante e o âmbito antes de aprovar e, em seguida, remover as permissões de que já não necessita.
Um limite é um limite de gasto associado a um gastador
No fluxo de trabalho habitual dos tokens ERC-20, approve define um limite, allowance indica o montante restante e transferFrom permite que o gastador autorizado mova tokens de acordo com as regras do contrato do token. A transação de aprovação estabelece geralmente a permissão; a ação posterior da aplicação utiliza-a.
Identifique quatro elementos: a rede, o contrato do token, o endereço do proprietário e o endereço do gastador. O nome de um site não é a própria permissão. O gastador pode ser um contrato de aplicação ou outro endereço, e o respetivo código determina como essa autoridade pode ser utilizada.
Considere uma carteira hipotética que detém 200 tokens. Aprova um gastador para 100 tokens. O saldo permanece em 200 até que os tokens sejam efetivamente movimentados. Se o gastador transferir depois 40 tokens ao abrigo de um limite finito padrão, o seu saldo passa a 160 e o limite restante passa a 60. São dois números distintos.
O gastador pode utilizar a permissão restante sem outro pedido de aprovação, sujeito às regras aplicáveis do contrato. Uma nova aprovação normalmente substitui o limite existente pelo montante especificado; não adiciona automaticamente esse montante ao limite anterior.
As aprovações ilimitadas podem abranger depósitos futuros
Uma aplicação pode solicitar um limite muito elevado para que não necessite de uma nova aprovação para cada transação. Isto pode reduzir passos repetidos e custos de aprovação, deixando simultaneamente um montante maior exposto à autoridade do gastador.
Algumas implementações comuns tratam o limite inteiro máximo como ilimitado e não o reduzem quando os tokens são gastos. Não assuma que cada utilização consome progressivamente uma permissão ilimitada.
Um limite também pode permanecer quando o seu saldo de tokens chega a zero. Se receber posteriormente mais tokens do mesmo tipo nesse endereço e na mesma rede, a permissão existente pode voltar a ser útil. Uma visualização de carteira vazia não prova que as permissões antigas tenham desaparecido.
A escolha de um limite mais reduzido diminui o montante disponível através dessa permissão. Não prova que a aplicação é de confiança nem que a transação proposta é sensata.
Revogue a permissão que efetivamente concedeu
Analise os limites quando deixar de utilizar uma aplicação, não conseguir identificar um gastador, descobrir um limite desnecessariamente elevado ou tomar conhecimento de um incidente de segurança relevante. O objetivo é remover uma via desnecessária para gastar os seus fundos.
- Verifique a conta e a rede. Uma permissão numa cadeia é independente de uma permissão noutra.
- Identifique o token e o gastador. Utilize um ecrã de permissões de uma carteira de confiança ou o explorador de blocos adequado. Um nome familiar, por si só, não verifica um endereço.
- Leia a alteração proposta. No caso de um limite ERC-20 padrão, a revogação normalmente envia uma transação na blockchain que define como zero o limite desse gastador. Confirme o token, o gastador e o novo montante.
- Verifique a confirmação. A revogação na blockchain tem custos de gas da rede, mesmo que um serviço os patrocine. Confirme que a transação foi concluída com êxito e que o limite relevante reflete agora a alteração pretendida.
Uma revogação pendente ainda não alterou o estado da blockchain. Um gastador pode agir antes da confirmação. Uma revogação concluída limita a utilização futura desse limite; não recupera tokens já transferidos.
Desligar um site altera a ligação da carteira a esse site. As aprovações existentes na blockchain exigem uma alteração separada. Se as chaves privadas ou as palavras de recuperação tiverem sido divulgadas, as permissões são apenas uma parte do incidente: a revogação não remove a capacidade de outra pessoa assinar com essas chaves.
Se utiliza uma carteira pessoal juntamente com a KTX, mantenha as permissões da carteira separadas da segurança da conta da plataforma. O guia da KTX sobre carteiras com custódia e sem custódia explica quem controla a autorização e a recuperação das transações. Consulte o guia da KTX sobre cópias de segurança da frase-semente para proteger o material de recuperação e nunca forneça palavras de recuperação a um site que se ofereça para revogar permissões.
As permissões assinadas exigem uma segunda verificação
Uma carteira pode pedir uma assinatura em vez de uma transação de aprovação imediata. Uma assinatura pode ainda criar uma autoridade significativa. Os permits ERC-2612, por exemplo, permitem que outra parte envie a sua autorização assinada para estabelecer um limite.
O prazo do permit limita o momento até ao qual essa assinatura pode ser enviada. Não atribui automaticamente uma data de expiração ao limite ERC-20 normal resultante. Definir um limite como zero também não invalida necessariamente uma assinatura de permit antiga e não utilizada; o respetivo nonce e as regras de validade requerem atenção separada.
O Permit2 introduz outra camada: a aprovação do token ao contrato Permit2, seguida das permissões para aplicações específicas. As respetivas permissões baseadas em limites e as transferências através de assinaturas de utilização única têm regras diferentes quanto a montantes, expiração e nonces.
Analise cada camada aplicável e cada autorização assinada pendente. Um verificador que leia os limites atuais na blockchain pode não revelar todas as assinaturas que foram assinadas mas ainda não foram enviadas. Um ecrã de limites tranquilizador não consegue contabilizar uma permissão que ainda não consegue detetar.
Perguntas frequentes
Preciso de uma aprovação ERC-20 para enviar ETH nativo?
Uma transferência normal de ETH nativo não utiliza um limite ERC-20. O ETH embrulhado é um token e pode utilizar esse mecanismo. As permissões ao nível da conta são uma questão separada.
Uma aprovação ilimitada abrange todos os ativos da minha carteira?
Uma aprovação ERC-20 convencional diz respeito a um token e a um gastador específicos. Não abrange automaticamente todos os tokens ou NFTs. No entanto, um único pedido de assinatura pode conter várias permissões, por isso analise todo o seu âmbito.
Porque é que uma carteira pode pedir-me para definir um limite como zero antes de o alterar?
Algumas implementações de tokens exigem-no, e substituir um limite diferente de zero pode criar riscos relacionados com a ordem das transações. Siga o fluxo de trabalho suportado; uma reposição não pode desfazer gastos que já tenham ocorrido.
Uma carteira de hardware impede uma aprovação prejudicial?
Ajuda a proteger as chaves de assinatura. Ainda assim, pode autorizar uma permissão perigosa com essas chaves. Analise os detalhes da transação e o gastador, em vez de confiar apenas no dispositivo.
As aprovações de NFT funcionam como os limites de tokens?
O ERC-721 suporta a aprovação para um NFT individual e a aprovação de um operador para todo o contrato desse NFT. Estas são diferentes de um limite de quantidade ERC-20. Verifique o padrão e o âmbito antes de revogar.
Este artigo fornece informação geral, não aconselhamento personalizado de segurança ou investimento. As implementações de tokens e as interfaces das carteiras variam. Nunca divulgue chaves privadas ou frases de recuperação.