Smart Accounts
At a technical level, a Smart Account is a deployed EVM contract that implements the ERC-4337 standard. It stores your assets (tokens, NFTs) and exposes a single unified entry point for sending transactions.
The Problem with EOAs
Section titled “The Problem with EOAs”When you use a standard wallet like MetaMask (an Externally Owned Account, or EOA), the logic is hardcoded into the Ethereum protocol itself:
- A transaction MUST be signed by the private key matching the sender address.
- The sender MUST pay gas in ETH.
This is rigid. If you want to require two signatures (multisig), or pay gas in USDC, or let an app sign on your behalf with a daily limit, you can’t — unless you build a smart contract to proxy everything.
The Smart Account Solution
Section titled “The Smart Account Solution”ERC-4337 standardizes these “proxy contracts” into Smart Accounts.
Instead of hardcoded protocol rules, the validation logic lives in your contract’s code. When a transaction (called a UserOperation) arrives:
- The global
EntryPointcontract asks your Smart Account: “Is this signature valid?” - If your Smart Account returns success, the
EntryPointcharges gas (or charges a Paymaster) and tells your Smart Account to execute the call.
Signers vs. Accounts
Section titled “Signers vs. Accounts”It’s critical to separate the Signer from the Account.
- Signer: A cryptographic keypack (like an EOA, a passkey, or a KMS key via
0xgas-auth) that signs messages. - Account: The smart contract on the blockchain holding the assets.
One Signer can control many Accounts. One Account can be controlled by many Signers (multisig). With 0xGasless, we typically use our Embedded Wallet (KMS Signer) to control a single, deterministic Smart Account per user per chain.
Counterfactual Deployment
Section titled “Counterfactual Deployment”You don’t need to deploy a Smart Account before receiving funds.
When you initialize a Smart Account via the SDK, it calculates the address where the contract will be deployed based on the Signer and an initial configuration. You can send ETH, USDC, or NFTs to this calculating address immediately.
The actual contract deployment happens automatically in the very first UserOperation the user sends, completely hidden from their view.