Abstração de conta
Os usuários interagem com o Ethereum por meio de . Essa é a única maneira de iniciar uma transação ou executar um contrato inteligente. Isso limita a maneira como os usuários podem interagir com o Ethereum. Por exemplo, dificulta a realização de lotes de transações e exige que os usuários sempre mantenham um saldo de ETH para cobertura do gás.
A abstração de contas é uma maneira de resolver esses problemas, permitindo que os usuários programem com flexibilidade mais segurança e melhores experiências de usuário nas respectivas contas. Isso pode ocorrer por meio da melhoria de EOAs(opens in a new tab) para que possam ser controladas por contratos inteligentes ou pela melhoria de contratos inteligentes(opens in a new tab) para que possam iniciar transações. Ambas as opções exigem alterações no protocolo Ethereum. Há também um terceiro caminho que envolve a adição de um segundo sistema de transações separado(opens in a new tab) para ser executado em paralelo ao protocolo existente. Independentemente da rota, o resultado é o acesso ao Ethereum por meio de carteiras de contratos inteligentes, seja com suporte nativo como parte do protocolo existente ou por meio de uma rede de transações complementar.
As carteiras de contratos inteligentes oferecem muitos benefícios ao usuário, incluindo:
- definição das próprias regras de segurança flexíveis
- recuperação da conta, se o usuário perder as chaves
- compartilhamento da segurança da conta entre dispositivos ou indivíduos confiáveis
- pagamento do gás de outra pessoa ou solicitar o pagamento do respectivo gás a um terceiro
- transações em lote juntas (por exemplo, aprovar e executar uma troca de uma só vez)
- mais oportunidades para que os desenvolvedores de dApps e carteiras inovem as experiências do usuário
Atualmente, esses benefícios não têm compatibilidade nativa porque apenas contas de propriedade externa () podem iniciar transações. As EOAs são simplesmente pares de chaves públicas-privadas. Elas funcionam assim:
- se você tiver a chave privada, poderá fazer qualquer coisa de acordo com as regras da Máquina Virtual do Ethereum (EVM)
- se você não tiver a chave privada, não poderá fazer nada.
Se você perder as suas chaves, elas não poderão ser recuperadas, e as chaves roubadas dão aos ladrões acesso imediato a todos os fundos de uma conta.
As carteiras de contratos inteligentes são a solução para esses problemas, mas atualmente são difíceis de programar porque, no final, qualquer lógica que elas implementem precisa ser traduzida em um conjunto de transações EOA antes que possam ser processadas pelo Ethereum. A abstração de conta permite que contratos inteligentes iniciem as próprias transações. Dessa forma, qualquer lógica que o usuário queira implementar poderá ser codificada na própria carteira de contrato inteligente e executada no Ethereum.
Na realidade, é a abstração de contas que melhora o suporte a carteiras de contratos inteligentes, tornando-as mais fáceis de criar e mais seguras de usar. No final, com a abstração de conta, os usuários podem aproveitar todos os benefícios do Ethereum sem precisar conhecer ou se preocupar com a tecnologia subjacente.
Além das frases sementes
As contas de hoje são protegidas por meio de chaves privadas que são calculadas a partir de frases sementes. Qualquer pessoa que tenha acesso a uma frase semente pode descobrir facilmente a chave privada que protege uma conta e obter acesso a todos os ativos que ela protege. Se uma chave privada e uma frase semente forem perdidas, elas nunca poderão ser recuperadas e os ativos que elas controlam ficarão congelados para sempre. Proteger essas frases semente é difícil, mesmo para usuários experientes, e o phishing de frases semente é uma das maneiras mais comuns de enganar os usuários.
A abstração de conta resolverá esse problema ao utilizar um contrato inteligente para manter ativos e autorizar transações. Esses contratos inteligentes podem ser decorados com lógica personalizada para torná-los tão seguros e adaptados ao usuário quanto possível. Em última análise, você ainda usa chaves privadas para controlar o acesso à sua conta, mas com redes de segurança que as tornam mais fáceis e seguras de gerenciar.
Por exemplo, as chaves de backup podem ser adicionadas a uma carteira para que, se você perder ou expor acidentalmente a sua chave principal, ela possa ser substituída por uma nova e segura, com a permissão das chaves de backup. Você pode proteger cada uma dessas chaves de uma maneira diferente ou dividi-las entre guardiões confiáveis. Isso faz com que seja muito mais difícil para um ladrão obter controle total dos seus fundos. Da mesma forma, você pode adicionar regras à carteira para reduzir o impacto no caso de comprometimento da sua chave principal. Por exemplo, você pode permitir que transações de baixo valor sejam verificadas por uma única assinatura, enquanto transações de valor mais alto exigem aprovação de diversos assinantes autenticados. As carteiras de contratos inteligentes também podem ajudar você a impedir a ação de ladrões de outras maneiras. Por exemplo, uma lista de permissões pode ser usada para bloquear todas as transações, a menos que sejam para um endereço confiável ou verificadas por várias das suas chaves pré-aprovadas.
Exemplos de lógica de segurança que podem ser incorporados em uma carteira de contrato inteligente:
- Autorização multisig: você pode compartilhar credenciais de autorização entre várias pessoas ou dispositivos confiáveis. Em seguida, o contrato pode ser configurado de modo que as transações superiores a um valor predefinido exijam autorização de uma proporção específica (por exemplo, 3/5) das partes confiáveis. Por exemplo, transações de alto valor podem exigir a aprovação de um dispositivo móvel e de uma carteira de hardware, ou assinaturas de contas distribuídas a familiares confiáveis.
- Congelamento de conta: se um dispositivo for perdido ou comprometido, a conta pode ser bloqueada a partir de outro dispositivo autorizado, protegendo os ativos do usuário.
- Recuperação de conta: perdeu um dispositivo ou esqueceu uma senha? No paradigma atual, isso significa que os seus ativos podem ser congelados para sempre. Com uma carteira de contrato inteligente, você pode definir algumas contas pré-aprovadas que podem autorizar novos dispositivos e redefinir o acesso.
- Definição de limites de transações: especifique limites diários de transferência de valores da conta em um dia/semana/mês. Isso significa que, se um invasor obtiver acesso à sua conta, ele não poderá ficar com tudo de uma vez e você terá oportunidades de congelar e redefinir o acesso.
- Criação de listas de permissões: só permita transações para determinados endereços tidos como seguros. Isso significa que, mesmo em caso de roubo da sua chave privada, o invasor não poderia enviar fundos para contas de destino não autorizadas. Essas listas de permissão exigiriam várias assinaturas para alterá-las, de modo que um invasor não poderia adicionar o endereço dele à lista, a menos que tivesse acesso a diversas das suas chaves de backup.
Melhor experiência do usuário
A abstração de conta permite uma melhor experiência geral do usuário, bem como uma segurança reforçada, porque adiciona suporte para carteiras de contratos inteligentes no nível do protocolo. O motivo mais importante para isso é que isso proporcionará aos desenvolvedores de contratos inteligentes, carteiras e aplicativos muito mais liberdade para inovar a experiência do usuário de maneiras que talvez ainda não possamos prever. Alguns aprimoramentos óbvios que ocorrerão com a abstração de contas incluem o agrupamento de transações para aumentar a velocidade e a eficiência. Por exemplo, uma simples troca deveria ser uma operação de um clique, mas atualmente é necessário assinar várias transações para aprovar o gasto de tokens individuais antes da realização da troca. A abstração da conta remove esse atrito ao permitir o agrupamento de transações. Além disso, a transação agrupada poderia aprovar exatamente o valor correto dos tokens exigidos para cada transação e, em seguida, revogar as aprovações após a conclusão da transação, o que oferece uma segurança adicional.
O gerenciamento de gás também é muito aprimorado com a abstração de conta. Não só os aplicativos podem se oferecer para pagar as taxas de gás de seus usuários, mas as taxas de gás podem ser pagas em tokens além de ETH, o que libera os usuários da necessidade de manter um saldo de ETH para financiar as transações. Isso funcionaria por meio da troca de tokens do usuário por ETH no contrato e, em seguida, usar o ETH para pagar o gás.
As sessões confiáveis também são potencialmente transformadoras para experiências do usuário, especialmente para aplicativos como jogos, em que um grande número de pequenas transações pode precisar de aprovação em um curto espaço de tempo. Aprovar individualmente cada transação prejudicaria a experiência do jogo, mas uma aprovação permanente é insegura. Uma carteira de contrato inteligente pode aprovar transações específicas por um período fixo, até um valor específico ou apenas para endereços específicos.
Também é interessante considerar como as compras poderiam mudar com a abstração da conta. Hoje, cada transação precisa ser aprovada e executada a partir de uma carteira pré-financiada com uma quantidade suficiente do token correto. Com a abstração da conta, a experiência poderia ser mais parecida com uma compra online conhecida, em que um usuário poderia colocar itens no "carrinho" e clicar uma vez para comprar tudo junto, e o contrato processaria toda a lógica exigida, não o usuário.
Esses são apenas alguns exemplos de como as experiências do usuário podem ser aprimoradas pela abstração de contas, mas haverá muitos outros que ainda nem imaginamos. A abstração de contas libera os desenvolvedores das restrições dos EOAs atuais, permite que tragam os aspectos positivos da web2 para a web3 sem sacrificar a autocustódia e criar novas experiências de usuário inovadoras.
Como a abstração da conta será implementada?
Atualmente, existem carteiras de contratos inteligentes, mas a implementação é difícil porque a EVM não tem compatibilidade com as carteiras. Em vez disso, elas dependem do agrupamento ("enrolamento") de códigos relativamente complexos em torno de transações padrão da Ethereum. O Ethereum pode mudar isso ao permitir que contratos inteligentes iniciem transações, processando a lógica necessária em contratos inteligentes Ethereum em vez de fora da cadeia. Colocar lógica em contratos inteligentes também aumenta a descentralização do Ethereum, pois elimina a necessidade de "retransmissores" executados por desenvolvedores de carteiras para traduzir mensagens assinadas pelo usuário em transações regulares do Ethereum.
Progresso atual
As carteiras de contratos inteligentes já estão disponíveis, mas são necessárias mais melhorias para torná-las o mais descentralizadas e sem permissão possível. O EIP-4337 é uma proposta desenvolvida que não exige nenhuma alteração no protocolo Ethereum, portanto, é possível que isso seja implementado rapidamente. Entretanto, as melhorias que alteram o protocolo Ethereum não estão em desenvolvimento ativo no momento. Portanto, ainda pode demorar muito para a implementação dessas alterações. Também é possível que EIP-4337 alcance a abstração da conta de uma maneira suficientemente adequada, e nenhuma alteração de protocolo será necessária.
Leitura adicional
- erc4337.io(opens in a new tab)
- Discussão do painel sobre abstração de conta da Devcon Bogota(opens in a new tab)
- "Por que a abstração de contas é um agente de mudança para dApps", Devcon Bogota(opens in a new tab)
- "Abstração de conta ELI5", Devcon Bogota(opens in a new tab)
- Notas sobre o "Caminho para abstração de contas", Vitalik(opens in a new tab)
- Publicação do blog de Vitalik sobre carteiras de recuperação social(opens in a new tab)
- Notas EIP-2938(opens in a new tab)
- Documentação EIP-2938(opens in a new tab)
- Notas EIP-4337(opens in a new tab)
- Documentação EIP-4337(opens in a new tab)
- Documentação EIP-2771(opens in a new tab)
- "Fundamentos sobre abstração de contas" -- O que é abstração de contas, Parte I(opens in a new tab)