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.