Skip to main content

Account Abstraction

Account abstraction (AA) replaces traditional externally owned accounts (EOAs) with programmable smart contract accounts. This unlocks capabilities that EOAs alone cannot provide:
  • Gas sponsorship — let users transact without holding native tokens for gas fees
  • Batched transactions — bundle multiple operations into a single atomic transaction
  • Session keys — grant temporary, scoped permissions without exposing the primary key
  • Custom authorization — implement multi-factor auth, spending limits, or recovery logic at the account level
  • Programmable accounts — create accounts with built-in rules for corporate or multi-user scenarios
Two standards are currently in use for AA on EVM-based chains:
EIP-4337EIP-7702
How it worksUserOperations processed by bundlers via an EntryPoint contractEOA delegates to a smart contract via a type-4 transaction
Account addressNew smart contract address (different from EOA)Same as your EOA
Chain supportAll EVM chainsRequires chain-level support
InfrastructureBundler + PaymasterProvider-dependent
Gas overheadHigher (extra validation steps)Lower (native execution)
MaturityProduction-readyEmerging
Best forMaximum compatibility, dedicated smart walletKeeping EOA address, simpler flows
Both standards support gas sponsorship and batched transactions.
Learn more about EIP-4337 and EIP-7702 on the Ethereum Improvement Proposals site.

Para Integrations

Para acts as the signer (EOA) that controls smart contract wallets — it is not a smart wallet itself. Para handles secure key management via MPC, while the AA provider deploys and manages the smart contract account on-chain. This means your users’ private keys remain secure and under their control regardless of which provider you choose. Para wraps each provider in a shared SmartAccount interface. Whether you use EIP-4337 or EIP-7702 mode, your application code stays the same — you can swap providers or switch between standards without rewriting transaction logic. Every provider integration is available as an action function (createXxxSmartAccount) — an imperative async function you can call anywhere, including outside React components, inside custom hooks, or in server-side code. React applications also get a hook (useXxxSmartAccount) — a declarative wrapper powered by React Query that handles initialization, caching, and automatic re-creation when config changes. Both return the same SmartAccount object:
import type { Chain, Hex, LocalAccount, TransactionReceipt } from "viem";

interface SmartAccount {
  smartAccountAddress: Hex;              // On-chain account address
  signer: LocalAccount;                 // Para viem signer
  chain: Chain;                          // Configured chain
  mode: "4337" | "7702";                // Account type
  provider: string;                      // Provider name

  // Send a single transaction and wait for receipt
  sendTransaction(params: {
    to: Hex;
    value?: bigint;
    data?: Hex;
  }): Promise<TransactionReceipt>;

  // Send batched transactions atomically
  sendBatchTransaction(calls: Array<{
    to: Hex;
    value?: bigint;
    data?: Hex;
  }>): Promise<TransactionReceipt>;

  client: any;                           // Provider-specific client for advanced usage
}
When using mode: "7702", the return type narrows to include an optional delegationAddress field — the smart contract the EOA delegates to. When using mode: "4337", smartAccountAddress is the counterfactual smart contract address (different from signer.address).

Provider Comparison

Provider43377702External WalletsChain RestrictionsKey Feature
AlchemyAlchemy-supported chainsModular accounts, gas policies
ZeroDevAny EVM chainKernel accounts, session keys, plugins
PimlicoAny EVM chainPermissionless SDK, flexible paymaster
BiconomyMEE-supported chainsCross-chain orchestration via MEE
ThirdwebAny EVM chainSmart wallets, gas sponsorship
GelatoAny EVM chainNative 7702, built-in gas sponsorship
PortoMultiple chains7702-native relay, merchant-based gas sponsorship
SafeAny EVM chainMulti-sig, modular accounts
RhinestoneAny EVM chainCross-chain orchestration
Coinbase Developer PlatformBase, Base Sepolia onlyCoinbase smart accounts

Provider Guides

Server-side AA uses the same createXxxSmartAccount action functions as the React SDK — no hooks needed. Select a provider below for installation and usage instructions.
You’ll need a Para Server SDK session before calling any createXxxSmartAccount function. See the for details on initializing Para and importing sessions.
provides modular smart accounts with built-in gas sponsorship via Alchemy’s Gas Manager. Create and manage smart accounts, submit gasless transactions, and execute batched UserOperations. Supports both EIP-4337 and EIP-7702 modes.

Setup

  1. Create an and obtain your API key and Gas Policy ID from the Alchemy dashboard.
  2. Install the required dependencies:
npm install @getpara/server-sdk @getpara/aa-alchemy viem

Usage

alchemy-server.ts
import { Para as ParaServer, Environment } from "@getpara/server-sdk";
import { createAlchemySmartAccount } from "@getpara/aa-alchemy";
import { sepolia } from "viem/chains";
import { parseEther } from "viem";

const para = new ParaServer(Environment.BETA, process.env.PARA_API_KEY!);
await para.importSession(serializedSession);

const smartAccount = await createAlchemySmartAccount({
  para,
  apiKey: process.env.ALCHEMY_API_KEY!,
  chain: sepolia,
  gasPolicyId: process.env.ALCHEMY_GAS_POLICY_ID, // optional: for gas sponsorship
  mode: "4337", // or "7702"
});

// Get the smart wallet address (different from Para EOA in 4337 mode)
console.log("Smart wallet address:", smartAccount.smartAccountAddress);

// Send a single transaction
const receipt = await smartAccount.sendTransaction({
  to: "0xRecipient",
  value: parseEther("0.01"),
});
console.log("Transaction hash:", receipt.transactionHash);

// Send batched transactions atomically
const batchReceipt = await smartAccount.sendBatchTransaction([
  { to: "0xRecipientA", value: parseEther("0.01") },
  { to: "0xContractAddress", data: "0xencodedCallData" },
]);
console.log("Batch tx hash:", batchReceipt.transactionHash);
Alchemy requires chains from @account-kit/infra (e.g. sepolia, baseSepolia). Plain viem chains are automatically mapped if an Alchemy equivalent exists. For gasless transactions, set up a Gas Manager Policy in your and pass the policy ID as gasPolicyId.
In EIP-4337 mode, funds must be sent to smartAccount.smartAccountAddress — not to the Para EOA address. The smart wallet is the entity that holds funds and executes transactions on-chain.

Troubleshooting

If transactions fail, verify that the Para session is valid and that the smart account address has sufficient funds (in 4337 mode). For gas-sponsored transactions, confirm your policy ID and that the transaction meets the policy requirements.
First-time use of an AA wallet requires contract deployment, which can be more expensive. Ensure you have sufficient funds in the Para EOA for this initial deployment.
If using gas sponsorship, verify your policy ID and settings in the AA provider’s dashboard. Also check that the transaction meets the policy requirements (value limits, allowed functions, etc.).

Examples