ERC-4337 Debugging
Guide to debugging account abstraction issues.
Common Error Codes
| Code | Meaning | Solution |
|---|---|---|
| AA10 | Sender not deployed | Deploy account first |
| AA21 | Insufficient prefund | Add gas funds or use paymaster |
| AA24 | Signature validation failed | Check signer/wallet connection |
| AA25 | Invalid nonce | Refresh nonce or wait for pending tx |
| AA31 | Paymaster deposit too low | Paymaster needs funding |
| AA34 | Signature validation failed | Check 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
- Jiffyscan - UserOp explorer
- Bundler debug mode - Verbose logging
- Tenderly - Transaction simulation