Pular para o conteúdo

Revoke.Delegate: Automatizando a Revogação de Aprovação de Tokens com o Delegation Toolkit da MetaMask

Saiba como o Revoke.delegate automatiza a revogação de aprovações de tokens para proteger usuários durante exploits.

3 min de leitura
Revoke.Delegate: Automatizando a Revogação de Aprovação de Tokens com o Delegation Toolkit da MetaMask

Os smart contracts de tokens incluem uma função approve() que permite que outro endereço gaste tokens em nome do titular. Esse é um elemento central do ecossistema de smart contracts hoje em dia; sem ele, muitas aplicações DeFi não seriam possíveis. Por exemplo, a negociação de tokens em uma exchange descentralizada como a Uniswap exige aprovação de token antes que um swap possa acontecer.

No entanto, as aprovações de tokens trazem riscos significativos. Conceder permissão a um smart contract para gastar tokens significa que ele pode fazê-lo a qualquer momento. Se um contrato for hackeado ou contiver código malicioso, invasores podem explorar essas aprovações para roubar tokens.

Soluções existentes como o Revoke.cash rastreiam as aprovações da carteira e permitem a revogação sob demanda. No entanto, elas dependem de um processo manual que precisa ser realizado antes ou durante um exploit, o que nem sempre é prático. O Revoke.delegate – um projeto de hackathon desenvolvido no EthGlobal '24 – oferece uma solução mais eficiente ao revogar automaticamente as aprovações durante um exploit, eliminando a necessidade de monitoramento constante ou ação manual. Veja como a equipe conseguiu isso.

Desafio: delegar permissões de carteira preservando privacidade e propriedade

Os usuários precisam delegar permissões específicas de carteira ao Revoke.delegate para habilitar a revogação automática de aprovações de tokens durante um exploit. Nesse contexto, delegação significa que uma conta de smart contract (o delegador) concede permissões específicas a outro smart contract ou a uma conta de propriedade externa (o delegatário) para executar ações definidas sob regras e condições claramente estabelecidas.

Esse processo permite que o Revoke.delegate identifique com segurança os endereços de tokens afetados, verifique condições predefinidas e revogue aprovações chamando as funções approve() ou setApprovalForAll() para zerar os allowances.

O principal desafio envolve manter os princípios de privacidade e auto-custódia, garantindo que os usuários evitem compartilhar chaves privadas ou abrir mão do controle de suas carteiras ao conceder permissões ambíguas. A equipe também priorizou a compatibilidade com o ecossistema de carteiras existente para facilitar uma adoção fluida.

Solução: delegar e gerenciar permissões de carteira com segurança usando o Delegation Toolkit (DTK)

A integração com o Delegation Toolkit (DTK) permitiu que o Revoke.delegate possibilitasse aos usuários delegar permissões de carteira mantendo total auto-custódia. Sempre que um exploit é reportado, o Revoke.delegate recupera com segurança as delegações do usuário do Delegation Storage gerenciado pelo DTK e as utiliza para revogar aprovações de tokens das carteiras afetadas. Veja uma visão geral do processo:

  1. O usuário conecta sua carteira para visualizar todas as aprovações de tokens existentes.

  2. Ele opta por delegar permissões de carteira. Nos bastidores, a função createRootDelegation() é chamada, especificando o smart contract do Revoke.delegate como delegatário.

  3. As permissões necessárias são definidas usando a função addCaveats(), especificando o método approve(), como .addCaveat("allowedMethods", ["approve(address,uint256)"]).build().

  4. O usuário assina a nova delegação, que é então armazenada com segurança no Delegation Storage gerenciado pelo DKT.

  5. Em caso de exploit, o Revoke.delegate recupera todas as delegações armazenadas, verifica as condições e revoga as aprovações de tokens das carteiras afetadas chamando as funções approve() ou setApprovalForAll() para zerar os allowances — tudo sem exigir nenhuma ação do usuário.

Explore a documentação para saber mais sobre como o Delegation Toolkit simplifica esses processos.

"O Delegation Toolkit nos ajudou a garantir que os usuários pudessem delegar as permissões de suas carteiras sem abrir mão da propriedade." – Ayush & Aashish, Criadores do Revoke.delegate e Vencedores do Hackathon EthGlobal '24

Ao utilizar o DTK, a equipe do Revoke.delegate automatizou com sucesso as revogações de aprovações de tokens, mesmo nos casos em que os usuários estavam offline ou não tinham conhecimento de um exploit em andamento. Além disso, como o toolkit oferece suporte nativo ao ERC-7579, a equipe desenvolveu uma solução compatível com as principais carteiras do ecossistema, incluindo Safe, Kernel e Biconomy Nexus.

Traduzido por IA. Pode conter erros. Por favor, verifique sempre as informações.

Avalie a tradução

Este artigo foi escrito por:

  • Kingsley Okonkwo

    Kingsley, desenvolvedor certificado de Blockchain Ethereum, atua como redator técnico na Consensys, com foco especial em ferramentas para desenvolvedores. Antes de ingressar na Consensys, Kingsley trabalhou como desenvolvedor backend freelance em diversas plataformas, incluindo Gigster e Braintrust. Com 5 anos de experiência em desenvolvimento de software, ele domina ferramentas como JavaScript (Node.js e React), GoLang, SQL e Docker. Kingsley se destaca na criação de tutoriais passo a passo e guias práticos, utilizando o que há de mais moderno em tecnologia web3 para ajudar outros desenvolvedores a criar dapps melhores. Atualmente radicado em Dubai, Kingsley aproveita seu tempo livre jogando basquete e futebol.

    Ler todos os artigos