Account Abstraction Explained
Overview
Account Abstraction (AA) is an optional advanced feature available in SSP Wallet for Ethereum-compatible networks. While SSP's primary architecture uses traditional 2-of-2 multisignature addresses, users can optionally enable Account Abstraction features on EVM chains for enhanced functionality.
Important: Most SSP Wallet users use traditional multisig addresses which work on all supported blockchains. Account Abstraction is an advanced option for users who need specific features like gasless transactions or smart contract wallet capabilities.
ποΈ SSP's Dual Architecture
Primary Architecture: Traditional 2-of-2 Multisignature
β
Used by: All SSP Wallet users
β
Networks: Bitcoin, Litecoin, Dogecoin, Ethereum, Polygon, BSC, etc.
β
Address Types: P2SH, P2WSH (Bitcoin-like), EOA (Ethereum-like)
β
Security: True 2-of-2 multisignature protection
Optional Feature: Account Abstraction
β‘ Used by: Advanced users who enable AA features
β‘ Networks: Ethereum, Polygon, BSC, Base, Avalanche only
β‘ Address Types: Smart contract wallets
β‘ Enhanced Features: Gasless transactions, batch operations
π§ How SSP Implements Account Abstraction
Blockchain Support with AA
Based on the actual codebase, SSP supports Account Abstraction on:
Ethereum
1
0x3974821943e9cA3549744D910999332eE387Fda4
0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789
Polygon
137
0x3974821943e9cA3549744D910999332eE387Fda4
0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789
BSC
56
0x3974821943e9cA3549744D910999332eE387Fda4
0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789
Base
8453
0x3974821943e9cA3549744D910999332eE387Fda4
0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789
Avalanche
43114
0x3974821943e9cA3549744D910999332eE387Fda4
0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789
Schnorr Multisignature Integration
SSP's unique implementation combines Account Abstraction with Schnorr multisignatures:
// From the actual SSP codebase
import * as aaSchnorrMultisig from '@runonflux/aa-schnorr-multisig-sdk';
// Create Schnorr signers for both keys
const signerOne = aaSchnorrMultisig.helpers.SchnorrHelpers.createSchnorrSigner(
walletPrivateKey
);
const signerTwo = aaSchnorrMultisig.helpers.SchnorrHelpers.createSchnorrSigner(
mobilePrivateKey
);
// Generate multisig signature
const publicKeys = [signerOne.getPubKey(), signerTwo.getPubKey()];
const publicNonces = [signerOne.getPubNonces(), signerTwo.getPubNonces()];
const combinedPublicKey = aaSchnorrMultisig.signers.Schnorrkel.getCombinedPublicKey(publicKeys);
β‘ Account Abstraction Features
When to Use Account Abstraction
Use traditional multisig for:
β Bitcoin and UTXO-based transactions
β Standard Ethereum transactions
β Maximum compatibility across all networks
β Simplest user experience
Use Account Abstraction for:
β‘ Gasless transactions (someone else pays fees)
β‘ Batch multiple operations in one transaction
β‘ Smart contract wallet features
β‘ Advanced DeFi integrations
Available AA Features
1. User Operations
Instead of regular transactions, AA uses User Operations:
// Example from SSP codebase
const userOp: UserOperationRequest_v6 = {
sender: smartAccountAddress,
nonce: await getNonce(),
callData: encodedTransactionData,
callGasLimit: '750000',
verificationGasLimit: '100000',
preVerificationGas: '21000',
maxFeePerGas: baseFee.toString(),
maxPriorityFeePerGas: priorityFee.toString(),
signature: schnorrMultisigSignature
};
2. Smart Account Client
// From SSP's constructTx.ts
const smartAccountClient = createSmartAccountClient({
transport: viemHttp(node),
chain: viemChain,
account: {
address: contractAddress as `0x${string}`,
async signMessage() {
// SSP's Schnorr multisig signing
return await generateSchnorrMultisigSignature();
}
}
});
π Technical Implementation Details
Gas Configuration
Based on the actual blockchain configurations:
// Actual gas settings from SSP codebase
const gasSettings = {
ethereum: {
baseFee: 11, // 11 gwei
priorityFee: 2, // 2 gwei
gasLimit: 750000
},
polygon: {
baseFee: 50, // 50 gwei
priorityFee: 5, // 5 gwei
gasLimit: 750000
},
base: {
baseFee: 0.1, // 0.1 gwei
priorityFee: 0.01, // 0.01 gwei
gasLimit: 750000
}
};
Message Signing with Schnorr
SSP implements advanced message signing using Schnorr multisignatures:
// Real implementation from schnorr-multisig-summary.md
const { signature: sigOne, challenge } = signerOne.signMultiSigMsg(
message, publicKeys, publicNonces
);
const { signature: sigTwo } = signerTwo.signMultiSigMsg(
message, publicKeys, publicNonces
);
const sSummed = aaSchnorrMultisig.signers.Schnorrkel.sumSigs([sigOne, sigTwo]);
// ABI encode for on-chain verification
const px = ethers.hexlify(combinedPublicKey.buffer.subarray(1, 33));
const parity = combinedPublicKey.buffer[0] - 2 + 27;
const sigData = abiCoder.encode(
['bytes32', 'bytes32', 'bytes32', 'uint8'],
[px, challenge.buffer, sSummed.buffer, parity]
);
π― When to Enable Account Abstraction
For Regular Users
Recommendation: Use traditional multisig addresses (default behavior)
Works on all networks (Bitcoin, Ethereum, etc.)
Simpler user experience
Lower gas costs for basic operations
Full 2-of-2 multisignature security
For Advanced Users
Consider AA when you need:
Gasless transactions
Batch operations
Smart contract wallet features
Advanced DeFi integrations
Custom transaction logic
π Enabling Account Abstraction
Account Abstraction features are automatically available on supported EVM networks. Users can access them through:
WalletConnect dApps that support ERC-4337
Advanced transaction options in SSP Wallet
Developer integrations using SSP's AA SDK
β οΈ Important Limitations
Account Abstraction is NOT available on:
β Bitcoin and UTXO-based networks
β Networks without AA infrastructure
β All operations (only specific AA features)
Traditional Multisig is ALWAYS available:
β All supported networks
β All transaction types
β Standard wallet operations
β Maximum compatibility
π Performance Comparison
Networks
All 15+ networks
EVM networks only
Gas Cost
Standard
Higher base cost
Features
Standard wallet
Advanced features
Complexity
Simple
More complex
Compatibility
Universal
AA-enabled dApps
π Integration Examples
Using Traditional Multisig (Default)
// Standard SSP Wallet transaction (works everywhere)
const transaction = {
to: recipientAddress,
value: amount,
data: '0x'
};
// SSP handles 2-of-2 multisig automatically
Using Account Abstraction (Optional)
// Only available on EVM networks with AA support
const userOperation = {
target: contractAddress,
value: 0,
data: encodeFunctionData({
abi: contractAbi,
functionName: 'batchTransfer',
args: [recipients, amounts]
})
};
// Enables advanced features like batching
π Additional Resources
Documentation
Schnorr Multisig Summary - Technical implementation details
ERC-4337 Standard - Account Abstraction specification
Developer Resources
SSP AA SDK - Schnorr multisig integration
Account Abstraction Repository - SSP's AA implementation
Next Steps
Schnorr Signatures & Message Signing - Deep dive into SSP's signature system
Smart Contract Interaction - Advanced contract integration
Developer Integration - Build with SSP's AA features
Account Abstraction is a powerful optional feature in SSP Wallet. Most users will benefit from SSP's secure traditional multisig addresses, while advanced users can enable AA features when needed for specific use cases.
Last updated