Antes da abstração de contas, havia dois tipos de contas no Ethereum: contas de propriedade externa (EOA) e contratos inteligentes. Uma EOA é uma conta de usuário típica que possui uma chave privada. Este também é o único tipo de conta que pode iniciar uma transação. Por exemplo, um usuário precisa ter ETH para enviar uma transação. Criar transações em lote é difícil e não há opções de recuperação caso um usuário perca sua chave privada. A abstração de conta (AA) foi criada para resolver esses problemas. Mas é uma solução sem riscos? Este guia cobre os fundamentos da AA antes de detalhar os seus riscos e como mitigá-los.
A abstração de contas é uma tecnologia que permite que contratos inteligentes inicializem transações por si próprios. Ele permite que os usuários criem contas representadas por contratos inteligentes. Essa tecnologia também possibilita diversos recursos que melhoram a interação dos usuários com a rede.
Houve diferentes propostas sobre como implementar AA na rede Ethereum. Alguns deles envolvem mudanças significativas no protocolo Ethereum, o que complica a implementação. A implementação mais proeminente é a ERC-4337, que não envolve nenhuma alteração na camada de consenso. O padrão replica o mempool da transação em uma escala de nível superior. Os contratos inteligentes do ERC-4337 foram implantados na rede Ethereum em março de 2023.
ERC-4337 usa contratos inteligentes denominados carteiras em vez de EOA. Esta carteira de contrato inteligente pode ser controlada não apenas por uma chave privada, mas por um mecanismo complexo arbitrário que está codificado no contrato.
Em vez de transações, os usuários enviam UserOperations. Uma UserOperation contém instruções de execução, verificação de assinaturas e outros dados. Assim como nas transações, um usuário especifica um prêmio para o Bundler priorizar sua operação.
Mineradores ou empacotadores empacotam operações em transações de pacote que são então incluídas na rede Ethereum.
Implementação de AA: HashEx
Entre outros dados, UserOperation contém o código para criar uma carteira de contrato inteligente. Se um usuário não tiver uma carteira, ela será criada para ele.
Se um usuário quiser pagar pela transação com um token ERC20 ou mesmo não quiser pagar por uma transação, ele especifica um endereço de contrato pagador na UserOperation. Um pagador é um serviço de terceiros que pagará pela transação em troca de tokens ERC20.
Embora a abstração de contas seja criada para melhorar a segurança do usuário, existem alguns riscos, especialmente nas fases iniciais de adoção. O ecossistema Ethereum é famoso por bugs em contratos inteligentes que levaram ao roubo de bilhões de dólares por usuários mal-intencionados. Aqui estão alguns riscos do AA e como eles podem ser evitados/mitigados.
Como qualquer nova tecnologia, a abstração de contas corre o risco de sua primeira implementação conter bugs. Os contratos inteligentes do ERC-4337 foram auditados por uma empresa líder em segurança de blockchain, OpenZeppelin.
Mitigação: A solução é usar a verificação formal — um processo que envolve o uso de métodos matemáticos para provar a exatidão dos contratos inteligentes. O processo de verificação formal dos contratos ERC4337 está em curso, mas ainda não foi concluído.
Nem todo contrato inteligente é compatível com carteiras de abstração de contas. Por exemplo, contratos inteligentes que usam o campo tx.origin para verificar a carteira que enviou a transação obterão um valor inesperado. Outra incompatibilidade ocorre com contratos inteligentes que utilizam assinaturas EOA: eles não são suportados por carteiras AA.
Nesses contratos, certas funcionalidades cruciais podem não funcionar corretamente. Na pior das hipóteses, os fundos dos utilizadores podem ser bloqueados.
Mitigação: Para diminuir os riscos, o usuário que utiliza uma carteira de abstração de conta deve verificar se o protocolo com o qual interage suporta a tecnologia.
O padrão foi projetado para que uma carteira de contrato inteligente possa ser criada na primeira UserOperation por meio de uma fábrica de contrato inteligente. No entanto, existe o risco de que o contrato inteligente de implementação da carteira contenha bugs. É extremamente importante usar apenas fábricas de carteiras que tenham sido minuciosamente auditadas e testadas pelas principais empresas de segurança de blockchain.
Mitigação: Use apenas serviços confiáveis para criar carteiras e garanta que o código da carteira seja auditado por pelo menos uma empresa confiável de segurança de blockchain.
Se um usuário ou projeto usa pagadores, ele depende de terceiros para pagar pelas transações. Pode haver erros na implementação do pagador, e um pagador mal-intencionado pode roubar os fundos dos usuários.
Deve-se notar que o serviço do pagador escolhido também pode sofrer com usuários mal-intencionados que podem encontrar maneiras de enganar o pagador para que pague por suas transações.
Mitigação: As carteiras usam apenas pagadores de fornecedores confiáveis e garantem que o código dos pagadores foi auditado antes de usá-los.
A abstração de contas no blockchain Ethereum é um conceito relativamente novo. Como tal, as melhores práticas e estruturas de desenvolvimento para a sua utilização ainda estão em processo de estabelecimento. Existem poucos exemplos de uso de abstração de conta para os desenvolvedores aprenderem.
Mitigação: A melhor prática acabará por se desenvolver após a difusão da norma. Para os desenvolvedores, é crucial compartilhar experiências usando a nova tecnologia, especialmente nos estágios iniciais de adoção.
O ERC-4337 ainda está em modo rascunho, embora os contratos já tenham sido implantados na Mainnet. Existe a possibilidade de que o padrão mude. Deve-se notar que tais mudanças devem afetar detalhes menores e não afetar contratos inteligentes já implantados.
Mitigação: Os desenvolvedores devem ficar de olho em como o padrão se desenvolve e atualizar o código de seus projetos de acordo com as alterações no padrão, caso elas ocorram.
Embora o ERC-4337 tenha sido projetado para que todos possam iniciar um bundler, pelo menos no estágio inicial, o ecossistema de abstração de contas é bastante centralizado, pois há poucas implementações de Bundlers prontas para produção.
Mitigação: Para evitar riscos de erro em uma implementação do Bundler que afete a rede de abstração de contas, pelo menos algumas implementações do Bundler devem ser usadas. Muitas implementações do Bundler estão atualmente em desenvolvimento e em breve muitas delas estarão prontas para produção.
A abstração de contas é uma tecnologia potencialmente excelente que pode trazer mais adoção ao Ethereum. Ao mesmo tempo, é um dos desenvolvimentos que podem tornar o blockchain mais seguro. Ainda assim, como acontece com qualquer nova adição à tecnologia blockchain em seus estágios iniciais, os usuários devem estar extremamente vigilantes. Revisar e pesquisar AA é a melhor escolha para todos que desejam adotar esta tecnologia.
Antes da abstração de contas, havia dois tipos de contas no Ethereum: contas de propriedade externa (EOA) e contratos inteligentes. Uma EOA é uma conta de usuário típica que possui uma chave privada. Este também é o único tipo de conta que pode iniciar uma transação. Por exemplo, um usuário precisa ter ETH para enviar uma transação. Criar transações em lote é difícil e não há opções de recuperação caso um usuário perca sua chave privada. A abstração de conta (AA) foi criada para resolver esses problemas. Mas é uma solução sem riscos? Este guia cobre os fundamentos da AA antes de detalhar os seus riscos e como mitigá-los.
A abstração de contas é uma tecnologia que permite que contratos inteligentes inicializem transações por si próprios. Ele permite que os usuários criem contas representadas por contratos inteligentes. Essa tecnologia também possibilita diversos recursos que melhoram a interação dos usuários com a rede.
Houve diferentes propostas sobre como implementar AA na rede Ethereum. Alguns deles envolvem mudanças significativas no protocolo Ethereum, o que complica a implementação. A implementação mais proeminente é a ERC-4337, que não envolve nenhuma alteração na camada de consenso. O padrão replica o mempool da transação em uma escala de nível superior. Os contratos inteligentes do ERC-4337 foram implantados na rede Ethereum em março de 2023.
ERC-4337 usa contratos inteligentes denominados carteiras em vez de EOA. Esta carteira de contrato inteligente pode ser controlada não apenas por uma chave privada, mas por um mecanismo complexo arbitrário que está codificado no contrato.
Em vez de transações, os usuários enviam UserOperations. Uma UserOperation contém instruções de execução, verificação de assinaturas e outros dados. Assim como nas transações, um usuário especifica um prêmio para o Bundler priorizar sua operação.
Mineradores ou empacotadores empacotam operações em transações de pacote que são então incluídas na rede Ethereum.
Implementação de AA: HashEx
Entre outros dados, UserOperation contém o código para criar uma carteira de contrato inteligente. Se um usuário não tiver uma carteira, ela será criada para ele.
Se um usuário quiser pagar pela transação com um token ERC20 ou mesmo não quiser pagar por uma transação, ele especifica um endereço de contrato pagador na UserOperation. Um pagador é um serviço de terceiros que pagará pela transação em troca de tokens ERC20.
Embora a abstração de contas seja criada para melhorar a segurança do usuário, existem alguns riscos, especialmente nas fases iniciais de adoção. O ecossistema Ethereum é famoso por bugs em contratos inteligentes que levaram ao roubo de bilhões de dólares por usuários mal-intencionados. Aqui estão alguns riscos do AA e como eles podem ser evitados/mitigados.
Como qualquer nova tecnologia, a abstração de contas corre o risco de sua primeira implementação conter bugs. Os contratos inteligentes do ERC-4337 foram auditados por uma empresa líder em segurança de blockchain, OpenZeppelin.
Mitigação: A solução é usar a verificação formal — um processo que envolve o uso de métodos matemáticos para provar a exatidão dos contratos inteligentes. O processo de verificação formal dos contratos ERC4337 está em curso, mas ainda não foi concluído.
Nem todo contrato inteligente é compatível com carteiras de abstração de contas. Por exemplo, contratos inteligentes que usam o campo tx.origin para verificar a carteira que enviou a transação obterão um valor inesperado. Outra incompatibilidade ocorre com contratos inteligentes que utilizam assinaturas EOA: eles não são suportados por carteiras AA.
Nesses contratos, certas funcionalidades cruciais podem não funcionar corretamente. Na pior das hipóteses, os fundos dos utilizadores podem ser bloqueados.
Mitigação: Para diminuir os riscos, o usuário que utiliza uma carteira de abstração de conta deve verificar se o protocolo com o qual interage suporta a tecnologia.
O padrão foi projetado para que uma carteira de contrato inteligente possa ser criada na primeira UserOperation por meio de uma fábrica de contrato inteligente. No entanto, existe o risco de que o contrato inteligente de implementação da carteira contenha bugs. É extremamente importante usar apenas fábricas de carteiras que tenham sido minuciosamente auditadas e testadas pelas principais empresas de segurança de blockchain.
Mitigação: Use apenas serviços confiáveis para criar carteiras e garanta que o código da carteira seja auditado por pelo menos uma empresa confiável de segurança de blockchain.
Se um usuário ou projeto usa pagadores, ele depende de terceiros para pagar pelas transações. Pode haver erros na implementação do pagador, e um pagador mal-intencionado pode roubar os fundos dos usuários.
Deve-se notar que o serviço do pagador escolhido também pode sofrer com usuários mal-intencionados que podem encontrar maneiras de enganar o pagador para que pague por suas transações.
Mitigação: As carteiras usam apenas pagadores de fornecedores confiáveis e garantem que o código dos pagadores foi auditado antes de usá-los.
A abstração de contas no blockchain Ethereum é um conceito relativamente novo. Como tal, as melhores práticas e estruturas de desenvolvimento para a sua utilização ainda estão em processo de estabelecimento. Existem poucos exemplos de uso de abstração de conta para os desenvolvedores aprenderem.
Mitigação: A melhor prática acabará por se desenvolver após a difusão da norma. Para os desenvolvedores, é crucial compartilhar experiências usando a nova tecnologia, especialmente nos estágios iniciais de adoção.
O ERC-4337 ainda está em modo rascunho, embora os contratos já tenham sido implantados na Mainnet. Existe a possibilidade de que o padrão mude. Deve-se notar que tais mudanças devem afetar detalhes menores e não afetar contratos inteligentes já implantados.
Mitigação: Os desenvolvedores devem ficar de olho em como o padrão se desenvolve e atualizar o código de seus projetos de acordo com as alterações no padrão, caso elas ocorram.
Embora o ERC-4337 tenha sido projetado para que todos possam iniciar um bundler, pelo menos no estágio inicial, o ecossistema de abstração de contas é bastante centralizado, pois há poucas implementações de Bundlers prontas para produção.
Mitigação: Para evitar riscos de erro em uma implementação do Bundler que afete a rede de abstração de contas, pelo menos algumas implementações do Bundler devem ser usadas. Muitas implementações do Bundler estão atualmente em desenvolvimento e em breve muitas delas estarão prontas para produção.
A abstração de contas é uma tecnologia potencialmente excelente que pode trazer mais adoção ao Ethereum. Ao mesmo tempo, é um dos desenvolvimentos que podem tornar o blockchain mais seguro. Ainda assim, como acontece com qualquer nova adição à tecnologia blockchain em seus estágios iniciais, os usuários devem estar extremamente vigilantes. Revisar e pesquisar AA é a melhor escolha para todos que desejam adotar esta tecnologia.