EIP-7702 lets an existing EOA delegate execution to a smart contract while keeping the same address. Combined with the Startale Smart Account, that means you can take any EOA and start sending UserOperations from it without migrating funds, rotating keys, or asking the user to remember a new address.Documentation Index
Fetch the complete documentation index at: https://docs.startale.com/llms.txt
Use this file to discover all available pages before exploring further.
Source:
StartaleGroup/scs-aa-sdk.What EIP-7702 does, in one diagram
The address is unchanged. What changes is the code at that address: a 23-byte delegation indicator (0xef0100 || implementation) that tells the EVM to execute the implementation’s code whenever the address is called. To revert, the user signs a new authorization that points at the zero address.
Why use it
| Benefit | Detail |
|---|---|
| No address change | Funds, allowances, and onchain history follow the user. |
| No deploy step | Authorization is included in a transaction; the EVM applies the delegation at execution time. |
| All AA features unlocked | Sponsored gas, ERC-20 gas, sessions, recovery, and batched calls become available on an EOA. |
| Reversible | Authorization for 0x0 clears the delegation. |
Prerequisites
- A signer for the EOA you want to upgrade (private key, wallet client, EIP-1193 provider, or ethers wallet).
- The Startale account
implementationAddress(see Contracts and audits). - The bundler and paymaster URLs from the SCS Portal.
Path A: automatic authorization (recommended)
When you passeip7702Account to toStartaleSmartAccount, the SDK signs the authorization for you on the next UserOperation. This is the cleanest integration: the user signs once, the delegation is applied as part of the same UserOp, and you keep using the same StartaleAccountClient afterwards.
| Symbol | Source | Role |
|---|---|---|
privateKeyToAccount | viem/accounts | Builds a viem LocalAccount for the EOA. |
accountAddress | toStartaleSmartAccount parameter | Pins the smart account to the EOA’s address instead of deriving a new counterfactual one. |
eip7702Account | toStartaleSmartAccount parameter | When set, the SDK uses this signer to sign the EIP-7702 authorization on the next UserOp. |
paymasterContext.paymasterId | request flag | Optional. Sponsoring the upgrade UserOp removes the need for the EOA to hold ETH. |
Path B: manual authorization
If you need to inspect or persist the authorization yourself (for example, to store it server-side), sign it explicitly with a viemWalletClient and pass the result as eip7702Auth.
| Symbol | Source | Role |
|---|---|---|
walletClient.signAuthorization | viem | Returns a SignAuthorizationReturnType over { chainId, address, nonce, ... }. |
eip7702Auth | toStartaleSmartAccount parameter | A pre-signed authorization to attach to the next UserOp. |
- Prepare authorizations server-side and ship them to the client.
- Sign once with a hardware-backed wallet and reuse the result.
- Inspect the structure of the authorization before submitting it.
Send a UserOperation
After either path, the client behaves like any other Startale account client:Inspect and revert
The smart account exposes EIP-7702 helpers directly:| Method | Source | Role |
|---|---|---|
account.isDelegated() | @startale-scs/aa-sdk | Reads the EOA’s code and checks for the 0xef0100 prefix. |
account.unDelegate() | @startale-scs/aa-sdk | Submits an authorization for the zero address, clearing the delegation. |
Caveats
- The authorization is chain-specific unless you set
chainId = 0. Use a fresh authorization per chain in normal flows. - Delegating bumps the EOA’s nonce, just like any other transaction.
- Reverting (
unDelegate) also bumps the nonce.
Next steps
Smart account setup
Wire the EIP-7702 client into a React provider.
Sponsored paymaster
Sponsor the upgrade UserOp itself.
Smart sessions
Issue session keys for the upgraded EOA.
Contracts and audits
Look up the implementation address per network.