What is a Bundler?
A bundler is an ERC-4337 service that:- Accepts UserOperations from clients
- Validates UserOperations against EntryPoint rules
- Bundles multiple UserOperations into a single transaction
- Submits the bundle to the blockchain
- Handles gas price estimation and nonce management
Getting Your ZeroDev Project ID
Access ZeroDev Dashboard
Open https://dashboard.zerodev.app/projects/general and sign in.
Select or Create Project
- If you have existing projects, select one from the list
- If you have no projects, click Create New Project
- The project name and settings don’t affect recovery operations
Copy Project ID
On the project page, find the Project ID displayed in the top-right corner.It looks like:
a1b2c3d4-5678-90ab-cdef-1234567890abClick the copy icon to copy the Project ID to your clipboard.Alternative: Full Bundler URL
Instead of just the Project ID, you can provide a complete bundler URL:Using just the Project ID is recommended. The app automatically switches the chain ID in the URL when you change chains.
UserOperation Submission Flow
When you execute a rescue action, the app submits a UserOperation through this flow:Get Gas Prices
Request gas prices from the bundler or chain:Gas prices are bumped by 10-20% to handle price increases.
Gas Estimation Details
Gas Components
Each UserOperation has three gas parameters:| Parameter | Description | Typical Value |
|---|---|---|
| callGasLimit | Gas for executing the call | 80,000 - 200,000 |
| verificationGasLimit | Gas for validating the signature | 150,000 - 300,000 |
| preVerificationGas | Gas for bundler overhead | 40,000 - 60,000 |
Buffering Strategy
Fromlib/accountAbstraction/submitUserOpV07.ts:
Gas Price Bumping
The app applies gas price buffers:Retry Logic
Nonce Conflicts
If a nonce error occurs (AA25), the app refreshes and retries:Gas Price Too Low
If the bundler rejects due to low gas price:Signature Methods
The app tries multiple signature methods for compatibility:Troubleshooting
'Kernel wallet is not deployed on this chain' error
'Kernel wallet is not deployed on this chain' error
The wallet address has no code on the current chain:
- Verify you’re on the correct chain
- Check that you’ve used this wallet index on this chain before
- The wallet must have been deployed through a previous transaction
'Invalid account nonce' (AA25) error
'Invalid account nonce' (AA25) error
The nonce in your UserOperation doesn’t match the on-chain nonce:
- The app automatically retries once with refreshed nonce
- This can happen if another transaction was submitted between estimation and sending
- Wait a few seconds and try again
'maxFeePerGas must be at least X' error
'maxFeePerGas must be at least X' error
The bundler requires higher gas prices:
- The app automatically retries with bumped gas price (110%)
- This happens during periods of high network congestion
- The retry usually succeeds
Gas estimation returns very high values
Gas estimation returns very high values
Some bundlers return inflated estimates:
- The app uses fallback values if estimates seem unreasonable
- Default fallbacks: callGas=80k, verificationGas=250k, preVerificationGas=40k
- These are then buffered by 50%
'User rejected' error during signing
'User rejected' error during signing
You declined the signature request in your wallet:
- Click the rescue action button again
- Approve the signature request when it appears
- The signature is for the UserOperation hash, not a transaction
Security Considerations
No Paymaster = You Pay GasUnlike typical account abstraction apps, Borrow Recovery doesn’t use a paymaster. You must fund your Kernel wallet with native tokens to pay for UserOperation gas.
Advanced Configuration
Custom Bundler Providers
While ZeroDev is recommended, you can use any ERC-4337 v0.7 compatible bundler:- Must support EntryPoint v0.7
- Must implement
eth_estimateUserOperationGas - Must implement
eth_sendUserOperation - Optionally:
zd_getUserOperationGasPriceorpimlico_getUserOperationGasPrice
Reading UserOperation Receipt
After submission, you can check the status:Next Steps
Wallet Recovery
Return to the full recovery workflow
Aave Operations
Execute Aave V3 rescue actions