EIP-7702
Stable supports EIP-7702, which allows an EOA to set its account code to an existing smart contract. EOAs keep their original address and private key while executing the delegate's logic.
Transaction format
EIP-7702 uses transaction type 0x04 with an authorizationList field. Each authorization designates a delegate contract whose code the EOA executes for that transaction.
{
type: 4,
to: eoa.address,
data: delegateCallData,
authorizationList: [signedAuthorization],
maxPriorityFeePerGas: 0n, // always 0 on Stable
// ... standard EIP-1559 fields
}The authorization carries:
chainId: must match the target chain.address: the delegate contract address.nonce: the authorization nonce (separate from the transaction nonce).
Wallets and libraries that support EIP-7702 handle the authorization format automatically.
Tooling
- ethers.js:
wallet.signAuthorization({ chainId, address, nonce })produces the signed authorization for inclusion in theauthorizationList. - viem: use
signAuthorizationwith a walletClient, then pass the result tosendTransaction. - Hardhat / Foundry: standard EIP-7702 transaction format works when your toolchain version supports the Pectra hardfork.
Next recommended
- EIP-7702 concept — Understand the delegation model and when to use it.
- Account Abstraction (EIP-7702) — Implement batch payments, spending limits, and session keys step by step.

