Antes da abstração da conta, havia dois tipos de contas no Ethereum: contas de propriedade externa (EOA) e contratos inteligentes. Um EOA é uma conta de utilizador típica que tem uma chave privada. Este é também o único tipo de conta que pode iniciar uma transação. Por exemplo, um utilizador tem de ter ETH para enviar uma transação. Criar transações em lote é difícil e não há opções de recuperação se um utilizador perder a sua chave privada. A abstração da conta (AA) foi criada para resolver estes problemas. Mas é uma solução sem riscos? Este guia cobre os fundamentos do AA antes de detalhar os seus riscos e como mitigá-los.
A abstração de contas é uma tecnologia que permite que os contratos inteligentes inicializem as transações por si próprios. Permite aos utilizadores criar contas representadas por contratos inteligentes. Esta tecnologia permite também várias funcionalidades que melhoram a interação dos utilizadores com a cadeia.
Houve diferentes propostas sobre como implementar AA na rede Ethereum. Alguns deles envolvem alterações significativas no protocolo do Ethereum o que complica a implementação. A implementação mais proeminente é o ERC-4337 que não envolve nenhuma alteração de camada de consenso. A norma replica o mempool de transações numa escala de nível superior. Os contratos inteligentes do ERC-4337 foram implantados na rede Ethereum em março de 2023.
O ERC-4337 utiliza contratos inteligentes chamados carteiras em vez de EOA. Esta carteira de contrato inteligente pode ser controlada não só por uma chave privada mas por um mecanismo complexo arbitrário que é codificado no contrato.
Em vez de transações, os utilizadores enviam UserOperations. Um UserOperation contém instruções para executar, verificação de assinaturas e outros dados. Tal como nas transações, um utilizador especifica um prémio para o Bundler priorizar a sua operação.
Mineradores ou empacotadores agrupam as operações em transações de pacote que são então incluídas na rede Ethereum.
Implementação AA: HasHex
Entre outros dados, o UsuárioOperation contém o código para criar uma carteira de contrato inteligente. Se um utilizador não tiver uma carteira, ela é criada para ele.
Se um utilizador quiser pagar a transação com um token ERC20 ou mesmo não quiser pagar por uma transação, especifica um endereço de contrato de pagador no UserOperation. Um pagador é um serviço de terceiros que pagará a transação em troca de tokens ERC20.
Embora a abstração da conta seja criada para melhorar a segurança do utilizador, existem alguns riscos, especialmente nas fases iniciais de adoção. O ecossistema Ethereum é famoso por bugs em contratos inteligentes que levaram a milhares de milhões de dólares roubados por utilizadores mal-intencionados. Aqui estão alguns riscos de AA e como eles podem ser evitados/mitigados.
Como qualquer nova tecnologia, a abstração da conta corre o risco de a sua primeira implementação conter bugs. Os contratos inteligentes do ERC-4337 foram auditados por uma empresa líder em segurança 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 está concluído.
Nem todo contrato inteligente é compatível com carteiras de abstração de conta. Por exemplo, os contratos inteligentes que utilizam o campo tx.origin para verificar a carteira que enviou a transação terão um valor inesperado. Outra incompatibilidade ocorre com contratos inteligentes que utilizam assinaturas EOA: 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, um utilizador que utilize uma carteira de abstração de conta deve verificar se o protocolo com o qual interage suporta a tecnologia.
O padrão foi concebido para que uma carteira de contrato inteligente possa ser criada dentro do primeiro utilizadorOperação através de uma fábrica de contrato inteligente. No entanto, existe o risco de o contrato inteligente de implementação da carteira conter bugs. É extremamente importante usar apenas fábricas de carteiras que foram exaustivamente auditadas e testadas pelas principais empresas de segurança blockchain.
Mitigação: Use apenas serviços confiáveis para criar carteiras e garantir que o código da carteira seja auditado pelo menos por uma empresa de segurança blockchain confiável.
Se um utilizador ou um projeto usa pagadores, depende de um terceiro para pagar as transações. Pode haver erros na implementação do paymaster, e um paymaster mal-intencionado pode roubar os fundos dos utilizadores.
Deve notar-se que o serviço de paymaster escolhido também pode sofrer de utilizadores mal-intencionados que podem encontrar formas de enganar o pagador para que pague pelas suas transações.
Mitigação: As carteiras só utilizam pagmasters de fornecedores fidedignos e asseguram que o código dos pagadores foi auditado antes de as utilizar.
A abstração da conta na cadeia de blocos Ethereum é um conceito relativamente novo. Como tal, as melhores práticas e as estruturas do desenvolvedor para a sua utilização ainda estão em processo de estabelecimento. Existem muito poucos exemplos de utilização de abstração de contas para os programadores aprenderem.
Mitigação: A melhor prática acabará por se desenvolver após a disseminação do padrão. Para os programadores, é crucial partilhar experiências usando a nova tecnologia, especialmente nas fases iniciais de adoção.
O ERC-4337 ainda está em modo de rascunho, embora os contratos já tenham sido implementados na Mainnet. Existe a possibilidade de o padrão mudar. Note-se que as referidas alterações devem afetar detalhes mais pequenos e não afetar os contratos inteligentes já implantados.
Mitigação: Os programadores devem ficar de olho na forma como a norma se desenvolve e atualizar o código dos seus projetos de acordo com as alterações padrão, se ocorrerem.
Embora o ERC-4337 tenha sido concebido para que todos possam iniciar um bundler, pelo menos na fase inicial, o ecossistema de abstração de contas é bastante centralizado, pois existem poucas implementações de Bundlers prontas para produção.
Mitigação: Para evitar riscos de um erro numa implementação do Bundler que afete a rede de abstração da conta, devem ser utilizadas pelo menos algumas implementações do Bundler. 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 pode tornar o blockchain mais seguro. Ainda assim, como com qualquer nova adição à tecnologia blockchain nos seus estágios iniciais, os utilizadores devem estar extremamente vigilantes. Rever e pesquisar AA é a melhor escolha para todos dispostos a adotar esta tecnologia.
Antes da abstração da conta, havia dois tipos de contas no Ethereum: contas de propriedade externa (EOA) e contratos inteligentes. Um EOA é uma conta de utilizador típica que tem uma chave privada. Este é também o único tipo de conta que pode iniciar uma transação. Por exemplo, um utilizador tem de ter ETH para enviar uma transação. Criar transações em lote é difícil e não há opções de recuperação se um utilizador perder a sua chave privada. A abstração da conta (AA) foi criada para resolver estes problemas. Mas é uma solução sem riscos? Este guia cobre os fundamentos do AA antes de detalhar os seus riscos e como mitigá-los.
A abstração de contas é uma tecnologia que permite que os contratos inteligentes inicializem as transações por si próprios. Permite aos utilizadores criar contas representadas por contratos inteligentes. Esta tecnologia permite também várias funcionalidades que melhoram a interação dos utilizadores com a cadeia.
Houve diferentes propostas sobre como implementar AA na rede Ethereum. Alguns deles envolvem alterações significativas no protocolo do Ethereum o que complica a implementação. A implementação mais proeminente é o ERC-4337 que não envolve nenhuma alteração de camada de consenso. A norma replica o mempool de transações numa escala de nível superior. Os contratos inteligentes do ERC-4337 foram implantados na rede Ethereum em março de 2023.
O ERC-4337 utiliza contratos inteligentes chamados carteiras em vez de EOA. Esta carteira de contrato inteligente pode ser controlada não só por uma chave privada mas por um mecanismo complexo arbitrário que é codificado no contrato.
Em vez de transações, os utilizadores enviam UserOperations. Um UserOperation contém instruções para executar, verificação de assinaturas e outros dados. Tal como nas transações, um utilizador especifica um prémio para o Bundler priorizar a sua operação.
Mineradores ou empacotadores agrupam as operações em transações de pacote que são então incluídas na rede Ethereum.
Implementação AA: HasHex
Entre outros dados, o UsuárioOperation contém o código para criar uma carteira de contrato inteligente. Se um utilizador não tiver uma carteira, ela é criada para ele.
Se um utilizador quiser pagar a transação com um token ERC20 ou mesmo não quiser pagar por uma transação, especifica um endereço de contrato de pagador no UserOperation. Um pagador é um serviço de terceiros que pagará a transação em troca de tokens ERC20.
Embora a abstração da conta seja criada para melhorar a segurança do utilizador, existem alguns riscos, especialmente nas fases iniciais de adoção. O ecossistema Ethereum é famoso por bugs em contratos inteligentes que levaram a milhares de milhões de dólares roubados por utilizadores mal-intencionados. Aqui estão alguns riscos de AA e como eles podem ser evitados/mitigados.
Como qualquer nova tecnologia, a abstração da conta corre o risco de a sua primeira implementação conter bugs. Os contratos inteligentes do ERC-4337 foram auditados por uma empresa líder em segurança 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 está concluído.
Nem todo contrato inteligente é compatível com carteiras de abstração de conta. Por exemplo, os contratos inteligentes que utilizam o campo tx.origin para verificar a carteira que enviou a transação terão um valor inesperado. Outra incompatibilidade ocorre com contratos inteligentes que utilizam assinaturas EOA: 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, um utilizador que utilize uma carteira de abstração de conta deve verificar se o protocolo com o qual interage suporta a tecnologia.
O padrão foi concebido para que uma carteira de contrato inteligente possa ser criada dentro do primeiro utilizadorOperação através de uma fábrica de contrato inteligente. No entanto, existe o risco de o contrato inteligente de implementação da carteira conter bugs. É extremamente importante usar apenas fábricas de carteiras que foram exaustivamente auditadas e testadas pelas principais empresas de segurança blockchain.
Mitigação: Use apenas serviços confiáveis para criar carteiras e garantir que o código da carteira seja auditado pelo menos por uma empresa de segurança blockchain confiável.
Se um utilizador ou um projeto usa pagadores, depende de um terceiro para pagar as transações. Pode haver erros na implementação do paymaster, e um paymaster mal-intencionado pode roubar os fundos dos utilizadores.
Deve notar-se que o serviço de paymaster escolhido também pode sofrer de utilizadores mal-intencionados que podem encontrar formas de enganar o pagador para que pague pelas suas transações.
Mitigação: As carteiras só utilizam pagmasters de fornecedores fidedignos e asseguram que o código dos pagadores foi auditado antes de as utilizar.
A abstração da conta na cadeia de blocos Ethereum é um conceito relativamente novo. Como tal, as melhores práticas e as estruturas do desenvolvedor para a sua utilização ainda estão em processo de estabelecimento. Existem muito poucos exemplos de utilização de abstração de contas para os programadores aprenderem.
Mitigação: A melhor prática acabará por se desenvolver após a disseminação do padrão. Para os programadores, é crucial partilhar experiências usando a nova tecnologia, especialmente nas fases iniciais de adoção.
O ERC-4337 ainda está em modo de rascunho, embora os contratos já tenham sido implementados na Mainnet. Existe a possibilidade de o padrão mudar. Note-se que as referidas alterações devem afetar detalhes mais pequenos e não afetar os contratos inteligentes já implantados.
Mitigação: Os programadores devem ficar de olho na forma como a norma se desenvolve e atualizar o código dos seus projetos de acordo com as alterações padrão, se ocorrerem.
Embora o ERC-4337 tenha sido concebido para que todos possam iniciar um bundler, pelo menos na fase inicial, o ecossistema de abstração de contas é bastante centralizado, pois existem poucas implementações de Bundlers prontas para produção.
Mitigação: Para evitar riscos de um erro numa implementação do Bundler que afete a rede de abstração da conta, devem ser utilizadas pelo menos algumas implementações do Bundler. 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 pode tornar o blockchain mais seguro. Ainda assim, como com qualquer nova adição à tecnologia blockchain nos seus estágios iniciais, os utilizadores devem estar extremamente vigilantes. Rever e pesquisar AA é a melhor escolha para todos dispostos a adotar esta tecnologia.