Para quem acompanha o universo das blockchains, mas especificamente o da rede Ethereum, deve ter reparado em um assunto que vem sendo bastante comentado ultimamente: a Abstração de Contas ou Account Abstraction.
Apesar de parecer novidade, é um tema antigo, já externado pelo próprio Vitalik Buterin, que diz que implementar a Account Abstraction é algo que os desenvolvedores sempre quiseram mas nunca conseguiram fazer.
The good news is that we're narrowing down toward an actual path for account abstraction, something we've always wanted but have not managed to actually have!
— vitalik.eth (@VitalikButerin) October 1, 2022
And with the "carrot" of cost savings in rollups with signature aggregation, there's finally an incentive to adopt it.
Sobre isso que vamos falar hoje, esse importante conceito que, na minha humilde opinião, PODE SIM ajudar o ecossistema cripto a alcançar a adoção em massa.
Estou exagerando? Então vem comigo…
Talvez quem já habita o meio cripto há algum tempo não perceba mais o quão complicada é a jornada de usuário iniciante no ecossistema cripto. Temos que reconhecer aqui o enorme problema de UX (User Experience) que temos.
Exemplificando:
Se considerarmos que as wallets são a porta de entrada para esse universo tecnológico disruptivo, chega a ser contraditório dizer que o mais seguro é anotar a seed phrase em um papel, recorrendo a um lápis ou caneta.
E que se você perder essa seed phrase, ACABOU: seus fundos estão perdidos. Isso parece escalável? É quase como pedir para que nos dias atuais, ao invés de utilizar o PIX, você volte a utilizar cheques.
Já nos DApps, novamente a UX não é fluida e, às vezes, para realizar uma ação que deveria ser simples temos que passar por uma bateria de autorizações.
Experimente entrar em um gameFi, comprar um item NFT e utilizá-lo durante o jogo. Provavelmente serão necessárias diversas autorizações nesse processo.
A Abstração das Contas ou Account Abstraction promete resolver estes problemas de UX. Mas o que seria essa abstração de contas?
Para entender melhor vamos voltar um passo e primeiro entender o que são as contas ou accounts.
Accounts
Começamos o artigo falando especificamente da blockchain Ethereum, mas o conceito de conta ou account é comum a qualquer blockchain EVM. É a unidade atômica de identidade. A unidade individual no contexto da EVM.
As accounts podem ser de dois tipos:
- Contract Accounts ( conhecidas como CAs )
- Externally Owned Accounts ( conhecidas como EOAs )
As CAs são accounts controladas por código (dentro do EVM). Em vez de serem controladas por chaves, são controladas pela lógica dos smart contracts.
Já as EOAS são as accounts criadas pelas wallets. São as accounts controladas pelas pessoas (entidade fora do EVM) usando um par de chaves.
Elas possuem 3 propriedades:
- Um saldo que representa o montante da moeda nativa da blockchain (por exemplo ETH);
- Um nonce para criptografia de autenticação, garantindo que cada transação é única;
- Um endereço que identifica a account na rede.
As CAs podem executar códigos. Essa é uma grande diferença entre elas. Por exemplo: enquanto uma EOA realiza uma transação para uma única operação, uma CA pode em uma única transação realizar diversas operações diferentes via código.
Todas as ações dentro de uma blockchain EVM nascem originadas pelas EOAs. Tudo o que você precisa fazer é gerar um par de chaves (uma chave pública e privada) e pronto, account criada. Com esse par de chaves as EOAs podem iniciar transações e realizar a assinaturas digitais. Uma característica somente das EOAs.
Já as CAs, para ser inicializadas, devem sempre ser provocadas pelas EOAs. Elas não possuem chaves, o que significa que elas não podem iniciar transações ou realizar assinaturas digitais.
Aqui, uma visão um pouco mais técnica: essas assinaturas digitais obedecem a esquemas de assinaturas criptografadas e o Ethereum utiliza um chamado ECDSA com curva elíptica secp256k1. A construção do endereço (address) de uma account utiliza os últimos 20 bytes do esquema ECDSA.
O que significa isso?
Significa que o conceito do endereço da account e o conceito da assinatura das chaves seguem a mesma lógica. Significa que a lógica do esquema ECDSA está tão fortemente acoplada ao código do EVM que, basicamente, accounts e pares de chaves são essencialmente a mesma coisa. Se você controla uma chave privada, você controla uma conta.
É aqui que entra a Account Abstraction.
Account Abstraction
A proposta dos desenvolvedores da rede Ethereum é a de que se crie uma abstração no modelo de accounts, e que ao final todas elas sejam smart contracts.
Todas seriam smart contracts com características das EOAs. Isso permitiria que smart contracts possuíssem chaves privadas e realizassem transações próprias.
Toda account poderia ter uma lógica de programação customizada atendendo as necessidades do dono da account.
Por exemplo, algumas lógicas que poderiam ser implementadas:
- Receio com a computação quântica. Existe um receio de que no futuro a computação quântica consiga quebrar o esquema de assinatura ECDSA. Com a account abstraction, seria possível utilizar qualquer outro esquema de assinatura no código da account.
- Social recovery. Uma das maiores preocupações das pessoas é a de custodiar sua própria chave privada, às vezes terceirizando isso para corretoras confiáveis. Todos nós já ouvimos falar de alguém que perdeu sua chave privada e acabou perdendo seus fundos. Com a Account Abstraction você poderia, por exemplo, programar perguntas específicas, segredos que tornariam possíveis recuperar os fundos sem ter acesso a chave privada.
- Monitoramento de Fraudes. Por exemplo, uma account poderia pedir uma segunda assinatura de uma outra entidade terceira confiável responsável por avaliar se a transação é suspeita.
- Pagamento das fees. Por exemplo, você poderia escolher outro token para pagamento das fees da rede, ou pagar taxas de outras pessoas.
- 2FA. Uma account poderia aguardar para aprovar uma transação até que fosse confirmada a operação em um outro canal, como SMS ou e-mail.
- Integração com hardwares.
Desafios
Existem atualmente três propostas de realizar a Account Abstraction. Todas apontando para o acesso ao Ethereum por meio de wallets de smart contracts:
- A EIP-3074 propõe realizar atualizações nas EOAs, na camada de consenso da Ethereum, para que elas possam ser controladas por smart contracts;
- A EIP-2938 propõe realizar as atualizações nos smart contracts, também na camada de consenso da Ethereum, para que eles possam iniciar as transações e pagar taxas;
- A ERC-4337 propõe uma alternativa que modifica o sistema de transações, uma rede complementar, para que não haja concorrência com as mudanças no roadmap da camada de consenso da Ethereum.
Implementar a Account Abstraction no Ethereum é uma tarefa bem complexa que requer várias mudanças no protocolo e fica cada vez mais difícil de coordenar e implementar, à medida que o tamanho e valor da Ethereum aumenta.
Por isso ela ainda não foi implementada: seria algo como trocar as rodas do carro com ele em movimento.
Por mais que os desenvolvedores Ethereum queiram implementar a Account Abstraction, até hoje, essas atualizações sempre foram adiadas em favor de outras mais urgentes.
E é aqui que surge com força o conceito de Account Abstraction nas blockchains de segunda camada, as Layer 2.
É uma oportunidade perfeita de se criar as melhorias na experiência sem a necessidade de mudanças significativas no protocolo central. As Layer 2 surgiram mais recentemente, têm menos dados para ajustar e o ecossistema se move gradualmente da Layer 1 para as Layer 2.
Já temos alguns protocolos em Layer 2 experimentando as melhorias da Account Abstraction, como a wallet Argent, StarkNet e zkSync.
Conclusão
A Account Abstraction está em desenvolvimento.
Um desenvolvimento importante demais não somente para o Ethereum, mas para todo o ecossistema de blockchains.
Vamos acompanhando, esperando novos desenvolvimentos na área e acreditando que, como disse lá em cima no início deste artigo, na minha opinião é um “Game Changer” para a adoção em massa.
A Account Abstraction tem potencial gigantesco de simplificar e tornar mais segura a experiência dos usuários.
Sobre o autor
Ruan Lima é especialista em criptomoedas e ativos digitais, com ampla experiência na indústria de blockchain e web 3.0. Ele atua em Crypto Research, Desenvolvimento de Negócios e Gestão de Produtos, construindo pontes entre protocolos, parceiros, clientes e times.