EIP-7702: Smart Account Power for EOAs (If Your Wallet Lets You)

TLDR: EIP-7702 allows externally owned accounts to temporarily behave like smart contract wallets during a transaction, enabling them to use smart contract features like batching and gas sponsorship without permanently changing the account type. BUT
Wallet/RPCs control the auth flow not apps and not all wallets have EIP-7702 support.

EIP-7702 Overview

EIP-7702 introduces a new transaction type, 0x04, in Ethereum’s Pectra upgrade that enables externally owned accounts (EOAs) to execute temporary smart contract functionality.

The delegation process looks like:

  1. A Smart Contract should exist that the EOA can designate to
    • This contract can have any functionality
    • For an example see the SimpleEIP7702Contract that allows batch execution
  2. The EOA signs an Authorization to designate the contract to the account
  3. An EIP-7702 transaction is sent along with the Authorization
    • When processed, the network records that this EOA should delegate to the specific smart contract
    • The EOA appears to have the SC code attached to it directly
    • The code will be valid until replaced by another authorization
    • msg.sender in these transactions remains the EOA’s address

Wallets Are In Control

Applications cannot directly use EIP-7702 to delegate user accounts to their preferred smart accounts.

Internal tests written to use an inject browser wallet as the Viem account throws because it is not possible to sign an authorization over JSON-RPC right now: https://github.com/wevm/viem/discussions/3285

Although its technically possible for any entity to create an EIP-7702 authorization, wallet providers have made it clear that they will reject transactions containing authorization fields from applications. Instead, wallets will manage EIP-7702 authorizations themselves, upgrading their users to the wallet’s chosen smart account implementation. There will be fragmentation as different wallets adopt different implementations.

Worth noting EIP-5792 can be used to query what capabilities a wallet supports using rpc calls (see 7702beat and 7702 checker as examples of existing tools).

Useful Links

7702beat.swiss-knife.xyz – Shows Chain & Wallet Support

Awesome EIP-7702

Data

https://www.bundlebear.com/eip7702-overview/all

https://dune.com/wintermute_research/eip7702

Dev Guides

Viem EIP-7702

  • Gives a guide showing how to use signAuthorization. Only works with a PK Account.

QuickNode EIP-7702 Guide:

  • Very detailed walk through (using Foundry and Viem)

MetaMask EIP7702 Quickstart:

  • Use MetaMask Delegation Toolkit. Still appears to need a Viem PK account.

Biconomy Guide For Apps:

  • Good explanation of the problem. Some proposed alternatives.

Photo by Jana Knorr on Unsplash