6.9 KiB
Smart Accounts Troubleshooting Guide
Date: 2026-01-26
Network: ChainID 138 (SMOM-DBIS-138)
Common Issues and Solutions
Smart Account Creation
Issue: Cannot Create Smart Account
Symptoms:
- Transaction fails
- Error: "Insufficient funds"
- Error: "Contract deployment failed"
Solutions:
-
Check ETH Balance: Ensure sufficient ETH for gas
cast balance $USER_ADDRESS --rpc-url $RPC_URL_138 -
Check RPC Connection: Verify RPC endpoint is accessible
cast block-number --rpc-url $RPC_URL_138 -
Check EntryPoint: Verify EntryPoint is deployed
cast code $ENTRY_POINT_ADDRESS --rpc-url $RPC_URL_138 -
Check AccountFactory: Verify AccountFactory is deployed
cast code $ACCOUNT_FACTORY_ADDRESS --rpc-url $RPC_URL_138
Issue: Smart Account Creation Takes Too Long
Symptoms:
- Transaction pending for extended time
- No confirmation received
Solutions:
- Check Network: Verify network is not congested
- Increase Gas Price: Use higher gas price
- Check Transaction: Verify transaction was submitted
cast tx $TX_HASH --rpc-url $RPC_URL_138
AccountWalletRegistry Integration
Issue: Cannot Link Smart Account
Symptoms:
- Error: "AccountWalletRegistryExtended: not a contract"
- Error: "AccountWalletRegistryExtended: zero smartAccount"
Solutions:
-
Verify Smart Account: Ensure address is a contract
cast code $SMART_ACCOUNT_ADDRESS --rpc-url $RPC_URL_138 -
Check Permissions: Verify caller has ACCOUNT_MANAGER_ROLE
registry.hasRole(registry.ACCOUNT_MANAGER_ROLE(), caller) -
Check Address: Ensure address is not zero address
Issue: isSmartAccount() Returns False
Symptoms:
isSmartAccount()returns false for valid smart account- Smart account not detected
Solutions:
-
Verify Link: Check if smart account was linked
registry.isLinked(accountRefId, walletRefId) -
Check Mapping: Verify
_isSmartAccountmapping is set -
Re-link: Try linking the smart account again
Delegation Issues
Issue: Delegation Request Fails
Symptoms:
- Error: "User rejected"
- Error: "Permission denied"
Solutions:
- Check MetaMask: Ensure MetaMask is unlocked
- Check Network: Verify connected to ChainID 138
- Review Request: Check delegation request details
- Try Again: Retry after refresh
Issue: Delegation Not Working
Symptoms:
- dApp cannot execute transactions
- Error: "Delegation expired"
Solutions:
-
Check Status: Verify delegation is active
const status = await kit.getDelegationStatus({ target: dAppAddress, account: smartAccountAddress, }); -
Check Expiry: Verify delegation hasn't expired
if (status.expiry < Date.now()) { // Delegation expired, request new one } -
Check Permissions: Verify required permissions are granted
-
Revoke and Re-grant: Try revoking and re-granting delegation
Advanced Permissions Issues
Issue: Permission Request Denied
Symptoms:
- Permission request rejected
- Error: "Permission denied"
Solutions:
- Check MetaMask: Ensure MetaMask is unlocked
- Review Request: Check permission details
- Check Function: Verify function selector is correct
- Try Again: Retry after refresh
Issue: Permission Not Working
Symptoms:
- Permission granted but function fails
- Error: "Permission denied"
Solutions:
-
Check Permission: Verify permission is granted
const hasPermission = await kit.hasPermission({ account: smartAccountAddress, target: contractAddress, functionSelector: functionSelector, }); -
Check Function Selector: Verify selector matches
-
Check Target: Verify contract address is correct
-
Revoke and Re-grant: Try revoking and re-granting permission
User Operations (Batch) Issues
Issue: Batch Operation Fails
Symptoms:
- Batch transaction fails
- Error: "User operation failed"
Solutions:
- Check Operations: Verify all operations are valid
- Check Gas: Ensure sufficient gas for batch
- Check Permissions: Verify required permissions are granted
- Try Individually: Test operations individually first
Gas Abstraction Issues
Issue: Gas Abstraction Not Working
Symptoms:
- User still pays gas
- Error: "Paymaster not configured"
Solutions:
-
Check Paymaster: Verify Paymaster is deployed
cast code $PAYMASTER_ADDRESS --rpc-url $RPC_URL_138 -
Check Configuration: Verify Paymaster is configured in SDK
const kit = new SmartAccountsKit({ paymasterAddress: '0x...', // Must be set }); -
Check Funding: Verify Paymaster has funds
-
Check Policy: Verify Paymaster policy allows operation
Debugging Tools
Check Smart Account
# Check if address is a contract
cast code $SMART_ACCOUNT_ADDRESS --rpc-url $RPC_URL_138
# Check balance
cast balance $SMART_ACCOUNT_ADDRESS --rpc-url $RPC_URL_138
# Check nonce
cast nonce $SMART_ACCOUNT_ADDRESS --rpc-url $RPC_URL_138
Check Delegation
// Check delegation status
const status = await kit.getDelegationStatus({
target: dAppAddress,
account: smartAccountAddress,
});
console.log('Active:', status.active);
console.log('Expires:', status.expiry);
console.log('Permissions:', status.permissions);
Check Permissions
// Check permission
const hasPermission = await kit.hasPermission({
account: smartAccountAddress,
target: contractAddress,
functionSelector: functionSelector,
});
console.log('Has permission:', hasPermission);
Getting Help
Documentation
- Smart Accounts User Guide
- Smart Accounts Developer Guide
- Delegation Usage Guide
- Advanced Permissions Guide
Support Channels
- Check Documentation: Review guides first
- Search Issues: Check for similar issues
- Contact Support: Reach out to support team
- Community: Ask in community forums
Prevention Tips
Best Practices
- Test First: Test on testnet before mainnet
- Check Balances: Ensure sufficient funds
- Verify Contracts: Check contract addresses
- Monitor Expiry: Track delegation/permission expiry
- Review Permissions: Review before granting
Monitoring
- Transaction History: Monitor transaction history
- Delegation Status: Check active delegations
- Permission Status: Check granted permissions
- Error Logs: Review error logs regularly
Last Updated: 2026-01-26