Skip to main content

ERC-4337 Debugging

Guide to debugging account abstraction issues.

Common Error Codes

CodeMeaningSolution
AA10Sender not deployedDeploy account first
AA21Insufficient prefundAdd gas funds or use paymaster
AA24Signature validation failedCheck signer/wallet connection
AA25Invalid nonceRefresh nonce or wait for pending tx
AA31Paymaster deposit too lowPaymaster needs funding
AA34Signature validation failedCheck signature format

Debugging Steps

1. Check Wallet Connection

const address = await wallet.getAddress();
console.log("Connected:", address);

2. Verify Nonce

const nonce = await entryPoint.getNonce(account, 0);
console.log("Current nonce:", nonce);

3. Test Paymaster

const paymasterData = await paymaster.getPaymasterData(userOp);
console.log("Paymaster response:", paymasterData);

4. Simulate UserOp

try {
await entryPoint.simulateValidation(userOp);
} catch (e) {
console.log("Simulation error:", e.errorName);
}

Tools