Skip to content

Smart Accounts

A Smart Account is a smart contract that acts as a user’s wallet. Unlike a traditional Externally Owned Account (EOA) like MetaMask, which is controlled directly by a single private key, a Smart Account defines its logic in code.

0xGasless uses the industry-standard ERC-4337 to enable this.

EOAs are notoriously difficult for mainstream users:

  • Gas: You need ETH to do anything. Want to send USDC? You need ETH first.
  • Batches: Approving a token and calling a contract takes two separate transactions and two separate signatures.
  • Key Loss: If you lose your seed phrase, you lose your wallet.

Smart Accounts fix these problems by moving validation and execution on-chain:

  1. Gasless Transactions: A “Paymaster” can sponsor the gas for your users. They transact for free.
  2. Pay gas with ERC-20s: If you don’t sponsor them, users can pay gas in USDC instead of ETH.
  3. Batched Transactions: Approve and swap in a single click.
  4. Session Keys: Grant an app permission to trade on your behalf for 1 hour without asking for a signature every time.
  5. Account Recovery: Set up guardians to restore access if the primary key is lost.

Instead of sending standard transactions directly to the network, the user signs a UserOperation — a data structure describing what they want to do.

  1. The user signs the UserOperation.
  2. The app sends it to a Bundler.
  3. The Bundler groups multiple UserOperations together and submits them to the global EntryPoint contract.
  4. The EntryPoint validates the signature via the user’s Smart Account.
  5. If a Paymaster is involved, the EntryPoint charges the Paymaster for gas.
  6. The EntryPoint tells the Smart Account to execute the transaction.

The @0xgasless/smart-account SDK handles all of this complexity. You don’t need to manually construct UserOperations, negotiate with Bundlers, or calculate Paymaster deposits.

If you are using the Embedded Wallet (0xgas-auth), it sets up the smart account for you automatically under the hood via OxGasClient.