AA21 didn't pay prefund
You are not using a paymaster, but the sender
address did not have enough native tokens to cover the gas costs associated with the user operation.
Possible solutions
- If you are not using a paymaster, verify that the
sender
address has enough native tokens to cover the required prefund. Consider leveraging functions likegetRequiredPrefund
.
const requiredPrefund = getRequiredPrefund({
userOperation
})
const senderBalance = await publicClient.getBalance({
address: userOperation.sender
})
if (senderBalance < requiredPrefund) {
throw new Error(`Sender address does not have enough native tokens`)
}
- If you are looking to use a paymaster to cover the gas fees, verify that the
paymasterAndData
field is set.
const userOperationHash = await bundlerClient.sendUserOperation({
paymasterAndData: "0x3b912be0270b59143985cc5c6aab452d99e2b4bb0000000000000000000000000000000000000000000000000000000064c0957400000000000000000000000000000000000000000000000000000000000000007d99385d8ef0af67affbf9944df8c121e9d1f6aef8dd82a4aeb5db310c42d3dc5b51c9e0835d94c3b22564d3d94f0e1d14e37571e46651da8de567d128a361a01b",
..., // the rest of the user operation
})