What is EIP-7702?
The protocol patch that lets EOAs borrow smart-account behavior — without removing the EOA root key.
EIP-7702 is the most important account-abstraction patch Ethereum has shipped since ERC-4337 went live. It answers the question ERC-4337 could not answer cleanly: how does an address that already owns assets, approvals, ENS, reputation, and history become programmable without moving everything to a new contract account?
The answer is delegation. The price is that the address still has an EOA root.
on this page
- What is EIP-7702?
- At a glance
- Origin story
- The spec
- What's broken
- residual ECDSA key remains
- Delegated EOAs are hybrid accounts
- Initialization and storage are wallet problems
- Authorizations are a new phishing surface
- It is not a permission vocabulary
- LUKSO alternative
- EIP-7702 vs LSP0+LSP6+LSP20+LSP25
- When to use which
- FAQ
- Sources
- Keep reading
The standard, in one card.
- Standard
- EIP-7702
- Track
- Core
- Created
- 7 May 2024
- Activated
- Pectra, May 2025
- Transaction type
- SET_CODE_TX_TYPE 0x04
- Delegation marker
- 0xef0100 || address
- Closest account stack
- ERC-4337 EntryPoint v0.8
- LUKSO contrast
- LSP0 + LSP6 + LSP20 + LSP25
The origin story.#
ERC-4337 deliberately avoided protocol changes. That was its strength: it could ship by deploying an EntryPoint contract and an off-chain bundler network. But avoiding protocol changes meant existing EOAs stayed outside the model. A user could deploy a smart account, but their original address, approvals, ENS, assets, and history stayed behind.
EIP-7702 was created in May 2024 to patch that gap at the protocol layer. Its motivation names three UX goals directly: batching, sponsorship, and privilege de-escalation. In practice, that means a normal Ethereum address can temporarily behave like wallet code: one click can approve and swap, a sponsor can pay gas, and a session key can be delegated a smaller set of powers than the main key.
- May 2024 Vitalik Buterin, Sam Wilson, Ansgar Dietrichs, and lightclient create EIP-7702. ↗
- May 2025 Ethereum's Pectra upgrade activates EIP-7702, and ERC-4337 EntryPoint v0.8 adds native support for delegated EOAs.
- 2026 Wallets and account-abstraction stacks continue converging around 7702 + 4337, while residual key revocation remains an active design topic.
What EIP-7702 actually is.#
// EIP-7702 is a protocol transaction type, not a contract ABI.
// The set-code transaction payload is RLP-encoded:
//
// rlp([
// chain_id,
// nonce,
// max_priority_fee_per_gas,
// max_fee_per_gas,
// gas_limit,
// destination,
// value,
// data,
// access_list,
// authorization_list,
// signature_y_parity,
// signature_r,
// signature_s
// ])
//
// Each authorization tuple:
struct Authorization {
uint256 chainId;
address delegationTarget;
uint64 nonce;
uint8 yParity;
bytes32 r;
bytes32 s;
}
//
// Installed account code:
// 0xef0100 || delegationTarget
SET_CODE_TX_TYPE · destination · data · authorization_list chain_id · address · nonce · y_parity · r · s 0xef0100 · delegation target batching · sponsorship · session keys · validation logic EIP-7702 adds a set-code transaction type. The transaction contains one or more authorization tuples. Each tuple is signed by an EOA and names the delegate code address the EOA wants to use. The protocol writes a small delegation indicator into the account's code slot: 0xef0100 || address. When code execution touches the EOA, clients load and execute the target contract code.
That sounds like the EOA has become a contract. It has not, fully. It has delegated behavior. The original signing key remains capable of authorizing a different delegation unless another future mechanism disables that authority.
What's broken about EIP-7702.#
EIP-7702 is a major improvement, not a mistake. The important question is what kind of account it creates. A delegated EOA is powerful because it preserves an existing address. It is risky because it preserves the same root authority that made EOAs hard to recover in the first place.
-
The residual ECDSA key remains.#
EIP-7702 gives an EOA code-like behavior, but the original private key is still the account's root authority. If that key is compromised, an attacker can sign a new authorization tuple and point the account at hostile code. Recovery above the delegation is not authoritative unless the residual key can be revoked.
EIP-7702EOA key signs another authorizationLSP0 + LSP6contract account + controllersworkarounds tried- hardware-wallet-rooted EOAs
- EIP-7851 draft for ECDSA disablement
- fresh contract account migration
- strict wallet warnings for authorizations
-
Delegated EOAs are hybrid accounts.#
A 7702 account has an address with delegation code, but it is still an EOA-shaped account in important ways. Tools, contracts, and assumptions built around 'EOA has no code' and 'contract has deployed storage and init flow' now meet a third category.
EIP-7702EOA address executes delegated codeLSP0account is always a contractworkarounds tried- wallet-specific detection
- account abstraction SDK wrappers
- defensive tx.origin assumptions
- simulation before signing
-
Initialization and storage are wallet problems.#
A 7702 delegation points to code; it does not deploy and initialize a new account contract in the normal sense. Delegate implementations execute against the EOA's account context, so wallet authors must handle initialization ordering, storage layout, and delegate replacement carefully.
EIP-7702delegation target executes in EOA contextLSP17 + ERC-725Ystandard extension + account data storeworkarounds tried- guarded initialization
- namespaced storage
- single-vendor delegate discipline
- formal storage-layout reviews
-
Authorizations are a new phishing surface.#
The signature a user is asked for is no longer just a transaction or a permit; it can change what code controls the account. Wallet UI has to explain delegation authority clearly enough that non-technical users do not sign away execution control.
EIP-7702sign Authorization(chainId, target, nonce)LSP6grant controller permissionsworkarounds tried- human-readable delegation registries
- wallet allowlists
- simulation
- short-lived delegates where possible
-
It is not a permission vocabulary.#
EIP-7702 installs delegation. It does not standardize session keys, spending limits, recovery, app permissions, received assets, profile metadata, or relay policy. Those features live in the delegated wallet implementation and the ERC-4337 stack around it.
EIP-7702delegate to wallet codeLSP6 + LSP25permissions + relay on the accountworkarounds tried- ERC-4337 smart account implementations
- ERC-7579 modules
- wallet SDKs
- vendor-specific permission schemas
LUKSO designed it differently.#
The LUKSO account stack takes the opposite route. It does not try to retrofit code onto an EOA. A Universal Profile is a contract account from the start. LSP6 defines controllers and permissions. LSP20 verifies calls inline. LSP25 handles relayed execution. LSP3 and ERC-725Y give the account a standard data model.
This does not help an existing Ethereum address keep its history. EIP-7702 wins that use case. The LSP win is cleaner semantics: no hidden EOA root, no hybrid account category, and no wallet-specific permission vocabulary sitting behind a generic delegation pointer.
- LSP0 ERC-725 Account The account is a contract from day one. No residual EOA key sits above the account's permission system.
- LSP6 Key Manager A standard permission vocabulary for controllers, allowed calls, value limits, and ERC-725Y data access.
- LSP20 Call Verification Inline verification on the normal call path, rather than validation through an EntryPoint or delegated wallet-specific module.
- LSP25 Execute Relay Call Gasless execution as an account function: a controller signs, a relayer submits, permissions still gate the payload.
- LSP17 Contract Extension A selector-based extension mechanism that avoids treating delegated EOA storage as an upgrade substrate.
EIP-7702 vs LSP0+LSP6+LSP20+LSP25 in one table.#
| row | EIP-7702 | LSP account stack |
|---|---|---|
| account root | EOA private key remains | contract account controlled by LSP6 |
| upgrade shape | delegation target pointer | account modules/extensions and Key Manager replacement |
| permission model | wallet implementation decides | LSP6 permission bitfield + allowed calls/data keys |
| gasless flow | usually through ERC-4337 bundler/paymaster infrastructure | LSP25 executeRelayCall on the account |
| identity/data | not specified | ERC-725Y + LSP3 profile data |
| main advantage | upgrades existing Ethereum addresses in place | clean account semantics from genesis |
FAQ.#
-
What is EIP-7702? #
EIP-7702 is an Ethereum protocol change that lets an EOA delegate execution to contract code through a signed authorization. It gives existing addresses smart-account-like behavior without redeploying or moving assets.
-
Is EIP-7702 the same as ERC-4337? #
No. ERC-4337 is a higher-layer smart account architecture built around UserOperations, EntryPoint, bundlers, and paymasters. EIP-7702 is a protocol transaction type that lets an existing EOA point to contract code. EntryPoint v0.8 can use 7702 accounts, so the two are complementary.
-
Did Pectra activate EIP-7702? #
Yes. Ethereum's Pectra upgrade in May 2025 activated EIP-7702, making EOA delegation available at the protocol layer.
-
What is the residual-key problem? #
A delegated EOA still has its original private key. If that key is stolen, the attacker can sign another EIP-7702 authorization and replace the delegate code, bypassing recovery or session limits implemented above the delegation.
-
How does LUKSO differ from EIP-7702? #
LUKSO Universal Profiles are contract accounts from genesis. Authority lives in controllers managed through LSP6, not in a residual EOA key. Gasless execution is LSP25 on the account, and profile data uses ERC-725Y/LSP3.
glossary 4 terms used on this page
- EOA
- Externally Owned Account: an Ethereum account controlled by a secp256k1 private key.
- authorization tuple
- The signed EIP-7702 data structure that names a chain, delegation target, nonce, and signature.
- delegation indicator
- The account-code marker 0xef0100 followed by the delegation target address.
- residual key
- The original EOA private key that remains able to sign new authorizations after delegation is installed.