EIP-7702 Wallet Security and Recovery

How to Revoke EIP-7702 Delegation Safely Before It Controls Your Wallet

Knowing how to revoke EIP-7702 delegation is now part of modern EVM wallet security because a delegated externally owned account can execute smart-contract logic while retaining the same familiar wallet address. Revocation is not the same as disconnecting a website, reducing an ERC-20 allowance, or cancelling an ordinary permit. At protocol level, EIP-7702 delegation is removed by applying a new valid authorization whose delegation target is the zero address, then confirming that the account no longer contains the EIP-7702 delegation designator on every relevant chain.

TL;DR

  • EIP-7702 lets an externally owned account attach persistent delegated smart-contract code while keeping the same address and original ECDSA key.
  • A delegation is not an ERC-20 approval, wallet connection, Permit signature, NFT operator approval, or ordinary dApp session. Clearing one does not automatically clear the others.
  • An EIP-7702 delegated account contains a 23-byte delegation designator whose bytes begin with 0xef0100 followed by the 20-byte delegate address.
  • You can inspect account code through an explorer that understands EIP-7702, through a compatible wallet interface, or directly with the standard JSON-RPC method eth_getCode.
  • The EIP-7702 specification defines revocation by authorizing the null address 0x0000000000000000000000000000000000000000. A valid authorization to that address clears the account code rather than writing another delegation pointer.
  • Do not invent or handcraft a raw revocation transaction unless you understand Type 4 transactions, authorization tuples, authority nonces, chain IDs, and your wallet or client’s exact signing flow. Wallet support is implementation-specific.
  • A chain-specific authorization applies only to its specified chain. An authorization with chain_id = 0 can be valid across chains when the other EIP-7702 validity checks, including the authority nonce, are satisfied.
  • Delegation state is still stored separately on each chain. Clearing the code on Ethereum does not automatically clear delegation on Base, Arbitrum, Optimism, BNB Chain, Polygon, or another EVM network.
  • A successful zero-address reset increments the authority nonce on that chain, helping make an older authorization using the previous nonce invalid there. It does not change the nonce on other chains.
  • If the original private key is compromised, revocation is not sufficient. The attacker can potentially sign a new authorization using the current valid nonce. Move assets to a new wallet generated from uncompromised keys and retire the exposed account where practical.
  • Clearing EIP-7702 code does not automatically remove ERC-20 allowances, NFT operator approvals, signed permits, session keys created by other systems, compromised browser extensions, or malicious token approvals.
  • Use the Transaction Decoder to understand a proposed revocation or suspicious prior transaction before signing, then review the address with Wallet Risk Scanner and confirm code, approvals, balances, and activity afterward.
If the private key may be compromised Treat revocation as containment, not complete recovery.

EIP-7702 deliberately leaves the original EOA private key in control. If an attacker possesses that key, clearing the current delegation does not prevent the attacker from signing another valid delegation or ordinary transaction. Protect remaining assets first, revoke unrelated permissions where useful, create a fresh wallet from new entropy, and preserve the old address only as an investigation target rather than trusting it again with significant value.

For prerequisite reading, review TokenToolHub’s EIP-7702 guide for the account-abstraction model behind delegation. The crypto approval risks guide explains why token permissions remain a separate security layer, while the signature replay guide provides useful background for understanding why chain binding and nonces matter.

What EIP-7702 delegation changes about an ordinary wallet

Before EIP-7702, the simplified distinction was straightforward: an externally owned account was controlled by a private key and normally had no executable code, while a smart-contract account contained code and behaved according to that code. EIP-7702 deliberately weakens that old boundary.

Ethereum’s Pectra upgrade introduced Type 4 transactions containing an authorization list. An authorization tuple contains a chain identifier, target address, authority nonce, and signature components. When a tuple passes the protocol checks, the authorizing EOA’s account code is set to a special delegation designator.

The designator is not a full copy of the delegate contract. It is a pointer. The EIP defines it as the three-byte prefix 0xef0100 followed by the 20-byte address of the contract whose code should execute in the EOA’s context.

This matters because applications calling the delegated EOA can execute code from the designated contract while state and assets belong to the EOA address itself. The user does not migrate to a completely different wallet address. That is one reason EIP-7702 can enable smart-account-style features such as batching, gas sponsorship, permission systems, recovery logic, and other wallet functionality.

The delegation persists

EIP-7702 delegation is not automatically erased when the transaction that installed it finishes. Persistence is an intentional part of the specification. Once valid delegation code has been assigned to the account, it remains until another valid EIP-7702 authorization replaces it or clears it.

The original private key remains powerful

The account does not stop being controlled by its original ECDSA key simply because delegated code is present. Ethereum’s EIP-7702 guidance explicitly warns developers that the original private key retains control after delegation. This distinction is crucial during recovery: a malicious delegate and a compromised key are different incidents.

The delegated code can be highly privileged

The delegated implementation can execute within the account’s context. That is why wallets should be extremely selective about delegation targets. Treat an unknown EIP-7702 authorization as a high-impact wallet change, not as a routine dApp connection prompt.

The account nonce participates in authorization validity

EIP-7702 authorization tuples are bound to an authority nonce. During processing, the protocol verifies that the authority’s current nonce matches the nonce signed into the tuple. A valid tuple then increments the authority nonce. This gives EIP-7702 authorizations replay protection within the chain state, but cross-chain behavior requires more careful analysis when chain_id = 0 is used.

Delegation does not erase account storage

Changing delegation does not automatically wipe storage that may have been used by the previous delegated implementation. Ethereum’s implementation guidance warns about storage collisions when moving between delegation contracts. A zero-address reset clears the EIP-7702 code designator, but it should not be treated as a general account-state sanitization process.

Delegation is not the same as approval, permit, or wallet connection

One of the most dangerous recovery mistakes is clearing the wrong permission and assuming the wallet is secure. EIP-7702 delegation exists at the account-code layer. ERC-20 approvals exist in token-contract storage. NFT approvals exist in NFT contracts. Off-chain permits are signed messages interpreted by specific contracts. A website connection is usually only an application session exposing the public address and requesting signatures.

MechanismWhat changesTypical riskHow removal differs
EIP-7702 delegationThe EOA’s account code becomes a delegation designator pointing to executable smart-contract codeDelegated logic may exercise powerful control over the account’s behavior and assetsApply a new valid EIP-7702 authorization to the zero address or another trusted target
ERC-20 allowanceA token contract records how much a spender may transfer from the ownerApproved spender can move supported tokens within the allowanceChange the allowance in the token contract, commonly to zero
ERC-721 or ERC-1155 operatorAn NFT contract grants transfer authority over one or more assetsOperator may move NFTs covered by the permissionRevoke through the relevant NFT contract
Permit signatureAn off-chain signature can authorize a later on-chain permission or actionSignature may be submitted later if its nonce, deadline, domain, and other checks remain validDepends on the permit scheme, nonce, deadline and contract design
Website connectionThe dApp learns your public address and can request wallet actionsUser may later sign a dangerous transaction or messageDisconnecting usually removes the session, not blockchain permissions
Session key or wallet moduleSmart-account logic may authorize restricted secondary keys or modulesKey or module may retain scoped execution authorityMust be removed according to the wallet or delegate implementation

Disconnecting a dApp does not remove EIP-7702 code

A dApp connection is generally an interface-level relationship. If your account already contains an EIP-7702 delegation designator, clicking disconnect in a website or wallet connection list does not rewrite the account code.

Revoking token allowances does not revoke delegation

Reducing an ERC-20 allowance to zero removes that spender’s token permission. It does not clear the EOA’s account code. A compromised wallet may therefore require both actions.

Clearing delegation does not revoke token allowances

The inverse is also true. A successful EIP-7702 reset does not rewrite allowance values stored inside token contracts. If a malicious application previously obtained unlimited USDC, USDT, WETH, or another token allowance, that allowance may remain usable after the account’s delegation designator is cleared.

Old signatures need separate analysis

A signed permit, order, session authorization, or application-specific message can have its own replay protection. Whether it remains usable after an EIP-7702 reset depends on the specific contract and signature scheme. Review deadlines, nonces, domain separation, chain binding, spender identity, and cancellation mechanisms rather than assuming the delegation reset invalidates everything.

How to detect EIP-7702 delegated code

Before revoking anything, establish whether delegation is actually present and which contract it points to. Do this on every chain that matters to the wallet. The same address can have different account code and different nonces on Ethereum, Base, Arbitrum, Optimism, Polygon, BNB Chain, or another EVM network.

Method 1: use a wallet interface that explicitly recognizes EIP-7702

Some wallet applications and companion interfaces can detect delegated account code and display that a delegation is present. Ethereum’s guidance recommends that EIP-7702-aware wallet software notify users when delegation exists and may optionally provide a way to remove it.

Do not assume that every wallet uses the same wording. The feature may appear as delegation, smart account, account code, EIP-7702, account upgrade, smart features, or another product-specific label. More importantly, do not assume the absence of a UI indicator proves the code is absent.

Method 2: inspect the address through an EIP-7702-aware explorer

Explorers may expose an account’s code or indicate that the address delegates execution. Interfaces vary, so confirm the actual bytes or delegate target whenever possible.

A normal undelegated EOA typically has empty account code. An EIP-7702 delegated EOA stores the delegation designator, which is 23 bytes: the 0xef0100 prefix plus a 20-byte target address.

Method 3: query eth_getCode directly

The standard Ethereum JSON-RPC method eth_getCode returns the code stored at an address for a selected block. This is one of the cleanest ways to inspect whether a current account contains the EIP-7702 designator.

Read-only RPC example Check the address code at the latest block
curl -X POST YOUR_RPC_ENDPOINT \
  -H "Content-Type: application/json" \
  --data '{
    "jsonrpc":"2.0",
    "method":"eth_getCode",
    "params":[
      "0xYOUR_WALLET_ADDRESS",
      "latest"
    ],
    "id":1
  }'

This request is read-only. It does not sign a transaction, alter account state, or require your private key. Use an RPC endpoint for the exact chain being checked.

How to interpret the response

An undelegated EOA should normally return empty code, represented as 0x. An EIP-7702 delegation designator has the form below:

Delegated code format 3-byte prefix plus 20-byte target
0xef0100 + 20-byte delegate address

Example shape:

0xef01001234567890abcdef1234567890abcdef12345678

Do not treat every non-empty code result as EIP-7702. A normal smart contract contains different runtime bytecode. EIP-7702 is identifiable by the exact delegation-designator prefix and expected length.

Extract the delegate address

After the six hexadecimal characters following 0x that encode ef0100, the remaining 40 hexadecimal characters identify the target contract address. Investigate that address separately.

Check whether the target has verified source, whether it is the implementation your wallet intended to use, whether the contract is immutable or upgradeable, who controls it, whether security reviews exist, and whether its address matches official wallet documentation.

Check a historical block when investigating an incident

The block parameter in eth_getCode lets a compatible archival provider query account code at a historical block. This can help establish when delegation existed relative to a suspicious transaction, although historical-state support depends on the RPC provider.

Check the account nonce

Use a wallet, explorer, or eth_getTransactionCount to inspect the current account nonce on the relevant chain. Nonce analysis is especially important when determining whether a previously signed authorization can still satisfy EIP-7702’s nonce check.

Do not expose your key to inspect delegation

No legitimate code inspection requires a seed phrase or private key. Anyone asking you to import your recovery phrase into a delegation checker is creating a larger security problem than the delegation itself.

How EIP-7702 revocation works at protocol level

The EIP-7702 specification contains an explicit clearing mechanism. During authorization processing, the protocol normally writes 0xef0100 || address to the authority account. If the authorization’s target address is the zero address, the protocol does not write a delegation designator. Instead, it clears the account’s code by resetting the code hash to Ethereum’s empty-code hash.

Revocation = valid EIP-7702 authorization + zero-address delegation target + correct authority nonce + valid chain scope

The zero address is the protocol-level reset target

The null target is:

Revocation target EIP-7702 null delegation
0x0000000000000000000000000000000000000000

This does not mean you should paste the zero address into an arbitrary wallet send form. The revocation must be represented as a valid EIP-7702 authorization processed inside a Type 4 transaction. An ordinary ETH transfer to the zero address is not a delegation reset and would instead destroy the transferred ETH.

The authorization must match the authority nonce

The protocol recovers the authority from the EIP-7702 authorization signature and checks that the authority’s current nonce equals the nonce encoded in the tuple. If it does not match, that tuple is skipped.

This is one reason a raw revocation procedure should not be copied blindly from a tutorial. The correct nonce depends on the current chain state and transaction construction. Wallet software implementing EIP-7702 should handle this sequencing rather than forcing ordinary users to handcraft authorization tuples.

The chain identifier must be valid

The authorization’s chain ID must either equal the current chain ID or be zero. A chain-specific authorization cannot simply be moved to another chain with a different identifier.

The account code must be empty or already delegated

EIP-7702 checks that the authority has either empty code or existing delegation code. The mechanism is designed for EOAs and accounts already using the EIP-7702 delegation-designator format.

A valid reset increments the authority nonce

After the valid authorization is applied, the authority nonce is increased by one. This matters because an older EIP-7702 authorization signed for the previous nonce will no longer satisfy the nonce check on that chain.

Authorization processing precedes transaction execution

The EIP specifies that the authorization list is processed before the execution portion of the Type 4 transaction begins. It also specifies that processed delegation changes are not rolled back merely because the subsequent execution portion of the transaction reverts.

This protocol detail can be useful for experts debugging a reset, but ordinary users should rely on a wallet or tooling flow that explicitly understands EIP-7702 rather than constructing a deliberately reverting transaction.

Revocation clears code, not the entire account

Your ETH balance, token balances, transaction history, account nonce, token allowances, and contract-held state are not erased. Any storage previously used under delegated execution can remain. Treat code clearing as one security operation inside a wider wallet review.

Safe EIP-7702 revocation workflow

The safest process is evidence-first: detect the delegation, identify its target, decide whether the private key is trustworthy, prepare a wallet-supported reset, decode what you are about to sign, confirm the resulting code, then review every other permission and chain that may remain exposed.

EIP-7702 Delegation Response Flow Detect account delegation, identify the delegate target, revoke through a valid zero-address authorization, confirm removal on every relevant chain, review approvals, and migrate assets when key compromise cannot be excluded. Delegation Response Flow Clearing the code is one stage. Chain coverage, approvals and key compromise determine whether recovery is complete. 1. Detect Check wallet UI, explorer and eth_getCode for the 0xef0100 delegation designator 2. Identify target Resolve the 20-byte delegate address, source, controls and wallet provenance 3. Revoke Use a valid zero-address EIP-7702 authorization through trusted tooling 4. Confirm every chain Read account code again on every EVM network where delegation or assets may exist 5. Review approvals Inspect ERC-20 allowances, NFT operators, permits, modules and suspicious spenders 6. Assess key compromise If the private key may be exposed, treat the old address as permanently untrusted 7. Move assets and preserve evidence when needed Use a new uncompromised wallet, record hashes and addresses, then monitor the old account for renewed delegation or unauthorized activity
1

Detect

Read the account code and confirm whether the exact EIP-7702 delegation designator is present.

2

Identify

Extract the delegate target and verify its code, source, controller, provenance and intended wallet integration.

3

Revoke

Use wallet-supported EIP-7702 tooling to authorize the zero address rather than sending funds to it.

4

Confirm chains

Read account code again on every relevant EVM network instead of assuming one reset is global.

5

Review permissions

Inspect token allowances, NFT operators, permits, wallet modules, suspicious contracts and recent transactions.

6

Protect assets

If key compromise is possible, move remaining value to a fresh wallet and retire the old key.

Step 1: stop signing new transactions

If you discovered an unexpected delegation, pause normal wallet activity. Do not approve a cleanup transaction sent through a direct message, advertisement, social reply, unknown support agent, or random revocation website.

Attackers can exploit the urgency around wallet recovery. A real delegation incident can be followed by a fake repair transaction that drains the remaining assets.

Step 2: record the current state

Before changing anything, save the wallet address, chain, account code, delegation target, current nonce, balances, suspicious transaction hashes, relevant approvals, and timestamp. If you need to investigate later, the pre-revocation evidence will matter.

Step 3: identify the delegation target

Extract the target from the delegation designator and inspect it. Determine whether it is a known implementation used by your wallet, an unfamiliar contract, an upgradeable proxy, an unverified deployment, or a contract connected to a suspicious dApp.

Step 4: decide whether the key itself is trustworthy

Ask how the delegation occurred. If you intentionally enabled a smart-account feature through your trusted wallet and simply want to remove it, the key may still be trustworthy. If you entered your seed phrase into a website, installed malware, exposed a private key, approved remote desktop access, or imported the account into suspicious software, assume broader compromise.

Step 5: use the wallet’s supported EIP-7702 removal flow when available

Because there is no universal dApp interface for directly requesting EIP-7702 authorizations, wallet implementations can expose delegation controls differently. Prefer the official wallet interface or documented recovery method that explicitly says it will remove or reset EIP-7702 delegation.

Verify the wallet software version, domain, application signature, and documentation. Do not follow screenshots from unknown accounts without confirming them against official sources.

Step 6: inspect what you are about to sign

If the wallet creates an on-chain Type 4 transaction or otherwise surfaces the authorization details, confirm that the authority is your address, the intended delegation target is the zero address, the chain is correct, and no unrelated asset transfer or approval is being bundled.

Before approving an unfamiliar transaction, use the TokenToolHub EVM Transaction Decoder to inspect supported calldata, transfers, approvals, internal calls, and transaction context. A decoder cannot certify a signature as safe, but it helps expose unrelated actions that should not be inside a simple recovery procedure.

Step 7: submit the reset on the intended chain

Wait for the transaction to be included. Keep the transaction hash. Do not assume a wallet notification alone proves the protocol state changed.

Step 8: query eth_getCode again

After confirmation, query the wallet address at latest using the same chain. A correctly cleared EIP-7702 delegation should no longer return the 0xef0100... designator. For an ordinary EOA with no other code, the code result should be empty.

Step 9: verify the nonce changed as expected

Compare the account nonce before and after. A successfully processed valid EIP-7702 authorization increments the authority nonce. This provides an additional consistency check and is important when evaluating whether an older authorization can still be replayed on that chain.

Step 10: repeat the check on other networks

Do not stop after Ethereum. Search every EVM network where the address has assets, transaction history, prior wallet activity, or a plausible delegation. If a chain-agnostic authorization may have been signed, expand the review even further.

Step 11: audit approvals and recent transactions

Run the wallet through the Wallet Risk Scanner. Review active token permissions, counterparties, contract exposure, asset movements, wallet age, recent activity, and suspicious interactions.

Step 12: move assets when trust cannot be restored

If the private key may have leaked, do not rebuild confidence around the same address simply because the current delegation is empty. A fresh account generated from new entropy is safer. Move assets only after verifying recipient addresses and ensuring the new wallet was created on a clean device.

Chain-specific authorizations versus chain_id zero

EIP-7702’s chain field is one of the most important details in cross-chain recovery. The protocol accepts an authorization when its chain ID is either the current chain’s ID or zero.

A nonzero chain ID scopes the authorization

If an authorization is signed for Ethereum’s chain ID, it is not valid as an EIP-7702 authorization on a chain with a different chain ID. The signed message commits to that chain value.

chain_id = 0 creates a chain-agnostic authorization

When the signed authorization uses zero as its chain ID, EIP-7702 permits it on any chain implementing the mechanism, provided the rest of the authorization checks pass. The most important additional condition is the authority nonce.

Chain-agnostic does not mean magically synchronized state

Each blockchain maintains its own account nonce, code, balances, storage, and transaction history. If a chain-agnostic authorization is executed on Ethereum, Ethereum updates that chain’s delegation code and nonce. Base or another network does not automatically receive the same state transition merely because the authorization was chain-agnostic.

The same signed authorization can remain relevant elsewhere

Suppose an EIP-7702 authorization was signed with chain_id = 0 and authority nonce 7. If it is used on one chain where the wallet’s nonce is 7, the valid authorization changes the code and increments that chain’s nonce. On another EVM chain where the same wallet’s nonce remains 7, the same signed authorization can still satisfy the chain and nonce checks there.

If the second chain’s nonce is already different, that exact authorization will fail the nonce check. This is why cross-chain incident analysis needs actual nonce and code inspection rather than a blanket assumption that a chain-agnostic signature either works everywhere or nowhere.

Revoking on Ethereum does not revoke on Base

A zero-address authorization applied successfully on Ethereum clears Ethereum’s account code. It does not perform a state transition on Base. If delegation exists on Base, clear it there too through a valid authorization for that chain state.

Revoking a chain-specific delegation does not neutralize a compromised key

If an attacker has the ECDSA private key, they can sign a new authorization for the current nonce and applicable chain. Cross-chain revocation is therefore meaningful when the signed authorization is the risk, but it is not a substitute for key rotation when the key itself is stolen.

AuthorizationWhere it can pass chain checkNonce requirementRecovery implication
chain_id = Ethereum chain IDEthereum onlyEthereum authority nonce must match signed nonceInspect and clear Ethereum; investigate other chains independently
chain_id = Base chain IDBase onlyBase authority nonce must matchResetting Ethereum does not affect the Base authorization
chain_id = 0Any compatible chainThe authority nonce on that specific chain must match the signed nonceCheck code and nonce across every relevant EVM network
Old authorization after valid resetChain check may still matchPrevious nonce should no longer match on the chain where reset incremented itOld tuple becomes ineffective there if nonce mismatch is maintained
New authorization signed with compromised keyAccording to its new chain scopeAttacker can target the current nonce they control signing forMove assets and retire the compromised key rather than repeatedly resetting

How to confirm delegation removal across chains

Cross-chain verification should be systematic. Build a list of networks rather than switching randomly among wallet interfaces.

Start with chains where the address has known activity

Review transaction history, portfolio records, bridge activity, exchange withdrawals, and prior dApp use. Include chains where the wallet once held assets even if the current balance appears zero.

Check the same address with chain-specific RPC endpoints

Run eth_getCode separately against every chain. The wallet address remains the same hexadecimal value, but each RPC endpoint returns that network’s state.

Record code, delegate, nonce, and block

For each chain, save four things: current account code, extracted delegate target if present, current nonce, and observation block. This gives you a repeatable cross-chain evidence table.

Check balances and approvals too

A chain may show empty EIP-7702 code while still holding assets or active token approvals. The absence of delegation does not make the entire chain state irrelevant.

Consider rarely used chains after chain_id zero exposure

If you know or strongly suspect that you signed a chain-agnostic authorization, check additional compatible chains where the same address could hold value or where a relayer could have submitted the authorization. Prioritize networks with assets, bridge history, or meaningful transaction count.

Do not transfer funds into an unchecked chain

If a wallet address was previously delegated on several networks, confirm the destination chain’s code before sending new funds there. The fact that the same address is clean on Ethereum says nothing about another chain.

Cross-chain verification record

  • Network name and numeric chain ID.
  • Wallet address being checked.
  • Latest block used for the state read.
  • Result of eth_getCode.
  • Whether the code begins with the EIP-7702 0xef0100 prefix.
  • Delegate target extracted from the designator, if present.
  • Current account nonce.
  • Native and token balances.
  • Material approvals or operators.
  • Last suspicious or relevant transaction.
  • Revocation transaction hash, if a reset was required.
  • Post-revocation code and nonce verification.

What to do if the EIP-7702 delegation is malicious

Finding an unknown delegation target means the wallet should be treated as potentially compromised until you understand how the authorization was created and what the delegate contract can do.

Do not interact with the malicious delegate to ask it to remove itself

EIP-7702 gives the original key a protocol-level path to replace or clear the delegation. A malicious contract does not need to cooperate. Avoid calling arbitrary cleanup functions inside code you do not trust unless a qualified security analysis establishes that they are necessary.

Inspect the authorization transaction

Find the Type 4 transaction that established the delegation if possible. Record its sender, authorization list, chain ID, target address, block, transaction hash, and related dApp activity.

Review whether funds already moved

Check native transfers, ERC-20 transfers, NFTs, internal calls, bridges, swaps, contract deposits, and exchange-related destinations. A malicious delegation can be serious even when the wallet interface still shows some assets.

Review token allowances separately

The malicious workflow may have used both EIP-7702 and ordinary approvals. Clear unnecessary token allowances and NFT operators after you have established a safe method to act from the account.

Review browser and device compromise

If the delegation originated from a fake wallet update, malicious extension, downloaded executable, clipboard malware, remote-access session, or seed-phrase phishing page, the device may remain unsafe. Reinstall or clean the environment before generating or using replacement keys.

Move assets in order of recoverability and risk

When the key is compromised, prioritize assets that remain movable. Confirm gas requirements, chain, destination, token contract, and bridge routes before each transfer. Do not send assets to a newly generated address until you have backed up the new wallet securely.

Use a new key, not merely a new wallet application

Importing the same compromised seed phrase into a different wallet application does not create new security. The underlying key remains the same.

Consider hardware-backed custody for replacement keys

For meaningful long-term holdings, a hardware wallet can reduce private-key exposure to the general-purpose computer. A device from a reputable manufacturer such as Ledger can support a cleaner custody model, but hardware protection still requires careful transaction review. It does not automatically detect every malicious EIP-7702 authorization or unsafe contract interaction.

Preserve evidence before abandoning the address

Save delegation code, delegate target, authorization transaction, attacker destinations, malicious websites, timestamps, token approvals, wallet logs, screenshots, and any messages associated with the incident. This helps with reporting, exchange contact, forensic review, and future scam identification.

Review approvals after clearing delegation

A successful EIP-7702 reset should be followed by an ordinary wallet-permission audit. Attackers rarely limit themselves to one mechanism when they can obtain several forms of authority.

ERC-20 allowances

Check every high-value token. Review spender addresses, current allowance, historical approval, last use, and whether the spender belongs to a protocol you still trust. Revoke obsolete unlimited allowances.

NFT operators

Review collection-wide operator approvals as well as token-specific approvals. A malicious marketplace or operator can remain dangerous after delegation code disappears.

Permit2 and signature-based systems

Permit2 and similar systems can introduce an additional permission layer. Inspect the token approval to the permission contract and the permission contract’s own delegated spender state where applicable.

Pending signatures

Review signatures submitted to marketplaces, DeFi protocols, relayers, account-abstraction systems, and order books. Some can expire naturally; others may use cancellable nonces or invalidation transactions.

Smart-account modules and session keys

If your prior delegated implementation created state for session keys, guardians, permissions, modules, or recovery addresses, clearing the EIP-7702 code does not necessarily erase that storage. If you later delegate to another implementation, storage compatibility and residual state become security considerations.

Wallet software permissions

Remove suspicious browser extensions, connected hardware sessions, cloud backups, remote access, compromised API keys, and unknown wallet imports. Blockchain cleanup cannot repair an infected endpoint.

Review the wallet after the reset

A cleared EIP-7702 designator should be followed by a complete wallet review covering current approvals, counterparties, recent transactions, assets, risky interactions, and evidence of renewed delegation.

Use Transaction Decoder before signing an unfamiliar revocation transaction

A wallet-supported EIP-7702 reset can involve transaction fields that ordinary users have rarely seen before. The safest approach is not to rely on a tutorial telling you to press confirm. Inspect every visible field your wallet exposes and verify that unrelated actions are absent.

Confirm the chain

The wallet should be connected to the chain whose delegation you intend to clear. A valid Ethereum reset cannot clear Base state merely because the address is identical.

Confirm the target action

The EIP-7702 authorization should represent the null delegation target when the objective is complete clearing. If the interface instead points to another implementation, you are replacing the delegation rather than removing it.

Look for bundled token approvals

A malicious cleanup interface can present a plausible wallet-repair description while requesting a token approval or transfer in the same user flow. Inspect the transaction rather than trusting the button label.

Look for asset transfers

A delegation reset does not inherently require sending your tokens to a third party. Any significant transfer should have an explicit and independently verified reason.

Do not confuse the transaction destination with the delegation target

Type 4 transactions contain an outer transaction destination and a separate authorization list. The delegation target lives inside the signed authorization tuple. This is another reason ordinary users should not build a raw transaction by imitating a block-explorer screenshot.

Understand decoder limitations

A standard calldata decoder may explain the outer transaction’s call and transfers but not present every EIP-7702 authorization detail in the same way as a dedicated EIP-7702-aware wallet. Use the wallet’s own authorization display, explorer, transaction type information, and protocol-level account code checks together.

Important A transaction description is not enough.

The final verification step is reading the account code after confirmation. The wallet interface may say delegation removed, but the chain state is the authoritative check.

Common EIP-7702 revocation failure states

The wallet has no delegation-removal interface

EIP-7702 does not require every wallet to expose the same user-facing removal control. Check the wallet’s official documentation and support channels. Do not substitute an unknown third-party website merely because it promises a one-click reset.

The authorization nonce is stale

If another transaction or valid EIP-7702 authorization changed the account nonce, an authorization signed with the old nonce will fail protocol validation. Generate a fresh authorization through trusted tooling using current state.

You are on the wrong chain

The address can show delegation on one network and empty code on another. Verify the chain ID and RPC endpoint before concluding the reset failed.

The reset succeeded on one chain but another chain remains delegated

This is expected because account state is per chain. Repeat the detection and recovery process for each network where delegation exists.

The old delegation returns after you cleared it

Investigate immediately. Possible explanations include a new authorization signed by the original key, compromised wallet software, malicious automation, or confusion between networks. If the key is compromised, move assets instead of repeatedly fighting for the same account.

The account code is still 0xef0100 after the transaction

Check the transaction type, authorization list, target address, authority, chain, nonce, receipt, and actual block state. The outer transaction may have succeeded without applying the expected tuple if the authorization was invalid.

The transaction reverted but delegation changed

EIP-7702 explicitly states that valid authorization processing is not rolled back when the later execution part reverts. Therefore, do not infer the delegation state from the outer execution status alone. Query the code directly.

The delegation is gone but funds still move

Review token allowances, NFT operators, compromised private keys, malicious signed orders, session keys, protocol positions, bridge activity, and other accounts controlled by the same seed phrase.

The wallet shows empty code but an explorer displays an old delegate

Check whether the explorer is showing historical delegation, cached metadata, or the latest account state. Compare the latest block from two independent RPC endpoints where practical.

The delegate target itself is a proxy

The risk may depend on the proxy’s implementation and administrator rather than only the address encoded in your designator. Resolve the execution path and identify who can change the target logic.

You cannot pay gas from the affected wallet safely

EIP-7702 supports sponsored transaction use cases, but recovery support depends on wallet and relayer implementation. Do not accept an unknown relayer that asks for secrets or an asset transfer. Consult the wallet’s official recovery guidance.

Your wallet address has the same delegation on several chains

This can result from intentional multi-chain setup or use of a chain-agnostic authorization. Treat each chain as a separate state-recovery operation and check whether the delegate contract has identical bytecode at the referenced address.

Worked EIP-7702 recovery examples

Example 1: intentional delegation that the user simply wants to remove

A user enabled smart-account features through a trusted wallet on Ethereum. They later decide they no longer need batching or sponsored transactions. The account code begins with the expected EIP-7702 prefix and points to the wallet provider’s documented delegate.

The user opens the official wallet application, selects its supported remove-delegation flow, verifies that the account and network are correct, signs the reset, waits for confirmation, and queries eth_getCode. The result is empty code. They then check token approvals because removing smart-account code is independent of dApp permissions.

Example 2: unexpected malicious delegation after a phishing site

A user visits a fake airdrop site and approves an unfamiliar authorization. Their wallet later behaves abnormally. RPC inspection shows 0xef0100 followed by an unknown contract address.

The user preserves the current account code, phishing domain, relevant transaction, nonce, and delegate address. They stop interacting with the site. Because the seed phrase was never entered and there is no evidence that the private key itself was exported, they use the official wallet’s EIP-7702 removal flow, verify the resulting code is empty, then revoke token approvals and analyse recent activity.

The user does not conclude recovery is complete until they check additional chains and monitor the address for new delegation.

Example 3: seed phrase was entered into a malicious website

This incident is fundamentally different. The attacker possesses the original key. Even if the victim removes the malicious delegation, the attacker can potentially send ordinary transactions or sign a new EIP-7702 authorization using the current nonce.

The victim creates a fresh wallet from new entropy on a clean device, securely backs it up, transfers recoverable assets, revokes permissions where doing so does not delay critical asset movement, and stops treating the old address as secure custody.

Example 4: chain_id zero authorization used on more than one network

A user signed a chain-agnostic authorization with nonce 4. The tuple was submitted on two chains where the same account nonce was 4. Each chain now has delegation code and its nonce increased independently.

The user resets Ethereum first. Ethereum’s code becomes empty and its nonce advances. The second chain remains delegated because no reset occurred there. The user must connect to that chain and perform a valid reset according to its current nonce.

Example 5: the same chain-agnostic authorization cannot be used on a third chain

The wallet had already made many transactions on a third EVM network and its nonce was 37. The old chain-agnostic authorization was signed for nonce 4. Although chain_id = 0 passes the chain check, the authorization cannot pass that chain’s nonce check because 37 does not equal 4.

This illustrates why chain-agnostic does not mean unconditional cross-chain replay.

Example 6: delegation cleared but unlimited token approval remains

The user successfully removes EIP-7702 code. A Wallet Risk review then reveals an unlimited token approval granted to the malicious application during the original incident.

The user revokes the allowance through the correct token contract and verifies its new value. The EIP-7702 reset and token-approval revocation are separate transactions solving separate permission problems.

Example 7: outer transaction reverts but code is still cleared

A sophisticated wallet builds a Type 4 transaction containing a valid zero-address authorization and a subsequent call. The later call reverts. The user assumes the revocation failed because the receipt shows failed execution.

However, EIP-7702 authorization processing is not rolled back simply because later transaction execution reverts. The correct check is eth_getCode. If the delegation designator is gone, the reset applied despite the later execution failure.

Example 8: user replaces one delegate with another instead of clearing it

A wallet upgrade flow points the EOA to a newer delegate implementation. The account still returns 0xef0100... after the transaction, but the target address has changed.

This is a redelegation, not revocation. It may be completely legitimate, but a user specifically trying to return to an undelegated EOA should verify that the target is the zero address and that post-transaction code is empty.

Final EIP-7702 revocation verification checklist

Before revocation

  • Confirm the exact wallet address and network.
  • Query current account code through an EIP-7702-aware explorer or eth_getCode.
  • Confirm the code begins with 0xef0100 and extract the delegate address.
  • Record the current authority nonce.
  • Save suspicious transaction hashes and the authorization transaction where identifiable.
  • Investigate the delegate target’s source, controller and provenance.
  • Determine whether the delegation was intentional.
  • Determine whether the private key, seed phrase or device may be compromised.

While revoking

  • Use official wallet software or a documented EIP-7702-aware recovery path.
  • Verify the selected chain.
  • Confirm the reset uses an EIP-7702 authorization to the zero address rather than a normal asset transfer.
  • Confirm the authority is your intended account.
  • Review the authorization nonce using trusted tooling.
  • Inspect the transaction for unrelated approvals, transfers or contract calls.
  • Save the transaction hash after submission.
  • Wait for on-chain inclusion before treating the operation as finished.

After revocation

  • Run eth_getCode again against the same chain at latest state.
  • Confirm the EIP-7702 0xef0100 designator is gone.
  • Verify the authority nonce advanced consistently with the valid authorization.
  • Repeat the code and nonce check on every relevant EVM chain.
  • Review ERC-20 allowances and NFT operators.
  • Review Permit2-style permissions and other delegated spend systems.
  • Decode suspicious recent transactions.
  • Review wallet counterparties and unexpected asset movement.
  • Monitor for a new delegation appearing unexpectedly.
  • Move assets to a fresh key if private-key compromise cannot be excluded.

What EIP-7702 revocation does not fix

It does not recover stolen assets

Clearing delegation only changes current account code. Transfers that already finalized remain part of chain history unless the recipient voluntarily returns assets or another protocol-specific recovery mechanism exists.

It does not rotate your private key

An Ethereum EOA address is derived from its key. EIP-7702 does not provide a protocol-level way to replace the underlying ECDSA key for an ordinary EOA while retaining the same security assumption.

It does not revoke token approvals

Allowances remain in token contracts until their own state changes.

It does not invalidate every off-chain signature

Signature validity depends on each application’s domain, nonce, deadline, contract logic and cancellation rules.

It does not wipe EOA storage

Storage created during delegated operation can remain. This is particularly important if the account is later delegated to another contract whose storage layout interprets the same slots differently.

It does not clean malware from your computer

Browser extensions, remote-access software, clipboard malware, infostealers and compromised operating systems remain threats after on-chain cleanup.

It does not prove the next delegate is safe

Replacing a malicious target with a reputable-looking contract still creates powerful account behavior. Verify the exact address, bytecode, source, upgradeability and wallet documentation.

It does not make cross-chain state identical

Every EVM chain retains independent account state. Check each network separately.

Security lessons EIP-7702 changes for wallet users

EIP-7702 creates useful account-abstraction capabilities, but it also changes assumptions that users and applications have made for years.

An EOA address can now have smart-contract behavior

Do not assume that an address capable of signing ordinary transactions has no code. EIP-7702 permits a valid delegation-designator account to originate transactions while delegated code remains present.

Wallet software becomes part of the delegation trust boundary

Users should not be expected to audit arbitrary delegation targets. Ethereum’s own guidance argues that wallets should exercise caution and should not simply expose arbitrary delegation signing as a generic dApp request.

Clear signing matters more

Users need to see the delegate target prominently. A wallet prompt that hides the authorization address behind a vague smart features or optimize account message is insufficient for a high-impact permission.

Cross-chain signatures deserve special caution

A chain-agnostic authorization can create broader exposure than a chain-bound authorization. The convenience of one signature working across networks must be weighed against the additional recovery surface.

Persistent account changes require persistent monitoring

Users who rely on delegated smart-account functionality should know which target their address currently points to and should notice unexpected changes. A wallet can look visually identical while its delegated executable logic changes.

Hardware wallets still need EIP-7702 awareness

Physical transaction confirmation is valuable only when the device and companion application communicate what is being authorized. Ethereum’s guidance recommends caution around arbitrary delegation because the target contract can have extensive power over account assets.

Common mistakes when removing EIP-7702 delegation

Sending ETH to the zero address

This does not revoke EIP-7702. The zero address belongs inside a valid authorization tuple as the delegation target. Sending assets to it can permanently destroy them.

Clicking disconnect and assuming delegation is gone

A website connection does not control the EOA’s code field. Read the account code directly.

Revoking token approvals but leaving malicious delegated code active

Token permissions and account delegation are independent security layers.

Clearing delegation but leaving unlimited token approvals

The reverse mistake is equally dangerous.

Checking only Ethereum

The wallet may be delegated on another EVM chain, particularly after chain-agnostic authorization use.

Assuming chain_id zero ignores nonces

Chain zero permits cross-chain use, but the authority nonce must still match on the chain where the authorization is submitted.

Assuming one cross-chain reset exists

EIP-7702 does not synchronize chain state. Clear each affected chain independently.

Reusing a compromised seed phrase

No amount of delegation cleanup makes a stolen private key secret again.

Trusting the wallet UI without checking chain state

Always verify code after the transaction confirms.

Copying a raw nonce from someone else’s tutorial

The authority nonce is account- and chain-specific. Incorrect nonce values invalidate the authorization.

Assuming a reverted outer transaction means revocation failed

EIP-7702’s authorization changes are processed before execution and are not automatically rolled back when later execution reverts. Inspect the resulting code.

Assuming an empty code field fixes previous storage

Storage can remain after delegation changes.

Ignoring the delegate’s upgradeability

A delegation target that is itself a proxy can change its effective logic without your EOA designator changing.

Using a random revocation website during an incident

Recovery urgency is a powerful phishing vector. Use official wallet documentation and verify every signing request.

Conclusion: clear the delegation, then verify the whole wallet

The protocol answer to how to revoke EIP-7702 delegation is precise: a valid EIP-7702 authorization pointing to the zero address clears the EOA’s delegation code. The security answer is broader.

First detect whether delegation actually exists. Read the account code and identify the target. Determine whether the delegation was intentional and whether the underlying private key remains trustworthy. Use a wallet-supported removal flow rather than inventing a universal button or blindly handcrafting a Type 4 transaction. Inspect what you are about to sign, submit the reset, and then query account code again.

Next, expand beyond the first chain. A chain-specific authorization is scoped to one chain, while a chain_id = 0 authorization is valid across chain IDs when its nonce and other protocol conditions match. Because account state is independent on each network, clearing Ethereum does not clear Base, Arbitrum, Optimism, Polygon, BNB Chain, or another EVM network automatically.

Finally, remember what delegation revocation does not touch: ERC-20 allowances, NFT operators, signed permits, compromised private keys, malicious browser extensions, persistent EOA storage, and completed asset transfers. Run the Transaction Decoder when you need to understand suspicious transaction activity, then use the Wallet Risk Scanner to reassess the address after cleanup.

Return to the prerequisite EIP-7702 account upgrade guide for the broader mechanism, Crypto Approval Risks for permission cleanup, and Signature Replay Attacks for deeper nonce and signature-scope context.

If the private key itself may be compromised, do not turn the old account into a permanent recovery project. Preserve evidence, move recoverable assets to a fresh wallet generated from uncompromised entropy, and treat the old address as untrusted. An empty EIP-7702 code field is a valuable confirmation, but it is not a replacement for key security.

Verify what happened before and after the reset

Decode suspicious transactions first, then review the wallet’s activity, approvals, counterparties, assets, and current risk state after EIP-7702 delegation has been removed.

FAQs

How do I revoke EIP-7702 delegation?

At protocol level, EIP-7702 delegation is cleared by applying a valid authorization whose delegation target is the zero address. Use a trusted wallet or client that explicitly supports EIP-7702 removal, then confirm the account code is empty through an explorer or eth_getCode.

What address is used to clear an EIP-7702 delegation?

The EIP-7702 specification uses the null address 0x0000000000000000000000000000000000000000 as the target that clears the authority account’s delegation code.

Should I send ETH to the zero address to revoke EIP-7702?

No. The zero address must be the delegation target inside a valid EIP-7702 authorization. Sending ETH or tokens to the zero address is a different action and can permanently destroy the assets.

How do I check whether my wallet has EIP-7702 code?

Use an EIP-7702-aware wallet or explorer, or query the address with eth_getCode on the relevant network. A delegated EOA contains a 23-byte designator beginning with 0xef0100 followed by a 20-byte delegate address.

What does 0xef0100 mean?

It is the three-byte EIP-7702 delegation-designator prefix. When stored in an authority account’s code field, it is followed by the 20-byte address whose code should execute for the delegated account.

What should eth_getCode return after revocation?

For an ordinary EOA whose EIP-7702 delegation has been cleared and that has no other valid code, eth_getCode should return empty code, normally represented as 0x.

Is EIP-7702 delegation the same as a token approval?

No. EIP-7702 changes the EOA’s account code. A token approval changes allowance state inside a token contract. Each permission must be reviewed and removed separately.

Does disconnecting a dApp revoke EIP-7702?

No. Disconnecting normally removes a wallet-to-website session. It does not rewrite the account code stored on-chain.

Does revoking EIP-7702 remove ERC-20 approvals?

No. Token allowances remain in each token contract until changed through the token’s approval mechanism or another supported permission system.

Does EIP-7702 revocation cancel signed permits?

Not automatically. Permit validity depends on the relevant contract, nonce, deadline, domain separator, chain binding, spender, and signature scheme.

Can EIP-7702 delegation persist after the original transaction?

Yes. Persistent delegation is an intentional part of EIP-7702. The code remains until it is replaced or cleared by another valid authorization.

Can a delegated EOA still send transactions?

Yes. EIP-7702 permits accounts containing a valid delegation designator to originate transactions, while calls involving the account can execute the delegated code.

Does the original EOA private key still work after delegation?

Yes. The original ECDSA key retains control under EIP-7702. This is why private-key compromise remains critical even after a malicious delegation is removed.

What if my private key was compromised?

Clearing delegation is not enough. Create a fresh wallet from new uncompromised entropy, move recoverable assets, revoke other permissions where useful, preserve evidence, and stop using the exposed key for significant value.

Can an attacker redelegate my wallet after I revoke?

If the attacker possesses the original private key, they may be able to sign a new valid authorization using the current account nonce. Revocation alone cannot repair key compromise.

What is chain_id zero in EIP-7702?

An authorization with chain_id set to zero passes the EIP-7702 chain check on any compatible chain. The authority nonce and the other authorization checks must still be valid on the chain where it is submitted.

Does chain_id zero mean one transaction delegates every chain automatically?

No. Each blockchain maintains separate state. A chain-agnostic authorization can be submitted on different chains, but each chain must independently process it while its validity conditions are satisfied.

Does revoking on Ethereum revoke EIP-7702 on Base?

No. Ethereum and Base maintain separate account code and nonce state. Check and clear each affected network independently.

Can an old chain_id zero authorization still work on another chain?

Potentially. If the authorization’s signed nonce matches the authority’s current nonce on that other chain and the remaining protocol checks pass, it can still be valid there even after being consumed or superseded elsewhere.

What prevents an old authorization from being reused on the same chain after reset?

A valid authorization increments the authority nonce. An older tuple signed for the previous nonce then fails the EIP-7702 nonce check on that chain, assuming the chain state remains at a different nonce.

Why can a revocation transaction revert but the delegation still disappear?

EIP-7702 processes authorization tuples before the transaction’s execution portion, and processed delegation changes are not rolled back merely because later execution reverts. Always query the resulting account code directly.

Does removing delegation erase wallet storage?

No. Delegation changes do not generally clear account storage. Residual storage is important when moving between delegate implementations because the new code may interpret existing slots differently.

Can I use an explorer to revoke EIP-7702?

Explorer capabilities vary. Use a wallet or interface with explicit EIP-7702 support and verify its official documentation rather than assuming a generic contract-write page can safely construct the required authorization.

Can any dApp request an EIP-7702 authorization directly?

Ethereum’s EIP-7702 guidance notes that there is no standardized method for dApps to request authorization signatures directly and recommends that wallets manage delegation through wallet-aware interfaces.

How do I find the delegate contract address?

Read the account code. If it begins with 0xef0100 and has the EIP-7702 designator length, the following 20 bytes identify the delegation target.

What should I check about the delegate contract?

Review verified source, bytecode, official wallet documentation, upgradeability, proxy relationships, administrator control, audits where available, deployment provenance, and whether the address matches the implementation you intended to authorize.

Can a hardware wallet protect against malicious EIP-7702 delegation?

A hardware wallet can reduce private-key exposure, but the user can still authorize dangerous account behavior if the transaction or authorization is approved. Clear signing and trusted delegation targets remain essential.

Should I revoke approvals before or after removing malicious delegation?

The priority depends on the incident. If delegated code is actively dangerous, clearing it may be urgent. If the private key is compromised, moving assets can take priority over spending time on individual approvals. Preserve enough gas for the necessary recovery actions.

Why should I use a transaction decoder during recovery?

A decoder helps expose calldata, token transfers, approvals, recipients, internal calls, and other transaction behavior so that a supposed cleanup transaction does not hide unrelated asset or permission changes.

Why should I run a wallet scan after revocation?

Removing EIP-7702 code does not clear other risks. A wallet review can surface active approvals, risky counterparties, unexpected transactions, asset exposure, and other evidence that requires follow-up.

What if eth_getCode still shows 0xef0100 after I revoked?

Verify that you checked the correct chain and latest block. Review the Type 4 transaction, authorization target, nonce, authority, receipt, and whether a later transaction redelegated the account.

Can a delegate point to another delegate?

EIP-7702 defines how clients handle delegation chains and specifies that they follow only the first delegation pointer when resolving delegated code. Do not assume nested delegation creates an unlimited pointer chain.

Is every non-empty EOA code result EIP-7702?

No. Identify EIP-7702 using its specific 0xef0100 designator format and length. A normal smart contract has different runtime bytecode.

Can I restore EIP-7702 later after revoking?

Yes, as long as the account remains eligible and the original key can sign a new valid authorization. The account can delegate again to a future approved target using the current nonce and appropriate chain scope.

Does a successful reset prove my wallet is completely safe?

No. It proves the current EIP-7702 delegation code was cleared on the checked chain. You must still review key compromise, other chains, token approvals, NFT operators, signed messages, malware, suspicious transactions, and residual account exposure.

References and further learning

The following primary Ethereum specifications and TokenToolHub resources provide the protocol and security context for EIP-7702 delegation, account-code inspection, transaction analysis, approval risks, and wallet recovery.


This TokenToolHub guide is educational security research and wallet-safety guidance. It is not a guarantee of recovery, financial advice, legal advice, an audit, or a substitute for qualified incident response. EIP-7702 wallet implementations and user interfaces can differ. Verify current account code, chain ID, nonce, delegate target, transaction details, approvals, and official wallet instructions before signing recovery actions. Never provide a seed phrase, private key, recovery share, keystore password, or wallet credential to a delegation checker or support agent.

TH

Add TokenToolHub shortcut

Keep scanners, research tools, guides, and the community one tap away on this device.

On iPhone, open TokenToolHub in Safari, tap the Share icon, then choose Add to Home Screen.