0%
SupportWallet Services
How to Resolve entryPoint AAxx Errors

How to Resolve entryPoint AAxx Errors

Written by
Liang
Published on August 1, 20245 min read

Getting AAxx coded errors from the EntryPoint?

Here’s a TL;DR to what they indicate and how you can resolve these:

  • AA1x error codes relate to creating an account

  • AA2x error codes relate to the sender of the user operation

  • AA3x error codes relate to paymasters

  • AA4x error codes relate to verification

  • AA5x errors relate to post execution actions

  • AA9x error codes are general and not related to a certain theme

The sender has already been created.

This error may occur if you attempt to create an account multiple times.

Remove the initCode from the userOp struct.

The initCode failed to create the smart account.

There are two possible reasons:

  1. The initCode ran out of gas (OOG)

  2. The initCode reverted during the account deployment process 

  1. Check the account has native token to pay for its deployment if you aren't using a paymaster.

  2. Check that the factory address in the initCode is correct (the factory address is the first 20 bytes of the initCode).

  3. Check that the verificationGasLimit is high enough for the initCode to complete without running out of gas.

  4. If the initCode reverted, investigate why using tools like Tenderly.

The address of the smart account deployed with the initCode does not match the sender address of the userOperation.

  1. Check that the initCode is correct.

    1. The first 20 bytes should be the factory address.

    2. The remaining bytes should be the encoded function call.

  2. Verify that the sender address was generated deterministically from initCode.

The initCode does not return any sender address.

1. The initCode factory is not creating an account.

2. The initCode factory is creating an account, but is not returning the deployed sender address.

  1. Check that the initCode is correct.

    1. The first 20 bytes should be the factory address.

    2. The remaining bytes should be the encoded function call.

  2. Verify that the initCode factory is implemented correctly, i.e., it deploys the smart account and returns the sender address.

The sender of the userOperation is not deployed and the initCode is not specified.

  1. Check that you are using the correct sender address.

  2. If this is the first transaction by this account make sure the initCode is included in the userOp.

  3. Check that you are sending the userOp to the correct network.

The sender did not have enough native tokens to prefund the EntryPoint for the user operation.

  1. If you are not using a paymaster, check that the account has enough native token to cover the required prefund.

  2. If you are using a paymaster, check that the paymaster and data fields are set.

The signature of the user operation is not valid because it is outside of the specified time range. This error occurs when the block.timestamp is after the validUntil timestamp or before the validAfter timestamp.

  1. If you are using time-based signatures, check that the validAfter and validUntil fields are set correctly and that the userOp is sent within the specified range.

  2. If you not using time-based signatures, check that the validAfter and validUntil fields are set to 0.

The sender signature validation reverted or ran out of gas (OOG).

  1. Check that the verificationGasLimit is high enough to cover the gas costs of validateUserOp.

  2. If you are not using a paymaster, check that the sender has enough native tokens to cover the required prefund.

  3. If you are us a paymaster to cover the gas fees, verify that the paymaster and data fields are set.

The signature of the userOp is invalid.

Check that the userOp was correctly signed.

  1. The userOpHash is correctly computed.

  2. The entryPointAddress is correct.

  3. The chainId is correct

  4. The smart account expects the same type of signature.

The nonce of the userOp is invalid. The userOp may be reusing an old nonce or formatting the nonce incorrectly.

  1. Check that you are not using a nonce that has already been used.

  2. Check that you are not using a nonce that is too far in the future (more than 10 higher than the current nonce.

  3. Check that the nonce is formatted correctly.

The paymaster contract is not deployed.

  1. Check that the first 20 bytes of the paymasterAndData field are the address of the paymaster contract you intend to use.

  2. Check that the paymaster contract is deployed on the network you are using.

The paymaster contract does not have enough funds deposited into the EntryPoint contract to cover the gas of the userOp.

Add more funds into the paymaster contract.

The paymaster's signature is outside of the specified time range and has expired.

Make sure you are sending the userOp within the sponsorship expiry period specified in your Gas Manager policy.

The paymaster signature was rejected or verifying the paymaster signature ran out of gas (OOG).

  1. Verify that the verificationGasLimit is high enough to cover the validatePaymasterUserOp function's gas costs.

  2. .Verify If the userOp is well formed with a high enough verificationGasLimit.

The paymaster's signature is invalid.

Check the format of the signature in the paymasterAndData or the paymaster field depending on the EntryPoint version you are using.

The amount of gas used to verify the smart account or paymaster signature was higher than userOp's verificationGasLimit.

  1. Check that the verificationGasLimit set for the userOp is high enough to cover the gas used for smart account and paymaster verification.

  2. Investigate why the smart account and/or paymaster used more gas than expected using tools like Tenderly.

Verifying the userOp took too much gas and did not complete.

Increase verificationGasLimit.

AA50 postOp reverted

The paymaster contract's postOp function reverted.

Open a support ticket

The actual gas cost of the userOp ended was higher than the prefund covered by the smart account or the paymaster.

Increase the prefund covered limit for UO for smart contract account or gas manager policy.

The bundler specified an invalid address or the zero address as the beneficiary of the userOp.

Verify the beneficiary address is correct.

The beneficiary of the bundler fee was unable to receive compensation from the EntryPoint.

Open a support ticket.

The innerHandleOp function was attempted to be called by an entity other than the EntryPoint. This function is restricted to the EntryPoint's handleOps function.

Open a support ticket.

The paymasterAndData field is of an incorrect length.

Check that paymasterAndData is either empty or at least 20 bytes long.

A gas value of the userOp did not fit into a uint160.

Check that all the gas limit and gas price fields of the userOp fit into uint160.

The bundle of userOperations was aborted because the specified gas limit was too low.

Increasing the gas limit or Open a support ticket.

The bundler tried to bundle aggregated userOps with an invalid aggregator.

Open a support ticket.

Was this article helpful?
Share:
Banner background image

Not finding what you need?