Guia do hacker: ações ERC-7715 do MetaMask Delegation Toolkit

Guia hacker para construir com permissões ERC-7715

2 Min
Guia do hacker: ações ERC-7715 do MetaMask Delegation Toolkit

Este guia fornece uma visão geral abrangente das ações experimentais ERC-7715 no MetaMask Delegation Toolkit, uma ferramenta inovadora que permite que dapps solicitem e gerenciem permissões de usuários para ações específicas, como transferências de tokens.

Isso viabiliza novos casos de uso interessantes, como assinaturas e pagamentos automatizados, ao mesmo tempo em que aprimora a experiência do usuário. Vamos explorar os conceitos fundamentais, orientar você na configuração do seu ambiente de desenvolvimento e percorrer o processo de criação de uma dapp que utiliza o Gator SDK. Este guia usa o Viem para interações com a blockchain.

Fundamentos: repensando as transações web3

O ERC-7715 introduz um novo paradigma para a forma como as dapps interagem com as carteiras dos usuários. Em vez de exigir que os usuários aprovem cada transação manualmente, as dapps podem solicitar permissão para realizar determinadas ações em nome do usuário dentro de limites predefinidos.

Conceitos-chave

  • Conta de sessão: A conta da dapp (seja uma EOA ou um contrato inteligente) que recebe permissão para agir em nome do usuário.

  • Carteira do usuário: A carteira MetaMask do usuário, que concede permissões à conta de sessão.

  • Permissões: Ações específicas que uma dapp está autorizada a realizar. O Gator SDK atualmente suporta native-token-stream.

  • Conta inteligente Gator: Uma conta inteligente criada dentro do MetaMask Snap do usuário, especificamente para gerenciar permissões concedidas via Gator SDK.

  • Delegação: O mecanismo central que torna possíveis as transações baseadas em permissões. Quando um usuário concede uma permissão, uma delegação é criada a partir da sua Conta Inteligente Gator para a conta de sessão da dapp.

Isso estabelece uma autorização off-chain, permitindo que a dapp execute ações específicas sob condições definidas sem exigir que o usuário assine cada transação. É como configurar uma mesada recorrente com regras.

  • ERC-7715 (solicitações de permissão de carteira): Um padrão para como as dapps solicitam permissões das carteiras dos usuários. https://eip.tools/eip/7715

  • ERC-7710 (delegação de contrato inteligente): Um padrão para como contratos inteligentes podem delegar capacidades a outras contas.https://eip.tools/eip/7710

  • MetaMask Snaps: Um sistema que permite aos desenvolvedores estender a funcionalidade do MetaMask. Os Snaps são essencialmente plugins que podem ampliar as funcionalidades do MetaMask, permitindo que ele suporte novas blockchains, novos tipos de transação e, no caso do Gator SDK, gerenciamento avançado de permissões. O Gator SDK depende de dois Snaps:- Permission kernel snap: Funciona como um roteador para o Snap provedor de permissões específico, no nosso caso, o Gator Permission Snap.

  • Gator permissions snap: Cria e gerencia a Conta Inteligente Gator do usuário. Este Snap é responsável por apresentar ao usuário a interface do Permission Picker e permitir que ele edite permissões, conceda ou rejeite-as.

- ERC-4337: Padrão de Account Abstraction, que permite contas inteligentes e gerenciamento de transações mais flexíveis, frequentemente usado em conjunto com o Gator SDK. https://eip.tools/eip/4337

- Bundler: Um serviço que agrupa múltiplas operações de usuário (transações) em uma única transação, otimizando o uso de gas.

  • Paymaster (opcional): Um contrato inteligente que pode pagar as taxas de gas das transações, possibilitando transações sem gas para o usuário.

Como funciona

O Gator SDK, em conjunto com o MetaMask Snaps, ERC-7715 e ERC-7710, viabiliza um fluxo de trabalho baseado em permissões:

  1. Solicitação de permissão: A dapp, atuando como conta de sessão, inicia uma solicitação de permissão. Isso é feito usando o método wallet_grantPermissions, padronizado no ERC-7715. A dapp especifica o tipo de permissão (ex.: native-token-stream), o destino (seu endereço) e quaisquer parâmetros específicos (ex.: valor).

  2. Autorização do usuário: O MetaMask Flask apresenta a solicitação de permissão ao usuário. Se os Snaps necessários ainda não estiverem instalados, o MetaMask Flask solicitará ao usuário que os instale neste momento. O usuário então recebe uma explicação clara e compreensível sobre o que a dapp está solicitando.

O usuário pode então aprovar ou rejeitar a solicitação. O Permission Kernel Snap desempenha um papel fundamental nessa interação, garantindo que o usuário compreenda as permissões sendo solicitadas.

  1. Criação da conta inteligente Gator: Se o usuário aprovar a permissão, o Gator Permissions Snap entra em ação. Esta Conta Inteligente é de onde a autoridade delegada se originará.

  2. Financiamento da conta Gator: O usuário é responsável por financiar esta Conta Inteligente Gator com fundos suficientes para cobrir as ações delegadas. Por exemplo, se a permissão for para native-token-stream, o usuário precisa depositar o token nativo relevante em sua Conta Inteligente Gator.

  3. Criação da delegação: Esta é uma etapa crucial. Uma delegação é criada, estabelecendo o vínculo entre a Conta Inteligente Gator do usuário e a conta de sessão da dapp. Essa delegação, regida pelo ERC-7710, autoriza a dapp a agir em nome do usuário, mas apenas dentro dos limites da permissão concedida. A delegação especifica:1. As ações que a dapp pode realizar (ex.: transferir tokens nativos).

  4. Quaisquer condições ou limitações (caveats), como:1. Valor máximo por transferência

  5. Frequência das transferências

  6. Data de expiração

  7. Resgate de permissão (ação delegada): Quando a dapp precisa agir dentro do escopo da permissão concedida, ela "resgata" a delegação. Isso envolve a dapp construindo uma transação (ou User Operation, se usar ERC-4337) que segue as regras estabelecidas na delegação.

A dapp então envia esta transação (ou User Operation, se usar ERC-4337), fornecendo prova da delegação válida.

Configure seu ambiente de desenvolvimento

Observe que os Snaps necessários para as ações ERC-7715 atualmente funcionam apenas na Sepolia. Se você estiver desenvolvendo na trilha ERC-7715, certifique-se de usar a testnet Sepolia. Para outros recursos do Delegation Toolkit, você pode usar qualquer uma das redes de teste listadas aqui

Pré-requisitos

  • Node.js: Certifique-se de que o Node.js está instalado no seu sistema.

  • MetaMask Flask: Instale o MetaMask Flask, uma versão do MetaMask voltada para desenvolvedores. Faça o download no site oficial do MetaMask. Importante: Use um perfil de navegador separado para o Flask. Se você usar o mesmo navegador com sua carteira MetaMask regular, desative-a.

  • MetaMask Snaps: Os Snaps necessários para o Gator SDK (Permission Kernel Snap e Gator Permissions Snap) podem ser instalados manualmente, ou o MetaMask Flask solicitará ao usuário que os instale quando uma dapp solicitar permissões pela primeira vez.

  • Bundler ERC-4337: Isso é necessário se a conta de sessão for uma carteira ERC-4337. Para enviar operações de usuário de uma carteira ERC-4337, você precisará de acesso a um bundler. Pimlico é uma boa opção. Consulte a documentação deles.

  • Paymaster (opcional): Se você quiser patrocinar taxas de gas, precisará de um paymaster. O Pimlico também oferece serviços de paymaster.

Etapas de instalação

  1. Instale o Node.js: Baixe e instale o Node.js no site oficial.

  2. Instale o MetaMask Flask:- Abra um novo perfil de navegador.

  • Acesse a página de download do MetaMask Flask no site do MetaMask.

  • Baixe e instale a extensão MetaMask Flask.

  1. Configure um bundler:- Se usar o Pimlico, crie uma conta na plataforma deles.

  • Obtenha sua chave de API do bundler no Pimlico.

  • Familiarize-se com o processo de envio de operações de usuário para o bundler do Pimlico.

  1. Configure um paymaster (opcional):- Se usar o Pimlico, você também pode utilizar o serviço de paymaster deles. Configure sua dapp para usar o paymaster.

Criando uma dapp com as ações Gator ERC-7715

A maneira mais fácil de começar com as ações Gator ERC7715 é com o CLI create-gator-app, que possui um template chamado Experimental: Basic Gator app to try out ERC7715 Permissions. Este template já vem com todas as bibliotecas básicas necessárias e trechos de código instalados.

Você pode executar o CLI com

npx create-gator-app@latest

Consulte estas seções da documentação para obter trechos de código importantes

Recursos

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

Avalie a tradução