EOSIO

Available on:

  • EOS Mainnet
  • Worbli
  • WAX
  • EOSIO Testnet
  • CryptoKylin Testnet
  • Your own network

Ethereum (Alpha)

Available on:

  • Ethereum Mainnet
  • Ropsten

Solana

Coming soon...

Common Errors on EOSIO and How to Get Past Them

May 6, 2020 3:13:26 PM / by dfuse

Within the EOSIO platform, there are a host of error messages that an end-user may encounter. Deciphering these messages may seem impossible at times, leading to many screenshots being passed around different support channels.

To help new developers and users overcome these challenges, we decided to put together a small guide to help you overcome the most common error messages.

It is important to note that some wallets or interfaces that you are interacting with may reformat the error to make it more readable. For example, the output from nodeos itself (the operating software for EOSIO) may look something like this:


{
  "code": 500,
  "message": "Internal Service Error",
  "error": {
    "code": 3080004,
    "name": "tx_cpu_usage_exceeded",
    "what": "Transaction exceeded the current CPU usage limit imposed on the transaction",
    "details": [
      {
        "message": "billed CPU time (2115 us) is greater than the maximum billable CPU time for the transaction (162 us)",
        "file": "transaction_context.cpp",
        "line_number": 553,
        "method": "validate_cpu_usage_to_bill"
      }
    ]
  }
}

While the error message that you are presented with may just be this: `billed CPU time (2115 us) is greater than the maximum billable CPU time for the transaction (162 us)

Within this article, we will always use the second, smaller format.

Error 1: Insufficient CPU Available

Transaction failed - billed CPU time (1342 us) is greater than the maximum billable CPU time for the transactions (71 us)

This means that the account that is being billed for the CPU has an insufficient amount of tokens delegated towards the CPU resource. CPU is measured in microseconds (us) and is the amount of time a transaction will take to run on the Block Producer’s node.

Solution: You need to have more tokens delegated towards CPU.

You can either use your own tokens to delegate towards CPU resources, or have another user’s account delegate for you. Note that you will often see the words stake and delegate used interchangeably. You may also opt to rent some resources from the Resource Exchange (known as REX) if it is available on the EOSIO chain that you are using, by opening up a CPU loan. This loan will grant your account CPU resources for 30 days, at which point you can either choose to renew or not.

Pro tip

Your CPU will reset completely after 24 hours. When checking your account on a block explorer, it may still show that your account has used some CPU, as it only updates after you push another transaction. But rest assured that after 24 hours, your CPU consumption will completely reset.

Error 2: Incorrect signatures

Provided keys, permissions, and delays do not satisfy declared authorizations, transaction declares authority '{"actor":"testaccount1","permission":"active"}', but does not have signatures for it under a provided delay of 0 ms, provided permissions [], provided keys [EOS7j9ViHGp….Po57], and a delay max limit of 3888000000

This error is caused when a user is trying to sign a transaction but is using the wrong keys for the requested authority. Some common causes for this may be that you have multiple keys within your wallet, or having reset your wallet and no longer having access to previous keys.

Solution: Sign with the correct keys

Not every user knows how to verify which key they should be signing with. First thing would be to go to your block explorer of choice and view your account. There should be somewhere that lists the permissions of the account. If you were to use eosq, you would find it here:

eosio-permissions-on-eosq

From there, you’ll see the public key that will need to match the private key you are signing with. For the most part, you’ll be signing with your active permission, so you’ll want to compare against that key specifically.

If you have reset your wallet at some point, you may need to restore from a backup or from a seed phrase to utilize the correct key. This process differs for each wallet, but at least now you’ll know how to check if this is the path you need to take to fix the issue.

Pro tip

Learn about the EOSIO account permission system. It has some incredible functionality once you learn how to use it. We recommend creating an account on any testnet and changing the keys, setting up custom permissions, and getting comfortable with keys in general. It’s not as daunting as it seems!

Error 3: Arbitrary Data is not enabled

Transaction failed - Please enable arbitrary data on ledger device within EOS app. {"name":"TransportError","message":"Failed to sign with Ledger device: U2F TIMEOUT"

Solution: Enable arbitrary data signing

Users that utilize a Ledger hardware wallet will encounter this error unless they enable the signing of arbitrary data. The next logical question is “what is arbitrary data?” Any action that is not part of the core system contracts would be considered arbitrary data. So unless you want to only interact with the system contracts, you’ll need to enable this feature.

Pro tip

When updating the software for your Ledger device, you may need to re-enable this feature. So if it begins to give you this error again, please double check that the feature is still enabled.

Error 4: Irrelevant authority

updateauth action declares irrelevant authority '{"actor":"testaccount1","permission":"active"}'; minimum authority is {"actor":"testaccount1","permission":"owner"}

One example where you may encounter this error will be when trying to change the owner permission of an account. If you are changing the keys for your owner permission, you’ll need to utilize your owner authority to make the change. Unless specified, your wallet will be trying to sign with your active permission by default.

You can think of the permission structure as a family tree, with the top parent permission having control over everything below it, and each branch down can control itself and everything below that. So it only works in one direction.

Solution: Make sure you are using the correct permission

Make sure that whichever wallet you are using has the correct keys to sign for the correct permission level. owner is the top-most permission and can be used to control every permission level below it.

Pro tip

You should always keep your owner key safe and only use active and below. Should your keys become compromised in any way, you’ll have the ability to use your owner key to recover your account.

Error 5: Block Producer voting

Transaction failed - producer is not currently registered

To avoid the issue where a user has taken a “set it and forget it” approach to their voting, one check that occurs when casting a vote for Block Producers is to ensure that all the selected Producers are currently still registered. So if you receive this error, it means that one of your favourite Block Producer Candidates has unregistered themselves.

Solution: Ensure the Block Producers are all still active

You can check to see if all of your favourite Block Producers are still listed as active on any block explorer. If any are no longer active, simply remove them from your list and replace them with another great Block Producer.

Pro tip

It’s possible that a Block Producer has run into an issue with their infrastructure and had to unregister for a short period while they fix the issue. So the first step before going through all 30 vote choices may be to just try again in a few hours and see if the issue goes away by itself.

Error 6: Custom account names

Assertion failure with message: only suffix may create this account

Within EOSIO chains, there is a namespace auction that occurs to award users the ability to create account names that are shorter than 12 characters. They can then use those to create “subdomain” names. As an example, if you won the auction for the name com, you could then create subdomain names like custom.com or crypto.com. This is because you would own the suffix com. So if you try to create a custom name without having first won the auction to grant you that ability, you will be stopped by this error.

Solution: Win a namespace auction

To create your custom account name, you’ll need to participate in the namespace auctions. These auctions close at most once per 24 hours, and only if the current bid for a namespace has been the highest bid of all auctions for a full 24 hours. You can learn more about the namespace auction system in this article.

Pro tip

You can also use one of the different services in the market that allow you to purchase a subdomain name from a user who has won the namespace auction.

Error 7: Account has insufficient RAM

Transaction failed - Account using more than allotted RAM usage, account testaccount1 has insufficient ram; needs 4468 bytes has 4382 bytes.

One of the three resources on EOSIO chains is RAM. RAM is used to persistently store data for your account. Since it is persistent in nature, each account will need to purchase RAM, rather than stake for it.

Solution: Purchase RAM

If you encounter this error, you just need to buy enough RAM to at least make up the difference between what you have and what the transaction needs to complete. You will be able to do this through any web wallet interface, with some wallets having the functionality built right in.

Pro tip
If you hold a token in your account and then spend or sell all of that token, your account will still have that RAM consumed. To free up the RAM that is storing a 0 balance, you must check to see if that contract has a close action. Once you call this action, your RAM will be freed up and ready to use for something else.

 

Errors Resolved

These are just some of the more common error messages that you may encounter when interacting with an EOSIO blockchain. Let us know if you are running into any others. You can do so in the dfuse Telegram channel and on Twitter where we’re most active. And when you have the chance, stop and star our open source GitHub repository. We’ll always love you for it!

topics Education, EOSIO, eosq, tutorials