O Caminho para o ERC-4337 e a Abstração de Contas
Um dos maiores obstáculos que impedem os usuários comuns de adotar as tecnologias de blockchain é a experiência do usuário.
Atualmente, os usuários da Web3 têm uma curva de aprendizado íngreme a ser superada antes de começarem a usar dApps e outras tecnologias de blockchain cotidianamente. Frases semente, jargões desconhecidos e logins complicados são apenas algumas das coisas com as quais as pessoas precisam lidar ao fazer a transição da Web2 para a Web3.
Quanto maior a complexidade envolvida, maior a chance de cometer erros - o que torna fácil entender por que as pessoas hesitam em entrar no mundo da descentralização e da autocustódia de ativos.
Para eliminar o atrito de entrar na Web3, os desenvolvedores e profissionais de marketing têm trabalhado para melhorar a experiência do usuário e levar o ecossistema de blockchain a um ponto em que qualquer pessoa possa entrar com facilidade e confiança.
Uma maneira de fazer isso é com a abstração de contas, ou contas inteligentes - uma maneira de usar contratos inteligentes como EOAs (contas de propriedade externa) para transações e autenticação de blockchain. Diferentemente da EOA, as contas inteligentes permitem melhorias na experiência do usuário, como recuperação de contas, lotes de transações, pagamento de gas em_ stablecoins_, multiassinaturas integradas etc. A comunidade Ethereum inclusive introduziu o ERC-4337 - um padrão unificado que torna a abstração de contas mais fácil e mais acessível.
No entanto, embora o setor concorde que uma experiência de usuário melhor é o caminho a ser seguido, habilitar e adotar a abstração de contas e o ERC-4337 diretamente não é fácil ou mesmo possível para muitos projetos Web3. É por isso que alguns produtos decidem seguir caminhos alternativos e hoje falaremos sobre isso.
Uma das carteiras de EOA mais populares do mundo até o momento é a MetaMask. A equipe da MetaMask admite que as contas inteligentes e a melhor experiência do usuário são a maneira de trazer a próxima grande onda de usuários para a Web3 e descobriu uma maneira de "oferecer os benefícios da abstração de contas sem comprometer a carteira MetaMask que os usuários conhecem e adoram", como afirmam em um blogpost.
É por isso que eles introduziram o MetaMask Flask, uma plataforma de inovação não permissionada que permite que os desenvolvedores criem recursos personalizados em cima da infraestrutura existente da MetaMask.
"Usando os Snaps, os desenvolvedores podem estender a funcionalidade de sua carteira MetaMask para suportar diferentes casos de uso de abstração de conta. De chaves de sessão a integrações completas de contas inteligentes criadas com a MetaMask - todas criadas com o Snaps - vimos os desenvolvedores aceitarem o desafio de usar a MetaMask para democratizar o acesso à abstração de contas para os usuários", escreveu a equipe da MetaMask.
O que são os Snaps da MetaMask
MetaMask Flask é uma plataforma de desenvolvimento para o software de carteira MetaMask. Ela permite que os desenvolvedores da Web3 experimentem novos recursos que acabarão sendo integrados à MetaMask.
Um desses novos recursos é o Snaps, um sistema de plug-ins que permite aos usuários instalar plug-ins que ampliam a MetaMask com funcionalidades personalizadas.
Um Snap permite que os sites tradicionais acessem as funcionalidades do Web3, mostrem informações adicionais aos usuários quando eles enviam transações e executem ações para os usuários em intervalos programados. Por exemplo, sempre que um usuário tenta transferir tokens ERC20 usando a MetaMask, um Snap de detecção de fraude pode verificar se o destinatário da transferência está em uma lista de golpistas conhecidos.
Como outro exemplo, um Snap de carteira poderia fornecer integração com blockchains que não sejam da Ethereum, permitindo que os usuários realizem transações nessas outras blockchains a partir de um site que ofereça suporte ao Snap de carteira.
Como os Snaps da MetaMask funcionam?
Os Snaps são implementados como aplicativos JavaScript/TypeScript em que os desenvolvedores implementam uma ou mais das três funcionalidades (informações de transação, solicitações RPC, tarefas Cron) como métodos JavaScript/TypeScript.
Como um Snap pode consistir em um código arbitrário que pode acessar a carteira MetaMask de um usuário, todos os Snaps são executados em um ambiente especial projetado tendo em mente a segurança. Assim, eles diferem em vários aspectos do código JavaScript ou TypeScript comum que seria encontrado, por exemplo, em uma página da Web ou em um aplicativo Node.js. Em particular, o código será executado em uma "sandbox" que limita as APIs JavaScript que podem ser acessadas.
Além disso, para evitar que os Snaps sobrecarreguem os recursos do sistema, todos os Snaps devem ter "vida curta", de modo que não demorem muito para gerar informações sobre transações ou processar solicitações de RPC. Os Snaps que atingirem o tempo limite serão encerrados pela extensão MetaMask.
Para obter mais detalhes sobre como os Snaps funcionam, recomendamos que o leitor interessado consulte à documentação oficial.
O que se pode fazer com os Snaps da MetaMask
Há muitos outros casos de uso de Snaps da MetaMask, mas o principal caso de uso enfatizado pela própria MetaMask é a capacidade de usar os Snaps para criar interfaces de usuário para contratos inteligentes de carteira on-chain no estilo de abstração de conta.
A abstração de conta dá aos desenvolvedores muita liberdade para criar uma carteira com quaisquer esquemas de autenticação personalizados, controles de acesso ou outros recursos que possam ser usados para controlar as transações da carteira.
Mas, na verdade, o acesso à funcionalidade da carteira personalizada exigiria que o usuário construísse e enviasse transações não triviais para o contrato inteligente da carteira. Um desenvolvedor Web3 poderia criar um Snap que servisse como interface de usuário para essa carteira, de modo que os usuários não precisassem se preocupar com os detalhes técnicos, da mesma forma que um banco poderia criar um aplicativo de telefone que se comunicasse com os servidores do banco.
Como usar os Snaps da MetaMask
Como os Snaps são atualmente um recurso beta da MetaMask, os usuários precisarão instalar a extensão de navegador MetaMask Flask como a primeira etapa para usar um Snap.
Quando um usuário interage com uma página da Web que oferece suporte a um Snap, ele verá automaticamente uma caixa de diálogo que solicita a instalação do Snap. Essa caixa de diálogo mostrará informações como uma descrição do Snap e os tipos de permissões que ele pode acessar. Por exemplo, um Snap que envia transações para uma blockchain pode solicitar permissão para acesso à Internet e permissão para acessar as chaves privadas da conta.
O usuário deve então "conectar" o Snap ao site, o que concederá permissão ao site para acessar a funcionalidade do Snap. O que o usuário faz com o Snap dependerá de qual dos três principais tipos de funcionalidade (embora observe que eles não são mutuamente exclusivos) ele suporta:
- Informações sobre transações: antes de um usuário assinar uma transação, um Snap que fornece informações sobre a transação exibirá informações adicionais sobre a transação em um pop-up. Isso ajudará o usuário a tomar uma decisão fundamentada na assinatura ou não da transação. O Snap de exemplo de detecção de fraude que discutimos anteriormente é um exemplo de um Snap de informações sobre transações.
- Solicitações de RPC: um Snap que processa solicitações JSON-RPC permite que dApps (sites) e Snaps se comuniquem com o Snap. Na verdade, o usuário não acessará esse tipo de funcionalidade diretamente; em vez disso, o Snap normalmente servirá como parte do mecanismo por trás do site/dApp com o qual o usuário está interagindo. O exemplo de carteira do Snap que discutimos anteriormente é um exemplo de um Snap que processa solicitações JSON-RPC.
- Utilitários Cron: Um Snap que oferece suporte a tarefas Cron permite que o usuário agende ações que serão executadas automaticamente para ele em intervalos regulares.
Nosso trabalho com Snaps
Embora a plataforma MetaMask Snaps tenha sido projetada com a segurança em mente, os desenvolvedores de Snaps ainda precisam ter cuidado para evitar a introdução de vulnerabilidades de segurança em seus próprios Snaps.
De particular importância são os vetores de ataque de engenharia social. Como os Snaps serão usados diretamente por usuários comuns, eles devem ser projetados de forma a ajudar os usuários a evitarem ser enganados ou confundidos.
Por exemplo, quando realizamos uma auditoria de segurança para uma carteira Snap, observamos que a carteira não mostra os detalhes completos da transação quando um usuário deseja enviar fundos. Antes de os desenvolvedores corrigirem a carteira, um hacker poderia enganar um usuário para que ele distribuísse todos os seus tokens ERC20 e o usuário não teria como saber o que estava acontecendo!
Os desenvolvedores do Snap também devem estar atentos às vulnerabilidades tradicionais de aplicativos da Web. Como é possível que os sites acessem uma funcionalidade do Snap, os hackers podem tentar se apoderar dos fundos do usuário, roubar informações confidenciais ou realizar ações não autorizadas explorando vulnerabilidades de script entre sites ou de injeção de consultas. Na auditoria da mesma carteira Snap que mencionamos acima, os desenvolvedores confirmaram e corrigiram um bug que permitiria que um site de phishing roubasse silenciosamente as credenciais da conta de um usuário!
Protegendo os snaps da MetaMask
Os Snaps estão tornando a MetaMask, a carteira de criptomoedas mais popular do mundo, ainda mais fácil de usar no dia a dia. À medida que mais desenvolvedores trabalharem com Snaps, será cada vez mais importante que os Snaps sejam auditados para evitar problemas de segurança e fraudes.
Se estiver trabalhando em um Snap e estiver interessado em uma avaliação de segurança, entre em contato conosco hoje mesmo:
🤙 Solicite uma auditoria de Snap da MetaMask
Quer saber mais sobre isso? Entre em contato conosco:
Twitter | Lens Protocol | LinkedIn | Github | Request Audit
Esse artigo foi escrito por Veridise e traduzido por Fátima Lima. o original pode ser lido aqui.
Oldest comments (0)