O que é a delegação EIP-7702? Explicação sobre contas inteligentes EOA

Principiante
EthereumSegurança
Última atualização 30-10-2026 06:09:36
Tempo de leitura: 5m
A delegação EIP-7702 grava no campo de código de uma EOA 0xef0100 mais o endereço do delegado, pelo que a conta mantém o seu endereço e chave privada enquanto executa o código do delegado no seu próprio contexto. Uma transação do tipo 0x04 inclui a tupla de autorização, e a delegação mantém-se até ser substituída ou revogada.

A delegação EIP-7702 permite que uma conta detida externamente (EOA) entregue a sua lógica de execução a outro contrato sem alterar o endereço nem abdicar da chave privada. O campo de código é definido como 0xef0100 mais o endereço do delegado, e as chamadas posteriores executam esse código no contexto da própria EOA, continuando o saldo, o nonce e o armazenamento a pertencer à conta.

Destina-se a leitores que já conhecem carteiras de autocustódia e o modelo de contas da EVM. O Ethereum tem há muito tempo dois tipos de contas: EOA controladas por chave e contas de contrato com código, sendo que apenas as segundas podiam ter lógica de validação personalizada, à custa de um novo endereço. Foi introduzido com a atualização Pectra e transferiu a validação personalizada da abertura de uma nova conta para a escrita de código num endereço já em utilização.

Uma tupla de autorização contém seis campos, e o designador de delegação ocupa 23 bytes: um prefixo de três bytes mais um endereço de 20 bytes. O processo de escrita, os limites das novas capacidades, a divisão com o ERC-4337 e a fiabilidade do delegado determinam quanto controlo a conta mantém após essa assinatura.

Principais conclusões

  • A delegação EIP-7702 mantém o endereço, a chave privada, o saldo e o nonce inalterados e direciona apenas o campo de código para um contrato delegado.

  • Uma transação do tipo 0x04 escreve a delegação através de uma tupla de autorização; a mensagem assinada não contém campos de taxas, e o remetente não tem de ser o proprietário.

  • Uma delegação não tem caducidade; a revogação elimina o código, mas não o armazenamento, as aprovações de tokens nem as assinaturas Permit.

  • Um delegado sem receive() nem fallback() faz reverter transferências simples de ETH, e tx.origin deixa de implicar que uma conta não tem código.

  • O ERC-4337 cria um sistema de contas separado, enquanto o EIP-7702 adiciona código a EOA existentes, pelo que ambos podem ser combinados.

O que muda a delegação EIP-7702 numa conta detida externamente?

O Ethereum tem dois tipos de contas: uma conta detida externamente, controlada por uma chave privada, e uma conta de contrato, que contém código.

Com o EIP-7702, o que muda é o campo de código, e não a identidade da conta, pois uma EOA pode apontar temporariamente para código de contrato sem alterar o seu endereço. O endereço, a chave privada, o saldo e o nonce mantêm-se onde estavam; a diferença é que o endereço passa a ter código executável obtido de outro contrato implementado.

O campo contém um designador de delegação de 23 bytes: o prefixo 0xef0100 mais um endereço de 20 bytes. Quando uma chamada visa essa EOA, a EVM lê o designador e carrega o código do delegado, pelo que a conta pode comportar-se como contas inteligentes, enquanto a chave privada permanece sob controlo e o remetente, o saldo e o armazenamento são todos lidos como sendo da EOA.

O delegado não consegue ver o seu próprio estado; a sua lógica de execução é carregada a partir do contrato de destino, enquanto o armazenamento e o contexto do remetente permanecem os da EOA, e as escritas seguem a mesma lógica para o armazenamento que a EOA nunca utilizou.

As assinaturas continuam a provir da chave privada original, pelo que a conta não se torna uma multisig, e o design constitui um passo rumo à abstração de contas, incluindo a variante nativa, e não uma alteração do tipo de conta.

Tipo 0x04 e tuplas de autorização: como a delegação chega ao código do contrato

A escrita requer um novo tipo de transação, 0x04, cujo corpo contém uma lista de autorizações; cada tupla é assinada pelo titular da conta, enquanto a própria transação pode ser enviada e paga por qualquer endereço, e a autorização especifica qual o código que a conta permite executar.

A tupla é [chain_id, address, nonce, y_parity, r, s], e a mensagem assinada é keccak(0x05 || rlp([chain_id, address, nonce])); a especificação EIP-7702 utiliza o prefixo 0x05 para separar as assinaturas de autorização das assinaturas de transações normais, e a mensagem não contém campos de gás nem de taxas.

O que é assinado é o endereço para o qual o código deve apontar, e não uma transação específica, pelo que alguns sistemas associam a autorização a uma intenção. A conta também pode assinar uma vez offline enquanto um patrocinador adianta o gás.

A validação pelo nó decorre em seis passos, sendo que a associação ao nonce torna uma autorização utilizável uma vez, no nonce correspondente.

A lista de autorizações é incluída no corpo da transação, tal como uma lista de acesso alarga o formato de transação: o ID da cadeia é 0 ou corresponde à cadeia local (0 significa válido em qualquer cadeia); o nonce é inferior a 2^64-1; ecrecover verifica a assinatura; o código da conta está vazio ou já foi delegado; o nonce corresponde ao valor atual; e o código é escrito como 0xef0100 || address, com o nonce incrementado.

A revogação segue o mesmo processo com o endereço definido como zero, o que elimina o hash do código sem uma alteração permanente de estado na EOA subjacente.

Que propriedades da conta permanecem inalteradas?

Quatro propriedades mantêm-se como estavam, e apenas o código e o armazenamento mudam: o código passa de 0x para o designador, os espaços de armazenamento não utilizados começam a receber escritas e esses valores sobrevivem à revogação. A especificação também enumera três invariantes on-chain que deixam de se verificar, abrangendo saldo, nonce e identidade do chamador; a secção de riscos aborda-os.

  1. Endereço: inalterado, pelo que o histórico, as aprovações de tokens e os registos de nomes continuam a apontar para o mesmo endereço.

  2. Chave privada: inalterada, e assina transações normais, bem como uma nova autorização que substitui ou revoga a delegação.

  3. Saldo: inalterado, pois a delegação não move ativos e a conta continua a detê-los diretamente.

  4. Nonce: continua a aumentar, pois a autorização consome um, o que impede a repetição da mesma assinatura.

Uma conta delegada pode continuar a receber ETH normalmente?

Não por predefinição. Quando a conta passa a ter código, uma transferência simples de ETH entra no percurso de execução do código; se o delegado não implementar receive() nem fallback(), a transferência reverte e os fundos regressam ao remetente.

Este problema pode ocorrer em fluxos de pagamento comuns, como levantamentos de exchanges, processamento de salários e airdrops. Normalmente, o software da carteira indica apenas uma falha, sem indicar que a causa é o delegado. Antes de assinar, confirmar que o destino implementa uma função receive ou encaminhar pagamentos recebidos através de uma chamada que transporte calldata; o software da carteira deve também indicar essa causa de forma mais clara aos utilizadores.

Processo de escrita da delegação EIP-7702: a EOA assina uma tupla de autorização, uma transação do tipo 0x04 escreve o código delegado 0xef0100 e as chamadas posteriores executam o delegado no contexto da EOA

Figura 1. O processo de escrita EIP-7702: a EOA assina a tupla de autorização, uma transação do tipo 0x04 define o código como 0xef0100 mais o endereço do delegado e as chamadas posteriores executam esse código no contexto da EOA.

O que pode fazer uma conta delegada? Agrupamento, patrocínio de gás e recuperação

A delegação transforma uma EOA, que só pode assinar transações, numa conta que se comporta como uma conta inteligente para utilizadores comuns, com as vantagens mais claras no agrupamento, no patrocínio de gás e na recuperação baseada em regras.

O agrupamento é a vantagem mais concreta: aprovar e trocar podem ocorrer numa única transação; um patrocinador também pode simplificar a integração ou o agrupamento ao ajudar a concluir vários passos nos bastidores no momento adequado, pelo que uma única assinatura liquida uma vez e não fica nenhuma aprovação por utilizar pelo meio.

O patrocínio de gás resulta da separação entre a assinatura e o remetente: um terceiro paga, a conta não precisa de ETH antecipadamente e, com um paymaster ERC-4337, o custo pode ficar a cargo da aplicação. Isto também significa que algumas aplicações podem cobrir o gás ou simplificar a integração ao tratá-lo em segundo plano, mas os programadores devem evitar solicitar delegação quando um utilizador está apenas a pedir outra funcionalidade.

A recuperação e as chaves de sessão assentam no delegado a verificar as assinaturas, por exemplo com uma passkey, um conjunto de tutores ou limites de despesa em vez de uma chave. O delegado também pode aplicar funções semelhantes a políticas em torno de transferências ou da utilização de signatários.

O limite é direto: quem detém a chave privada pode sempre assinar uma nova autorização que substitui a delegação, pelo que a recuperação é aqui mais fraca do que numa conta inteligente nativa e apenas reduz o custo de uma chave perdida.

Uma delegação não tem caducidade. Mantém-se ativa até que uma nova autorização a substitua ou que um endereço zero a revogue, pelo que a permissão é duradoura e requer gestão ativa; do ponto de vista da segurança, analisar o âmbito do que o código delegado pode aceder e controlar.

Em que difere a delegação EIP-7702 do ERC-4337 e da abstração de contas?

O EIP-7702 adiciona código a uma EOA existente, enquanto o ERC-4337 cria um sistema de contas separado; como abordagens complementares à abstração de contas, ambos podem ser combinados em vez de se substituírem.

Dimensão Delegação EIP-7702 Conta inteligente ERC-4337
Origem do endereço Reutiliza o endereço EOA existente Contrato recém-implementado, definido por fábrica e salt
Portador do código Designador de 23 bytes no campo de código O próprio bytecode do contrato da conta
Relação com EntryPoint Nenhuma; transações normais executam-no Executada através de UserOperations agrupadas pelo EntryPoint
Custo de migração Nenhum; basta uma autorização Implementar e, depois, mover ativos e aprovações
Fluxo de assinatura A chave assina a tupla; qualquer pessoa pode enviar Validação personalizada no contrato, agrupada por um bundler

O ERC-4337 parte de um contrato recém-implementado, pelo que os ativos e as aprovações são transferidos; o 7702 parte do endereço original e adiciona código, evitando a migração ao permitir que as contas existentes utilizem o comportamento de contratos inteligentes sem implementar primeiro uma carteira separada.

Em conjunto, permitem que uma conta 7702 funcione como implementação de conta para ERC-4337, e os programadores podem criar fluxos compatíveis com 4337 sobre uma conta delegada 7702. Isto reintroduz uma corrida de inicialização: entre a confirmação da delegação e a conclusão da inicialização, qualquer pessoa pode chamar o inicializador e definir-se como proprietário.

Existem duas soluções — initWithSig, que associa a assinatura aos argumentos de inicialização, ou restringir a inicialização ao EntryPoint.

O delegado é fiável? Como verificar se é imutável

Delegar apenas a contratos imutáveis implementados a partir de initcode CREATE2 padrão; o mecanismo de verificação deve favorecer destinos sem via de atualização, pois contratos proxy, contratos atualizáveis e contratos com um percurso de autodestruição são todos destinos inadequados.

A delegação concede direitos de execução a esse código, e o titular não recebe qualquer notificação de alteração. Um destino atualizável significa que quem pode atualizá-lo detém poder de execução sobre todas as contas que lhe delegam; um destino imutável pelo menos fixa antecipadamente a superfície de ataque, onde pode ser auditada. A exposição de segurança aumenta se o código delegado puder mudar após a autorização.

Três critérios — código imutável, sem proxy e implementação reproduzível — tornam-se quatro verificações num explorador de blocos que carteiras e programadores devem realizar antes de conceder delegação:

  1. Ler os espaços de implementação e de administrador: um espaço EIP-1967 diferente de zero que comece por 0x360894 indica um proxy ou um percurso de atualização.

  2. Comparar o bytecode on-chain com o código-fonte verificado, confirmando que os argumentos do construtor e o bytecode implementado correspondem.

  3. Procurar selfdestruct e delegatecall, confirmando que nenhuma ramificação pode eliminar o código ou encaminhar a execução para outro local.

  4. Recalcular o endereço CREATE2 a partir do initcode e do salt, confirmando que o implementador não pode substituir outro contrato num endereço diferente.

Quais são os riscos da delegação EIP-7702?

O risco encontra-se em três áreas: erros no delegado, semântica de conta que a delegação altera e a irreversibilidade de uma assinatura única — uma contrapartida de segurança tanto quanto uma atualização funcional, sendo a principal preocupação o amplo âmbito do código que pode controlar a conta após a concessão da autorização.

Risco Gatilho Consequência e resposta
O delegado tem um erro Percursos de chamada ou levantamento arbitrários Os ativos podem ser drenados; delegar apenas a contratos auditados
As transferências simples revertem Sem receive() nem fallback() As entradas de ETH falham; encaminhar pagamentos através de chamadas com calldata
Colisão de armazenamento Implementações diferentes ao longo do tempo O armazenamento desatualizado é interpretado incorretamente; verificar a disposição dos espaços antes de mudar
chain_id definido como 0 ID da cadeia definido como 0 ao assinar A assinatura é válida noutro local; assinar por cadeia
A premissa tx.origin deixa de se verificar Proteção contra reentrância em msg.sender == tx.origin O código pode executar-se a meio da pilha; utilizar um bloqueio de reentrância

A linha tx.origin tem o maior raio de impacto. Uma conta delegada pode executar código dentro da pilha de chamadas, pelo que msg.sender == tx.origin deixa de significar que o chamador não tem código, e as proteções baseadas nessa comparação deixam de proteger; bloqueios nonReentrant ou de armazenamento transitório não dependem da identidade do chamador.

Na prática, se as carteiras não apresentarem claramente os detalhes da autorização, os utilizadores podem aprovar acessos que não pretendiam analisar. As orientações EIP-7702 na documentação Pectra enumeram esta situação separadamente.

Um chain_id de 0 alarga a terceira categoria: a mesma assinatura é válida noutras cadeias EVM, pelo que uma conta pode receber código numa cadeia que o seu titular nunca considerou. Os dispositivos de assinatura muitas vezes omitem o ID da cadeia, e é aí que se encontra a contrapartida associada a ativar a delegação numa carteira fria.

Como verificar e revogar uma delegação?

A verificação requer uma leitura de código: eth_getCode a devolver 0x significa que não existe delegação, 23 bytes iniciados por 0xef0100 significam que a conta é uma conta detida externamente delegada, e qualquer outro bytecode significa que é uma conta de contrato.

A delegação é um estado ao nível da cadeia, pelo que um endereço pode estar delegado numa cadeia e inalterado noutra, e cada cadeia requer a sua própria verificação; os últimos 20 bytes correspondem ao delegado, e uma carteira ou plataforma pode automatizar estas verificações entre cadeias, mantendo registos de verificações de estado ou alterações para auditoria e monitorização.

Para uma análise manual rápida, verificar e revogar uma delegação explica o procedimento.

A revogação ocorre dentro da carteira: assinar uma nova autorização com o campo de endereço definido como zero e o nó elimina o hash do código, devolvendo a conta a uma EOA simples, enquanto as dApps externas geralmente não podem fazê-lo pelo titular; se as equipas das carteiras suportarem fluxos de revogação, quaisquer pedidos para atuar em nome de um titular devem ainda exigir a aprovação do próprio titular.

A revogação remove o código delegado, mas não remove aprovações anteriores de contratos inteligentes nem outros acessos já concedidos a aplicações, e as notas de delegação de EOA da OpenZeppelin estabelecem esse limite.

Resumo

O EIP-7702 dá programabilidade a uma EOA com uma assinatura: o endereço e a chave mantêm-se, o campo de código aponta para um delegado e a execução decorre no próprio contexto da conta.

O preço é a alteração da semântica e uma permissão duradoura: os pagamentos recebidos simples podem falhar, tx.origin deixa de ser uma EOA, uma assinatura com chain_id de 0 funciona entre cadeias e a revogação elimina apenas o código.

Perguntas frequentes

O EIP-7702 transforma a minha carteira numa multisig?

Não. A delegação altera apenas o campo de código, e as assinaturas continuam a provir da chave privada original, pelo que um titular de chave única pode realizar transações de forma independente e pode substituir a delegação com uma nova autorização. Um delegado que exija múltiplas assinaturas também pode ser contornado por essa chave.

Como posso verificar se a minha carteira está delegada ao abrigo do EIP-7702?

Chamar eth_getCode no endereço. Um retorno de 0x significa que não existe delegação; 23 bytes iniciados por 0xef0100 significam que está delegada, com os últimos 20 bytes a identificar o delegado; outro bytecode significa uma conta de contrato.

A delegação é registada por cadeia, pelo que é necessário verificar cada uma, e as carteiras ou os sistemas de administração podem manter registos dessas verificações para análise. Em suma, a resposta pode variar apenas nos detalhes da interface entre carteiras, mas a verificação de código subjacente é a mesma.

Como revogar uma delegação EIP-7702?

Assinar uma nova autorização com o campo de endereço definido como zero dentro da carteira, e o nó elimina o hash do código quando a validação é concluída. Apenas o titular da conta pode assiná-la, e as dApps externas geralmente não podem atuar em seu nome.

Uma delegação caduca e as aprovações anteriores de tokens sobrevivem à revogação?

Uma delegação não tem caducidade e mantém-se ativa até ser substituída ou revogada. A revogação elimina apenas o código, deixando o armazenamento, as aprovações ERC-20 e as assinaturas Permit inalterados.

A minha chave nunca foi exposta — uma autorização EIP-7702 maliciosa ainda pode drenar a conta?

Sim. A assinatura é uma transferência de autoridade: com ela, um atacante pode escrever uma delegação que aponta para um contrato malicioso e obter amplo acesso à conta, movendo ativos sem nunca tocar na chave privada.

Verificar o ID da cadeia e o endereço de destino na tupla e assinar apenas para contratos imutáveis; as equipas das carteiras devem também verificar a função do signatário antes de conceder aprovações internas relacionadas com delegação em nome de uma organização.

Autor: Jayne
Exclusão de responsabilidade

* As informações não se destinam a ser e não constituem aconselhamento financeiro ou qualquer outra recomendação de qualquer tipo oferecido ou endossado pela Gate.

* Este artigo não pode ser reproduzido, transmitido ou copiado sem fazer referência à Gate. A violação é uma violação da Lei de Direitos de Autor e pode estar sujeita a ações legais.

Artigos relacionados

Pendle vs Notional: análise comparativa dos protocolos DeFi de retorno fixo
Intermediário

Pendle vs Notional: análise comparativa dos protocolos DeFi de retorno fixo

A Pendle e a Notional posicionam-se como protocolos líderes no setor de retorno fixo DeFi, a explorar mecanismos distintos para a geração de retornos. A Pendle apresenta funcionalidades de retorno fixo e negociação de rendimento através do modelo de divisão de rendimento PT e YT, enquanto a Notional possibilita aos utilizadores fixar taxas de empréstimo através dum mercado de empréstimos com taxa de juros fixa. De forma comparativa, a Pendle adequa-se melhor à gestão de ativos de retorno e à negociação de taxas de juros, enquanto a Notional se foca em cenários de empréstimos com taxa de juros fixa. Ambas contribuem para o avanço do mercado DeFi de retorno fixo, destacando-se por abordagens distintas na estrutura dos produtos, no design de liquidez e nos segmentos-alvo de utilizadores.
21-04-2026 07:34:06
O que são PT e YT na Pendle? Uma análise detalhada do mecanismo de divisão de retorno
Intermediário

O que são PT e YT na Pendle? Uma análise detalhada do mecanismo de divisão de retorno

PT e YT são os dois tokens de rendimento fundamentais no protocolo Pendle. O PT (Principal Token) reflete o capital de um ativo de rendimento, sendo habitualmente negociado com desconto e resgatado pelo valor nominal na data de vencimento. O YT (Yield Token) confere o direito ao rendimento futuro do ativo e pode ser negociado para captar retornos antecipados. Ao dividir os ativos de rendimento em PT e YT, a Pendle estabeleceu um mercado de negociação de rendimentos no universo DeFi, permitindo aos utilizadores garantir retornos fixos, especular sobre variações do rendimento e gerir o risco associado ao rendimento.
21-04-2026 07:18:16
De que forma opera o sistema de governança do Lido DAO? Uma explicação sobre a função do Token LDO
Principiante

De que forma opera o sistema de governança do Lido DAO? Uma explicação sobre a função do Token LDO

A Lido DAO (LDO) é a organização autónoma descentralizada responsável pela gestão do protocolo de staking líquido Lido. Os titulares de Token LDO votam nos parâmetros do protocolo, nas estratégias de operação dos nodos e na orientação geral do desenvolvimento do ecossistema. Como infraestrutura fundamental no setor de staking líquido, o mecanismo de governança da Lido DAO influencia diretamente a segurança do protocolo, a estrutura de retorno e a trajetória de crescimento a longo prazo.
03-04-2026 13:37:46
Análise aprofundada da tokenomics do stETH: Como a Lido distribui os retornos de staking e capta valor
Principiante

Análise aprofundada da tokenomics do stETH: Como a Lido distribui os retornos de staking e capta valor

stETH é um token de staking líquido emitido pela Lido DAO (LDO). Este token representa os ativos ETH em staking dos utilizadores e os retornos de staking gerados na rede Ethereum, permitindo simultaneamente que os utilizadores continuem a utilizar os seus ativos no ecossistema DeFi durante o período de staking. A estrutura de tokenomics da Lido DAO baseia-se em dois ativos centrais: stETH e LDO. O stETH serve sobretudo para captar os retornos de staking e garantir liquidez, enquanto o LDO assegura a governança do protocolo e a gestão dos principais parâmetros. Em conjunto, estes ativos constituem o modelo dual-token do protocolo de staking líquido.
03-04-2026 13:39:03
0x Protocol vs Uniswap: diferenças entre protocolos de Livro de ordens e o modelo AMM
Intermediário

0x Protocol vs Uniswap: diferenças entre protocolos de Livro de ordens e o modelo AMM

Tanto o 0x Protocol como o Uniswap foram desenvolvidos para negociação descentralizada de ativos, mas cada um recorre a mecanismos de negociação distintos. O 0x Protocol assenta numa arquitetura de livro de ordens off-chain com liquidação on-chain, agregando liquidez de múltiplas fontes para disponibilizar infraestrutura de negociação a carteiras e DEX. O Uniswap, por outro lado, utiliza o modelo de Formador Automático de Mercado (AMM), permitindo trocas de ativos on-chain através de pools de liquidez. A diferença fundamental entre ambos está na organização da liquidez. O 0x Protocol centra-se na agregação de ordens e no encaminhamento eficiente de negociações, sendo ideal para garantir suporte de liquidez essencial a aplicações. O Uniswap, por sua vez, recorre a pools de liquidez para proporcionar serviços de troca direta aos utilizadores, afirmando-se como uma plataforma robusta para execução de negociações on-chain.
29-04-2026 03:48:20
Quais são as diferenças fundamentais entre Solana (SOL) e Ethereum? Comparação da arquitetura de blockchain pública
Intermediário

Quais são as diferenças fundamentais entre Solana (SOL) e Ethereum? Comparação da arquitetura de blockchain pública

Este artigo examina as principais diferenças entre Solana (SOL) e Ethereum, considerando o design da arquitetura, os mecanismos de consenso, as vias de escalabilidade e a estrutura dos nós, estabelecendo um modelo claro e reutilizável para a comparação de blockchains públicas.
24-03-2026 11:58:38