Common errors

This page summarises common errors that you might encounter while developing on Acala EVM+. If an error occurs that is not listed here, please reach out, so we might lend a hand and include it on this page.

ProviderError: Error: -32603: execution fatal

{ index: 180, error: 0, message: None }

Error name: AddressNotMapped

Error explanation: This means that maintenance features are called on a smart contract, that doesn't have an EVM address bound to it

Common causes:

  • Should not happen, because even if no user account is associated with the smart contract, it should bind to the 0x0 address

Suggested actions:

  • We suggest reaching out to us, so we can help you investigate the issue

{ index: 180, error: 1, message: None }

Error name: ContractNotFound

Error explanation: This means that maintenance actions are being preformed on an address that is not a smart contract

Common causes:

  • Usually happens when trying to maintain a non-existent or already deleted smart contract

Suggested actions:

  • We suggest reviewing the address you are trying to maintain

{ index: 180, error: 2, message: None }

Error name: NoPermission

Error explanation: This means that the account is not allowed to interact with the smart contract

Common causes:

  • This means that the account is not allowed to interact with the smart contract

Suggested actions:

  • If the user wants to interact with the smart contract before it is published, they can turn on the development mode

  • It the smart contract maintainer wishes to enable non-developer users to interact with the smart contract, they can publish the smart contract

{ index: 180, error: 3, message: None }

Error name: ContractDevelopmentNotEnabled

Error explanation: This means that the account doesn't have the development mode enabled

Common causes:

  • Usually happens when account doesn't have development mode enabled and the user tries to disable the development mode

Suggested actions:

  • If you wish for the development mode to be disabled, you don't need to do anything

  • If you wish to enable the development mode, you can enable it by following the documentation

{ index: 180, error: 4, message: None }

Error name: ContractDevelopmentAlreadyEnabled

Error explanation: This means that the account already has the development mode enabled

Common causes:

  • Usually happens when account has development mode enabled and the user tries to enable the development mode

Suggested actions:

  • If you wish for the development mode to be enabled, you don't need to do anything

  • If you wish to disable the development mode, you can enable it by following the documentation

{ index: 180, error: 5, message: None }

Error name: ContractAlreadyPublished

Error explanation: This means that the smart contract is already published

Common causes:

  • Usually happens when trying to publish an already published smart contract

Suggested actions:

  • If you wish for the smart contract to be published, you don't need to do anything

  • If you wish that the smart contract wouldn't be reachable by users that don't have development mode enabled, you can delete it and redeploy it

{ index: 180, error: 6, message: None })&#x20

Error name: ContractExceedsMaxCodeSize

Error explanation: This means that the smart contract file size is too big

Common causes:

  • Usually happens when trying to deploy a smart contract that is too big

Suggested actions:

  • We suggest refactoring your smart contract, so that the file size is decreased

{ index: 180, error: 7, message: None }

Error name: ContractAlreadyExisted

Error explanation: This means that the same address has already been used and can't be used again

Common causes:

  • Usually happens when the substrate account, to which the EVM+ account has been bound, has been reaped, which resulted in the EVM+ account nonce being reset. This in turn can cause the EVM+ to try and create a smart contract at an address that has already been used

Suggested actions:

  • We suggest using another EVM+ account

NOTE: This behaviour should be made obsolete. If you encounter this error, please reach out to us, so we can investigate.

{ index: 180, error: 8, message: None }

Error name: OutOfStorage

Error explanation: This means that the storage usage of the transaction is greater than the storage limit

Common causes:

  • Usually happens when transaction changes a number of states and the storage limit value is too low

Suggested actions:

  • We suggest increasing the storage limit value of the transaction

  • If the storage limit exceeds the maximum storage limit we suggest reviewing the call initiated by the transaction and adapting it to change less states

{ index: 180, error: 9, message: None }

Error name: ChargeFeeFailed

Error explanation: This means that the smart contract, that is trying to use Schedule predeployed smart contract, doesn't have enough funds to pay for the Schedule transaction fees

Common causes:

  • Usually happens when either the smart contract has too low of a balance or the scheduled call is too complex

Suggested actions:

  • We suggest additionally funding the smart contract or reviewing the scheduled call in order to make it more efficient

{ index: 180, error: 10, message: None }

Error name: CannotKillContract

Error explanation: This means that killing the smart contract has failed

Common causes:

  • Usually happens when trying to kill a non-existent function

Suggested actions:

  • We suggest reviewing the address you are using to kill the smart contract and checking for typos or missed characters

{ index: 180, error: 11, message: None }

Error name: ReserveStorageFailed

Error explanation: This means that the account doesn't have enough funds to put data into storage

Common causes:

  • Usually happens when trying to change a lot of states in a single transaction

Suggested actions:

  • We suggest reviewing the call and reducing the number of states that are changed within it

  • If the number of states changed by the call can't be reduced, we suggest adding funds to the account

{ index: 180, error: 12, message: None }

Error name: UnreserveStorageFailed

Error explanation: This means that releasing the storage has failed

Common causes:

  • Usually happens when the storage rent is increased after the storage has been rented, but not before it has been released

Suggested actions:

  • We suggest reaching out to the team as this shouldn't happen under normal circumstances

{ index: 180, error: 13, message: None }

Error name: ChargeStorageFailed

Error explanation: This means that charging the storage rent has failed

Common causes:

  • None

Suggested actions:

  • We suggest reaching out to the team if you encounter this error

{ index: 180, error: 14, message: None }

Error name: InvalidDecimals

Error explanation: This means that the value provided was too low

Common causes:

  • Usually happens when trying to convert wei to ACA or KAR. As ACA and KAR have 12 decimal spaces and the EVM+ expects the native currency to have 18, this error might occur during the conversion.

Suggested actions:

  • We suggest only using the values greater than 1_000_000 when referring to a native currency in wei

Named Errors

Error: 1010: Invalid transaction: Transaction is outdated

Error name: Transaction is outdated

Error explanation: This means that the transaction's validUntil value is too low or that there is already a transaction with the same nonce in the chain.

Common causes:

  • validUntil value of the transaction is lower than current block number

  • Transaction nonce is the same as one of the preexisting transactions had

Suggested actions:

  • Verify that the transaction has a valid validUntil value and update it if the block number of the chain is higher

  • Reset the account nonce, to make sure it corresponds to the one associated with the account nonce on chain

Error: 1012: Invalid transaction: Transaction is temporary banned

Error name: Transaction is temporary banned

Error explanation: This means that an identic transaction to this one has already failed, so mining this transaction won't be attempted. This behaviour is narrated by Substrate and has to be supported.

Common causes:

  • Transaction identic to this one has recently failed

Suggested actions:

  • Review logs and identify the original error to address it

  • If the previous error can't be found, wait for 15 minutes and re-attempt sending the transaction. The original error message should be returned

Other Errors

invalid ETH gasLimit/gasPrice combination provided

We don't support inputting random gasLimit/gasPrice combination. Please read through the gas params section, which has detailed explanation of how to provide valid gas params.

Transaction hash mismatch from Provider.sendTransaction

Common causes:

This is usually cause by using ethers.JsonRpcProvider as provider when sending a transaction. JsonRpcProvider expects a pre-calculated ETH style tx hash. However, the algorithm we use to derive the result tx hash is different than traditional EVM world, causing the mismatch.

Suggested actions:

Use AcalaJsonRpcProvider as a drop-in replacement.

For example:

import { AcalaJsonRpcProvider } from "@acala-network/eth-providers";

// https://evmdocs.acala.network/network/network-configuration#karura-mainnet
const KARURA_ETH_RPC= 'https://eth-rpc-karura.aca-api.network';
const provider = new AcalaJsonRpcProvider(KARURA_ETH_RPC);

// send transaction
const wallet = new Wallet(PRIVATE_KEY, provider);
const contractInstance = new Contract(CONTRACT_ADDR, CONTRACT_ABI, wallet);
await contractInstance.someMethod();

Note that JsonRpcProvider should still work in most cases, such as getting account balance, etc... The only senario that this error occur is when sending a transaction with Provider.sendTransaction.

Also, such error only occurs with ethers.JsonRpcProvider, and using other providers (such as metamask's provider) should be fine.

Account cannot exist with the funds that would be given

Common causes:

Each address needs a minimum balance of 0.1 ACA/KAR, this is called Existential Deposit. Sending a transaction with value lower than ED to a new address will result in this error.

Suggested actions:

  • when sending native token to a new EOA, make sure the value is greater than ED, which is 0.1 ACA/KAR.

  • if target address is a contract that handles payments, we can send 0.1 ACA/KAR to the contract right after the it is deployed, so this error won't occur for any following transactions.

Last updated