Introduction to Account Abstraction
Learn about Account Abstraction, wallet custody types, and how MSA API empowers developers to build secure wallet solutions.
Account Abstraction (AA) represents a paradigm shift in how wallets work on Ethereum and EVM-compatible blockchains. Instead of relying solely on Externally Owned Accounts (EOAs) controlled by private keys, Account Abstraction enables programmable smart contract wallets with customizable validation logic.
What is Account Abstraction?
Traditional Ethereum accounts have limitations:
- Single signature requirement: Only one private key controls the account
- Fixed gas payment: Only ETH can be used to pay for gas
- Limited recovery options: Lose your private key, lose your wallet
- Poor UX: Complex transaction signing flow
Account Abstraction solves these problems by making wallets programmable smart contracts that can:
- Use multiple signature schemes (ECDSA, passkeys, multi-sig)
- Pay gas with any ERC-20 token via paymasters
- Implement custom recovery mechanisms
- Batch multiple operations into a single transaction
- Provide familiar Web2-like user experiences
How MSA API Works
The MSA API abstracts the complexity of Account Abstraction, providing developers with simple REST endpoints to:
1. Create Wallets
Deploy smart contract wallets with various custody options:
// Using API HTTP (fetch) for wallet creation
const response = await fetch('https://api.msa.omnes.tech/create', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
accounts: [{
walletCustody: 3, // ECDSA_PASSKEY_VALIDATOR
salt: "user@example.com",
passkeyPubKey: ["base64-encoded-key"]
}],
settings: { /* ... */ }
})
});
const wallet = await response.json();2. Execute Transactions
Send UserOperations through the Entry Point contract:
// Using SmartWallet SDK for transaction execution
import { PKSigner, SmartWallet, AccountOperations, Operation } from '@omnes/smartwallet-ts-sdk';
const signer = await PKSigner.create(privateKey as `0x${string}`);
const smartWallet = await SmartWallet.create(
signer.signMessage,
signer.signMessage,
signer.getEVMAddress(),
rpcURL,
apiKey
);
const operations: Operation = {
to: "0x...", // Token contract
value: BigInt(0),
funcSignature: "transfer(address,uint256)",
params: ["0x...", 1000000000000000000] // 1 token
};
const accountOperations: AccountOperations[] = [{
account: {
walletCustody: 1,
salt: "user@example.com",
publicKeys: []
},
operations: [operations],
settings: {}
}];
const result = await smartWallet.buildAndRequestSendUserOperations(
accountOperations,
[],
[]
);3. Manage Security
Configure validators, signers, and recovery mechanisms:
// Add a new signer to a multisig wallet
const result = await msaClient.addSigner({
to: walletAddress,
funcSignature: "addSigner(address,(bool,bool,bool,bool))",
funcParams: [
newSignerAddress,
[true, true, true, true] // Permissions
]
});Key Concepts
Custody Types
MSA API supports five custody configurations:
1. ECDSA_VALIDATOR (Traditional)
- Standard ECDSA signature validation
- Similar to traditional wallets
- Good for simple use cases
2. ECDSA_PASSKEY_VALIDATOR (Hybrid)
- Combines ECDSA signatures with passkey authentication
- Enhanced security through biometric verification
- Ideal for consumer applications
3. PASSKEY_VALIDATOR (Biometric)
- Pure passkey-based authentication
- No private keys to manage
- Perfect for Web2-native experiences
4. MULTISIG_VALIDATOR (Shared Control)
- Traditional M-of-N multi-signature setup
- Shared custody between multiple parties
- Essential for organizational use
5. MULTISIG_PASSKEY_VALIDATOR (Enterprise)
- Multi-signature with passkey support
- Maximum security for high-value scenarios
- Combines shared control with biometric auth
Entry Points and UserOperations
Account Abstraction uses a standardized flow:
- UserOperation: A structure containing transaction intent
- Entry Point: Smart contract that validates and executes UserOperations
- Bundler: Service that submits UserOperations to the Entry Point
- Paymaster: Optional contract that sponsors gas payments
graph LR
A[User Intent] --> B[UserOperation]
B --> C[MSA API]
C --> D[Bundler]
D --> E[Entry Point]
E --> F[Smart Wallet]
F --> G[Target Contract]Gas Management
MSA API handles gas optimization automatically:
- Gas Estimation: Predicts gas costs before execution
- Gas Overshoot: Configurable buffer to prevent failures
- Paymaster Integration: Support for sponsored transactions
- Multi-chain: Optimized for different network conditions
Security Features
HSM/MPC Integration
- Hardware Security Module support
- Multi-Party Computation signing
- Enterprise-grade key management
- Fireblocks integration
Validation Layers
- Custom signature validation logic
- Time-based restrictions
- Spending limits
- Recovery mechanisms
Audit Trail
- Complete transaction history
- Signature verification logs
- Gas usage analytics
- Error tracking
Benefits for Developers
Simplified Integration
- RESTful API design
- TypeScript SDK with full type safety
- HTTP examples for other languages
- Extensive documentation
Multi-Language Support
- TypeScript SDK: Full-featured SDK (
@omnes/smartwallet-ts-sdk) - HTTP Examples: JavaScript (fetch), Python (requests), cURL
- OpenAPI Specification: For custom integrations
Testing & Development
- Testnet support
- Sandbox environments
- Transaction simulation
- Gas estimation tools
Enterprise Ready
- High availability infrastructure
- Rate limiting and quotas
- Monitoring and alerting
- SLA guarantees
Use Cases
Consumer Applications
- Passwordless wallet onboarding
- Biometric transaction signing
- Gas-sponsored user experiences
- Social recovery mechanisms
Enterprise Solutions
- Multi-signature treasury management
- Automated payment processing
- Compliance-friendly workflows
- Integration with existing systems
DeFi Integration
- Smart contract wallet compatibility
- Token approvals and transfers
- Liquidity pool interactions
- Yield farming automation
Gaming & NFTs
- In-game asset management
- Gasless microtransactions
- Batch NFT operations
- Player-owned economies
Next Steps
Now that you understand the fundamentals, you're ready to:
- Set up Authentication - Configure your API credentials
- Quick Start Guide - Create your first wallet
- Explore Wallet Management - Learn advanced wallet features
๐ Deep Dive: Want to learn more about Account Abstraction? Check out EIP-4337 for the technical specification.