AA33 reverted (or OOG)
The validatePaymasterUserOp function of the paymaster contract either reverted or ran out of gas.
Possible solutions
- Verify that the
verificationGasLimitis high enough to cover thevalidatePaymasterUserOpfunction's gas costs. - If you are using your own paymaster contract, verify that the
validatePaymasterUserOpfunction is implemented with the correct logic, and that the user operation is supposed to be valid. - If you are using your own paymaster contract, make sure the signature verification logic of the paymaster is implemented correctly. Namely, correct implementations should not revert when the paymaster signature is invalid. If you are not looking to use neither time-based signatures, you should simply return
uint(1)for invalid signatures in thevalidatePaymasterUserOpfunction. - If you are using a paymaster service like Pimlico, and the user operation is well formed with a high enough
verificationGasLimit, reach out to them. - If you are not looking to use a paymaster to cover the gas fees, verify that the
paymasterAndDatafield is not set.
const userOperationHash = await bundlerClient.sendUserOperation({
paymasterAndData: "0x3b912be0270b59143985cc5c6aab452d99e2b4bb0000000000000000000000000000000000000000000000000000000064c0957400000000000000000000000000000000000000000000000000000000000000007d99385d8ef0af67affbf9944df8c121e9d1f6aef8dd82a4aeb5db310c42d3dc5b51c9e0835d94c3b22564d3d94f0e1d14e37571e46651da8de567d128a361a01b",
paymasterAndData: "0x",
..., // the rest of the user operation
})- If all else fails, investigate why the
validatePaymasterUserOpfunction reverted using tools like Tenderly.