Garantia da atualização do Ethereum EIP-7702: um modelo de proxy seguro para a transição de EOA para Carteira inteligente

robot
Geração do resumo em andamento

Desenvolvemos o EIP7702Proxy, um contrato de proxy leve do ERC-1967 projetado para servir como o encaminhamento lógico básico do delegado EIP-7702 para EOA... que aborda alguns dos desafios exclusivos das contas delegadas EIP-7702. Este artigo é de um artigo escrito pela comunidade Boardlink e é compilado, compilado e contribuído pela ForesightNews. (Sinopse: Ethereum Pectra atualiza "hacker flip", Wintermute avisa: EIP-7702 automatiza a implantação de um grande número de contratos) (Suplemento de antecedentes: "One Trillion Dollar Security Project" da Fundação Ethereum lança primeiro relatório: Classificando contratos inteligentes, infraestrutura e segurança na nuvem... Six Ecological Challenges EIP-7702 permite que carteiras Ethereum simples (EOAs) atualizem para carteiras de contratos inteligentes, fornecendo maior segurança, recursos avançados, oportunidades de patrocínio de gás e outros benefícios. Historicamente, as carteiras inteligentes tinham que ser construídas do zero, mas com a introdução do EIP-7702, as carteiras tradicionais podem ser atualizadas e manter todos os seus ativos e histórico on-chain, com o mesmo endereço de carteira. É como mudar de um telefone fixo para um smartphone sem ter que obter um novo número. O EOA é atualizado configurando uma "designação de delegação", ou seja, um ponteiro para um contrato inteligente delegado e, em seguida, delegando a lógica do contrato inteligente para gerenciar o EOA. Como resultado, um EOA atualizado pode ter funções, definir armazenamento, emitir eventos e executar todas as outras operações que um contrato inteligente pode executar. O EOA pode alterar ou excluir esse delegado a qualquer momento com uma nova autorização EIP-7702 assinada. Embora isso libere muitas novas possibilidades, esse poderoso recurso também introduz novos desafios de segurança que exigem uma consideração cuidadosa e soluções inovadoras. Para permitir que a EOA atue como uma carteira de contrato inteligente, desenvolvemos o EIP7702Proxy, um contrato de proxy leve ERC-1967 projetado para servir como um delegado EIP-7702 para EOA. Além do encaminhamento lógico básico realizado pelo agente, o EIP7702Proxy inclui recursos adicionais e opções de design que abordam alguns dos desafios exclusivos das contas delegadas EIP-7702. Um objetivo de projetar EIP7702Proxy é manter o máximo de peerability possível entre uma carteira inteligente Coinbase "implantada padrão" e uma carteira inteligente Coinbase delegada EIP-7702, o que significa abstrair a complexidade adicional necessária para o mecanismo EIP-7702 em um proxy dedicado e continuar a confiar na implementação original da CoinbaseSmartWallet. A solução para este desafio pode ser efetivamente aplicada a qualquer lógica de implementação, não apenas à implementação CoinbaseSmartWallet, ao mesmo tempo em que ajuda a EOA a permanecer segura em um ambiente habilitado para 7702. Abaixo, apresentamos desafios específicos e soluções de design correspondentes que nos permitem adaptar com segurança qualquer implementação de carteira de contrato inteligente existente para atualizações EIP-7702. Desafio #1: Impondo a inicialização segura O primeiro grande obstáculo para implementar o EIP-7702 vem de suas restrições de inicialização. As carteiras tradicionais de contratos inteligentes, incluindo CoinbaseSmartWallet, normalmente lidam com a inicialização segura (estabelecendo a propriedade da conta) atomicamente durante sua implantação, normalmente por meio de um contrato de fábrica separado. Essa atomicidade significa que muitas dessas implementações têm funções de inicializador desprotegidas que só podem ser chamadas uma vez. No entanto, o design do EIP-7702 não permite que os dados de chamada de inicialização sejam executados durante o processo de delegação de código (a etapa equivalente de "implantação"), portanto, isso não pode ser feito atomicamente. Essa separação de etapas cria uma janela de vulnerabilidade crítica. Quando o contrato de implementação é "implantado" no EOA via EIP-7702, não há garantia de que a transação EVM padrão para esta carteira de atualização e inicialização do 7702 será executada atomicamente. Tecnicamente, mesmo se confirmado ao mesmo tempo, o código que define a autorização pode ser independente do aplicativo de transação de inicialização, o que pode permitir que um invasor execute preventivamente a transação de inicialização e reivindique a propriedade da conta inteligente. Solução: A assinatura EOA é necessária para configurar atomicamente a implementação e inicializar Observe que a carteira inteligente Coinbase existente é implantada após o proxy ERC-1967 com a implementação UUPSUpgradeable (a lógica CoinbaseSmartWallet real). O código no endereço da conta real é um proxy que usa um local de armazenamento regular definido pelo ERC-1967 para armazenar ponteiros para sua lógica de implementação. Nossa solução para a vulnerabilidade de inicialização no contexto do 7702 inclui reconhecer que qualquer lógica de implementação se torna ativa (e, portanto, perigosa) somente quando o agente realmente estabelece uma conexão com ela. Portanto, se não pudermos forçar a implantação e a inicialização da atomicidade, poderemos forçar a configuração e a inicialização da implementação da atomicidade. EIP-7702CoinbaseSmartWallet Contract Structure and Logical Delegation Process No contexto do EIP-7702, a própria EOA é a autoridade inicial para fazer quaisquer alterações em sua conta, e uma assinatura deve ser fornecida para autorizar qualquer proprietário que inicialize e estabeleça uma nova conta inteligente. Nosso contrato EIP7702Proxy implementa uma função setImplementation que atomicamente configura novas implementações lógicas e inicializa contas. função setImplementation: Verifica a assinatura do EOA, que inclui dados importantes, como o endereço do novo contrato de implementação, a inicialização de dados de chamada, o endereço do contrato do validador que avaliará a segurança do estado final da conta e a proteção básica de repetição de assinatura, como nonce e tempo de expiração. Defina o valor do ponteiro ERC-1967 para a nova implementação e execute os dados de chamada fornecidos em relação à nova implementação lógica. Chame a função validateAccountState, que deve ser implementada pelo certificador incluído na assinatura. Um validador é um contrato específico de implementação que contém lógica para avaliar se considera seguro o estado final da conta. Por exemplo, para CoinbaseSmartWallet, CoinbaseSmartWalletValidator verifica se o status de propriedade da conta não está vazio e, portanto, não está mais vulnerável a inicialização arbitrária. Desafio #2: Armazenamento compartilhado delegado no EIP-7702 Os desafios mais complexos do EIP-7702 podem estar relacionados ao gerenciamento de armazenamento. A EOA é livre de redelegar a sua lógica a um contrato diferente a qualquer momento, ou eliminar totalmente o delegado. Todos os delegados partilham endereços EOA em...

Ver original
O conteúdo é apenas para referência, não uma solicitação ou oferta. Nenhum aconselhamento fiscal, de investimento ou jurídico é fornecido. Consulte a isenção de responsabilidade para obter mais informações sobre riscos.
  • Recompensa
  • Comentário
  • Compartilhar
Comentário
0/400
Sem comentários
  • Marcar
Faça trade de criptomoedas em qualquer lugar e a qualquer hora
qrCode
Escaneie o código para baixar o app da Gate
Comunidade
Português (Brasil)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)