## EIP-7702 (Delegated EOAs) EIP-7702 lets EOAs delegate code execution to a smart contract, gaining smart wallet capabilities (multisig, social recovery, session keys, gas sponsorship) without migrating to a new account. **How it works:** 1. EOA signs an authorization message pointing to a contract address. 2. A type `0x04` transaction submits this authorization (can be sent by the EOA or a third party / gas sponsor). 3. The EOA becomes "delegated" and behaves as if it has the delegated contract's code. **Monad-specific behaviors:** - **Balance floor:** Delegated EOAs cannot have transactions reduce their balance below 10 MON. If the balance is already below 10 MON but unchanged or increased by the transaction, it succeeds. - **No CREATE/CREATE2:** Contract code executing within a delegated EOA's context cannot use `CREATE` or `CREATE2` opcodes (the call frame reverts). This prevents nonce manipulation. Standard contract-creation transactions from the EOA are still allowed. - Delegations persist indefinitely until explicitly cleared (send a `0x04` transaction with `0x0000...0000` as the delegate address). **viem example:** ```typescript import { createWalletClient, http } from 'viem' import { monadTestnet } from 'viem/chains' import { privateKeyToAccount } from 'viem/accounts' const account = privateKeyToAccount('0x...') const walletClient = createWalletClient({ account, chain: monadTestnet, transport: http(), }) const authorization = await walletClient.signAuthorization({ account, contractAddress: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', }) const hash = await walletClient.sendTransaction({ authorizationList: [authorization], data: '0xdeadbeef', to: walletClient.account.address, }) ``` Reference: https://docs.monad.xyz/developer-essentials/eip-7702