Wallet safety / Updated 2026-09-24
The One-Click Wallet Upgrade: What an EIP-7702 Delegation Signature Actually Hands Over
Your wallet may genuinely offer a smart-account upgrade, and a drainer asks for the same signature. What a delegation authorises, why chain id zero matters, and the one question that decides whether you revoke or abandon the address.
How this guide is checked
Official sources first, no wallet connection, no guaranteed returns.
Reviewed on 2026-09-24 by WildWildCrypto Safety Desk. Method: Human editorial review with official-source checks, affiliate-disclosure checks, and no-financial-advice checks.
Publisher: WildWildCrypto Editorial. Corrections go through the contact page. We do not ask for seed phrases or tell you what to buy.
EIP-7702 delegation safety matters because You have learned to read approval prompts, check spend limits and revoke old permissions, and then your wallet itself offers to upgrade your account in one click — which is either a genuine improvement you should accept or the most complete handover in crypto, and nothing in the prompt tells you which.
This guide explains exactly what an EIP-7702 authorisation grants, the pathways by which the signature gets triggered, why one detail in the tuple makes it valid on every chain at once, and the single question that decides whether a delegation you discover can be cleared or means the address is finished.
You will learn what the delegation indicator written to your own account does, the spec's own warning about delegate contracts, why the widely quoted 97 percent figure describes a different problem than the headlines implied, how to verify a delegate before signing, and why revoking is sometimes the wrong move.
A real upgrade and a total takeover ask for the same thing
The advice that would be easiest to give here is wrong, so it is worth disposing of first: never sign a delegation is not usable guidance, because legitimate wallets now ask you to.
The reason they ask is genuine. Ethereum's own roadmap documentation is blunt about the ordinary account type most people use, noting that if you lose your keys they cannot be recovered, that stolen keys give thieves instant access to all the funds in an account, and that seed phrase phishing is one of the most common scams while securing seed phrases is awkward even for expert users. Smart-account features are the intended answer — recovering your account if you lose the keys, sharing account security across trusted devices or individuals, and requiring multiple signatures for high-value transactions. EIP-7702, now final in the specification, is what lets an ordinary account reach those features without moving to a new address. That is why your wallet's upgrade prompt is probably exactly what it says it is.
The problem is structural rather than anyone's carelessness. The same signature that enables recovery and batching points your account at someone else's code, and a phishing site can request it in the same shape — Relay describes the packaging plainly: scammers trick users into signing malicious delegations, often on fake sites disguised as free mints or giveaways.
So the question is never whether to sign a delegation. It is which contract you are delegating to, and whether the thing asking has any business asking.
Checklist
- Legitimate wallets now offer smart-account upgrades built on EIP-7702.
- Ethereum.org: lost keys cannot be recovered and stolen keys give instant access to all funds.
- Smart accounts exist to add recovery, batching and multi-signature requirements.
- The same signature enables those features and hands control to a contract.
- Relay: malicious delegations are commonly disguised as free mints or giveaways.
- Attack framings include wallet upgrade, security enhancement and AI assistant authorisation.
- The question is which delegate address, and who is asking — never whether delegations are bad.
What you are actually signing
Precision matters here, because the mechanism is genuinely different from every other prompt you have been trained to read.
A token approval grants a contract permission to move one token, up to some limit. A permit signature authorises a specific transfer off-chain. An EIP-7702 authorisation does neither. The specification describes a tuple of chain id, address, nonce and signature components, and the effect of submitting it is that the delegation indicator 0xef0100 followed by that address is written to the authorising account's code. Your ordinary address stops being codeless, and from that point code execution against your account follows the pointer.
Read what that means without softening it. The contract at the other end is not permitted to do a thing; it becomes the behaviour of your account. There is no per-token limit to exceed, no amount to cap and no expiry to wait out. The specification's own Security Considerations section states the consequence directly: a poorly implemented delegate can allow a malicious actor to take near complete control over a signer's EOA. That is written about a merely sloppy delegate; a deliberately hostile one is the same mechanism pointed on purpose.
Relay describes what the hostile version does in practice, and the detail worth sitting with is that it does not require the attacker to keep working. The malicious contract can auto-drain tokens as soon as they arrive and instantly forward out any new balance, so the drain happens without the attacker submitting a transaction at all. This is also why the delegation outlives the balance — an emptied address with a hostile delegate is not a spent problem but a permanent one, which is the mechanism behind money vanishing the moment a compromised wallet is refilled.
The one piece of good news is that the pointer is clearable. If the address in a later authorisation is the zero address, the spec instructs that the delegation indicator is not written and the account's code is cleared by resetting its code hash to the empty code hash. Whether that helps you depends on the sections that follow.
Checklist
- An approval permits a contract to move a token; a delegation makes a contract your account's behaviour.
- The spec writes 0xef0100 plus the delegate address into your own account's code.
- There is no spend limit, no per-token scope and no expiry on a delegation.
- Spec Security Considerations: a poorly implemented delegate can give near complete control over the EOA.
- Relay: a malicious delegate can auto-drain funds on arrival with no attacker transaction.
- A hostile delegation persists after the balance is zero.
- A delegation to the zero address clears the indicator and resets the code hash.
How the signature gets triggered, and why chain id zero should stop you
The academic treatment separates what a user controls from what they do not. The analysis by Minfeng Qi, Qin Wang, Ruiqiang Li, Tianqing Zhu and Shiping Chen states the core claim without hedging: instead of deceiving users into signing individual transactions, an attacker can induce a victim to sign a single authorisation tuple that grants unconditional and persistent execution control over the account.
Through controlled experiments they identify three reliable trigger pathways — user-driven, attacker-driven and protocol-triggered — and note that each can lead to full account takeover and complete asset drainage. The reason to know the list is that only the first involves you doing something. The paper also describes an extended surface in which ERC-4337's EntryPoint pipeline enables remote and repeated activation of the delegated code without further victim involvement. The window of regret people imagine they have, between signing and consequence, is not reliably there.
Then the detail most user-facing writing omits. The tuple's first field is a chain id, and its purpose is to confine the authorisation to one network. The specification documents the escape hatch: when universal deployment is preferred, simply set chain ID to 0. That is a legitimate convenience for deploying the same smart account everywhere. It also means one signature can be valid on every EVM network at once, which the paper characterises as a chain-agnostic authorisation mode permitting replay-like compromises across independent networks.
So a chain id of zero is not a neutral footnote — it is the difference between granting control of one account on one chain and granting it everywhere your key exists. If your wallet shows that field, read it. If a request asks for universal scope and cannot explain why, that is the answer.
Checklist
- Qi and colleagues: one tuple can grant unconditional, persistent execution control.
- Three trigger pathways documented: user-driven, attacker-driven and protocol-triggered.
- ERC-4337's EntryPoint can allow remote, repeated activation without further victim action.
- There is no dependable gap between signing and the drain.
- The chain id field is meant to confine an authorisation to one network.
- Spec: setting chain ID to 0 makes the authorisation universal across chains.
- Treat a zero chain id as a request for control everywhere your key exists.
The 97 percent figure does not mean what the headlines said
If you searched this topic in the last year you met a startling number, reported in a way that made the wrong thing frightening.
Wintermute's research team found that over 97 percent of all EIP-7702 delegations were authorised to multiple contracts using the same exact code. They nicknamed the reused bytecode CrimeEnjoyor and described its function precisely: these are sweepers, used to automatically drain incoming ETH from compromised addresses. The operators spent approximately 2.88 ETH to authorise around 79,000 addresses, one address accounting for over half.
Read the word compromised, because it carries the whole distinction. A sweeper delegation is set by someone who already has the key. It is not how the wallet was lost; it is automation applied afterwards to catch anything arriving later — which is why mass-authorising 79,000 addresses for under three ETH is cheap, and why CoinDesk noted the attackers were making very little from it.
Wintermute itself then pushed back on the resulting headlines, saying some had misrepresented the core message and stating the position plainly: EIP-7702 is not flawed, and it is safe to use in retail wallets. Keep that qualifier, because it carries the reasoning — a trusted wallet delegates to its own audited contracts, so its users are not the ones authorising CrimeEnjoyor. The 97 percent measures already-compromised wallets, not the odds that signing a prompt in a real wallet will ruin you.
The risk that is genuinely about your judgement is the quieter one: being persuaded to sign the tuple yourself, with your key never leaving your possession. Scam Sniffer's 2025 review describes that category as emerging shortly after the Pectra upgrade, with attackers leveraging account abstraction to bundle multiple malicious operations into single signatures, and attributes 2.54 million dollars of losses to two major EIP-7702 batch-signature incidents in one month. Keep it in proportion: the same review puts total phishing losses for the year at 83.85 million dollars across 106,106 victims, down 83 percent, with the largest single theft coming from a permit signature rather than a delegation. A real and growing vector, not the end of wallet safety.
Checklist
- Wintermute: over 97 percent of delegations pointed at contracts running identical reused code.
- Those contracts are sweepers draining incoming ETH from already-compromised addresses.
- Roughly 2.88 ETH authorised around 79,000 addresses — a dragnet over stolen keys.
- CoinDesk reported the operators profited little from the campaign.
- Wintermute's own follow-up: EIP-7702 is not flawed and is safe to use in retail wallets.
- A trusted wallet delegates only to its own audited contracts.
- The percentage measures compromised wallets, not your odds of being phished.
- Scam Sniffer attributed 2.54 million dollars to two EIP-7702 batch-signature incidents in one month.
- Context: total 2025 phishing losses were 83.85 million dollars, down 83 percent year over year.
Two reputable sources disagree here, and the disagreement is instructive
Read around this subject and you will hit a genuine conflict between careful sources, worth surfacing rather than smoothing over. Revoke.cash argues the draining fear is overblown, in strong terms: while it is true that EIP-7702 can be used to facilitate this, it is only possible if your seed phrase is compromised — and if your seed phrase is compromised, then your entire wallet is already lost, so EIP-7702 is not the cause of the loss in the first place. Relay points the other way, describing users tricked into signing malicious delegations on fake sites.
Both are true of different populations. Revoke.cash's claim holds for the sweeper case, the bulk of delegations by count, where the key theft came first and the delegation is only automation bolted on afterwards. It does not hold as a general statement, because the research documents the other route: signing the tuple yourself, with the key never leaving your possession — what Scam Sniffer's batch-signature incidents describe. So most malicious delegations follow a compromise rather than cause one, and a minority are the compromise.
They also disagree on revocation, where the honest answer is that it varies: Revoke.cash says you revoke inside your wallet application, Relay says most trusted wallets do not allow it through their interface. Check your own wallet's settings rather than assuming either.
Checklist
- Revoke.cash: draining this way is only possible if the seed phrase is compromised.
- Relay: users are tricked into signing malicious delegations on fake sites.
- Both are true of different populations, which is why they appear to conflict.
- Sweeper delegations follow a key compromise — the bulk of delegations by count.
- User-signed phishing is the minority case where the delegation is the compromise.
- Whether you can revoke in-wallet varies by wallet — check yours rather than assuming.
Before you sign, and the question that decides what to do after
One tempting shortcut has to be discarded first: a delegation prompt appearing while you use a dapp is not itself suspicious. Revoke.cash is explicit that wallets will prompt you automatically to enable EIP-7702 when you use a dapp that supports batch transactions, giving its own batch-revoke feature as the example. Treating every dapp-triggered prompt as an attack would teach you to distrust the ordinary path.
What distinguishes the two is narrower. Did you initiate the action the prompt belongs to — a batch you asked for, an upgrade you opened — or did the request simply appear? Is the delegate address a vendor's published, widely-used implementation you can look up, rather than a contract with no history? And what is the chain id: one network, or all of them?
Then the check that costs nothing: a free mint, a giveaway or an eligibility check has no reason to alter what your account is. Batching a transaction you requested is a function; changing your wallet's nature to collect a reward is the bait.
Now the part that matters most, because it is where good instincts lead people wrong. If you discover a delegation you do not recognise, the intuitive move is to revoke it. But Relay names the trap directly: attempting to revoke may create a false sense of security, and unknown delegations usually mean your keys or seed phrase have already been compromised — so the recommendation is to stop using that wallet and move to a new one.
The question that decides your response is simply: do you remember signing it? If you knowingly signed one and later want it gone, clearing it is legitimate housekeeping, and you can check your address on a block explorer's delegations view or in your wallet's smart-account settings. If you do not remember signing it, revocation treats the symptom — something set that pointer using your key, and an address whose key is in someone else's hands is not repaired by tidying its code. Move to a wallet created on a device you trust, transfer the most valuable assets first and the gas token last, and remember that token approvals granted from the old address persist independently of all of this.
Checklist
- Ask whether you initiated the request at all.
- Revoke.cash: external dapps generally cannot set or revoke these delegations — the real flow is in-wallet.
- Look up the delegate contract; a vendor implementation is published and widely used.
- Check the chain id for one network versus universal scope.
- No mint, giveaway or eligibility check needs to change what your account is.
- Relay: unknown delegations usually mean the key is already compromised.
- If you did not sign it, abandon the address rather than revoking and continuing.
- Move value out highest-first, gas token last, and handle old token approvals separately.
Authority sources used
Outbound links are included for verification and entity authority, not decoration.
- EIP-7702: Set Code for EOAsEthereum Improvement Proposals
- EIP-7702 Phishing Attack (Qi, Wang, Li, Zhu, Chen)arXiv preprint 2512.12174
- Post-Pectra, Malicious Ethereum Contracts Are Trying to Drain Wallets, Wintermute SaysCoinDesk
- Clarification on reporting around our EIP-7702 findingsWintermute Research
- Malicious EIP-7702 Delegations and How to Stay SafeRelay Support Center
- What Is EIP7702?Revoke.cash
- Scam Sniffer 2025: Crypto Phishing Losses Fall 83% to $84 MillionScam Sniffer
- Account abstractionEthereum.org
FAQ
My wallet is asking me to upgrade to a smart account. Should I say no?
Not on principle — this is a case where blanket refusal costs you real protections. The features EIP-7702 unlocks are the ones Ethereum's own documentation describes as answers to genuine problems with ordinary accounts: that lost keys cannot be recovered, that stolen keys give instant access to all funds, and that securing a seed phrase is awkward even for experts. Smart-account capabilities such as account recovery, sharing security across trusted devices and requiring multiple signatures for high-value transactions are worth having. What matters is narrower than provenance alone, and one obvious-sounding rule is wrong: a prompt appearing while you use a dapp is not a red flag by itself. Revoke.cash states that wallets will prompt you automatically to enable EIP-7702 when you use a dapp that supports batch transactions, citing its own batch-revoke feature — so dapp-triggered prompts are the normal path, not the attack. The distinguishing questions are whether you initiated the action the prompt belongs to, whether the delegate address is a vendor's published and widely-used implementation you can look up, and whether the chain id covers one network or all of them. Decline anything that cannot tell you plainly which contract it is pointing your account at.
How is this different from a token approval I could just revoke?
It is a different category of permission, and the habits you built for approvals do not transfer cleanly. An approval says a named contract may move up to some amount of one specific token, which is why capping limits and revoking stale permissions works — you are managing a list of scoped permissions. A delegation does not join that list. The specification describes writing a delegation indicator, 0xef0100 followed by the delegate address, into your own account's code, so execution against your account follows that pointer. There is no token scope to narrow, no ceiling to lower and no expiry. Relay describes the practical result: a malicious delegate can auto-drain tokens as soon as they arrive and instantly forward out any new balance, without the attacker submitting a transaction. The specification does allow clearing the pointer by authorising the zero address, so it is technically revocable — but the reason to revoke an approval is that a contract you once trusted still has scoped access, while the usual reason an unexplained delegation exists is that someone has your key, and those call for very different responses.
Is EIP-7702 itself dangerous? I read that 97 percent of delegations are malicious.
That figure is real and widely misread, and the correction is worth carrying. Wintermute's research team found that over 97 percent of all EIP-7702 delegations were authorised to contracts running the same exact reused code, which they nicknamed CrimeEnjoyor, and described their function as sweepers used to automatically drain incoming ETH from compromised addresses. The operative word is compromised. Those delegations are set by attackers who already hold the private key — the automation applied after a wallet was lost by some other means, to capture anything deposited later. It is cheap at scale, which is why roughly 2.88 ETH authorised around 79,000 addresses, and CoinDesk reported the operators earned very little from it. Wintermute's own follow-up said some headlines had misrepresented the core message and stated that EIP-7702 is not flawed and is safe to use in retail wallets — the qualifier mattering because a trusted wallet delegates only to its own audited contracts. So the percentage tells you how many already-stolen wallets have a sweeper attached; it does not tell you the odds that using the feature will hurt you. The risk that depends on your judgement is the separate one of being persuaded to sign an authorisation yourself.
I found a delegation on my address that I do not remember approving. Do I revoke it?
Treat the memory gap as the finding, not the delegation. The specification does let you clear a delegation by authorising the zero address, and for a delegation you knowingly set and now want removed, that is ordinary housekeeping. But Relay's guidance is explicit about the other case: most trusted wallets do not allow revoking delegations through their interface, attempting to revoke may create a false sense of security, and unknown delegations usually mean your keys or seed phrase have already been compromised — with the recommendation being to stop using that wallet and move to a new one. The logic is hard to argue with. Something wrote that pointer using your key. Clearing the code does not remove whoever holds the key, and they can simply set it again. So act as though the key is exposed: create a wallet on a device you have reason to believe is clean, move the most valuable assets out first and the gas token last so each transfer stays funded, record transaction hashes as you go, and treat the old address as permanently unusable rather than repaired. Also deal separately with any outstanding token approvals granted from it, because those persist independently.
Does a hardware wallet protect me from this?
It protects the key and it does not make the decision for you, and the distinction is the whole point. A hardware wallet keeps the private key on a device where browser-resident code cannot read it, which removes the entire category that produces most sweeper delegations in the first place — those are set by attackers who already have the key, and a key that never enters a general-purpose machine is far harder to obtain. That is a genuine and large benefit. What a hardware wallet cannot do is refuse a signature you approve. If you confirm an authorisation tuple on the device, the delegation is set with the full authority of your key, and the paper by Qi and colleagues notes that once the tuple is signed the ERC-4337 EntryPoint pipeline can enable remote and repeated activation of the delegated code without further involvement from you. So the device raises the floor considerably and the remaining work is reading what you approve: whether you started the request, what the delegate address is, and whether the chain id confines the authorisation to one network or grants it everywhere.
What does chain id zero mean in a signing request?
It means the authorisation is not confined to one network, and it is probably the single most useful thing to look for in these prompts. The authorisation tuple includes a chain id whose purpose is to restrict the authorisation's scope so it cannot be replayed on other chains. The specification also documents the deliberate exception: when universal deployment is preferred, simply set chain ID to 0. For a wallet vendor deploying the same smart-account implementation across many networks, that is a reasonable convenience. For you as a signer it means one signature can take effect on every EVM chain where your key exists, which the research by Qi and colleagues describes as a chain-agnostic authorisation mode permitting replay-like compromises across independent networks. The practical rule is that universal scope needs a reason. A vendor upgrade flow that explains it is doing exactly that is one thing; an unexpected request for authorisation valid everywhere, arriving from a site you just connected to, is asking for far more than any single interaction should need.