Endless Error Codes
Last updated
Last updated
This page catalogs common errors encountered in the Endless blockchain and explains how to resolve them wherever possible. As with all software, the code itself is the source of truth for error handling and will always contain entries not found here. Instead, this matrix aims to help you address those errors most typically found, misunderstood, or both.
For the sources of these errors, see:
LOOKUP_FAILED
A function that is being called isn't present on the network being used
Check that your dependencies on-chain have the same version
UNKNOWN_VALIDATION_STATUS
We don't want the default value to be valid.
N/A
INVALID_SIGNATURE
The transaction has a bad signature.
Submit a new transaction with a new signature
INVALID_AUTH_KEY
Bad account authentication key.
Submit a new transaction with a new signature, check that the account matches the authentication key and hasn't been rotated
SEQUENCE_NUMBER_TOO_OLD
Sequence number is too old.
Submit a new transaction with a newer sequence number from the account
SEQUENCE_NUMBER_TOO_NEW
Sequence number is too new.
Submit a new transaction with a new signature
INSUFFICIENT_BALANCE_FOR_TRANSACTION_FEE
Insufficient balance to pay minimum transaction fee.
Fund the account with more EDS to pay for the gas fee
TRANSACTION_EXPIRED
The transaction has expired.
Submit a new transaction with an expiration time further in the future
SENDING_ACCOUNT_DOES_NOT_EXIST
The sending account does not exist.
Create the account prior to sending the transaction again
REJECTED_WRITE_SET
This write set transaction was rejected because it did not meet the requirements for one.
N/A
INVALID_WRITE_SET
This write set transaction cannot be applied to the current state.
N/A
EXCEEDED_MAX_TRANSACTION_SIZE
Length of program field in raw transaction exceeded max length.
The transaction is too large for a single transaction; if this is a package publish, try to break it into multiple packages
UNKNOWN_SCRIPT
This script is not in our allowlist of scripts.
N/A
UNKNOWN_MODULE
Transaction is trying to publish a new module.
N/A
MAX_GAS_UNITS_EXCEEDS_MAX_GAS_UNITS_BOUND
Max gas units submitted with transaction exceeds max gas units bound in VM.
Decrease the max gas amount in the transaction below the maximum value in the gas schedule
MAX_GAS_UNITS_BELOW_MIN_TRANSACTION_GAS_UNITS
Max gas units submitted with transaction not enough to cover the intrinsic cost of the transaction.
Increase the max gas amount above the minimum value in the gas schedule
GAS_UNIT_PRICE_BELOW_MIN_BOUND
Gas unit price submitted with transaction is below minimum gas price set in the VM.
Increase the gas unit price below the minimum gas unit price in the gas schedule
GAS_UNIT_PRICE_ABOVE_MAX_BOUND
Gas unit price submitted with the transaction is above the maximum gas price set in the VM.
Decrease the gas unit price below the maximum gas unit price in the gas schedule
INVALID_GAS_SPECIFIER
Gas specifier submitted is either malformed (not a valid identifier), or does not refer to an accepted gas specifier.
N/A
SENDING_ACCOUNT_FROZEN
The sending account is frozen.
N/A
UNABLE_TO_DESERIALIZE_ACCOUNT
Unable to deserialize the account blob.
N/A
CURRENCY_INFO_DOES_NOT_EXIST
The currency info was unable to be found.
N/A
INVALID_MODULE_PUBLISHER
The account sender doesn't have permissions to publish modules.
N/A
NO_ACCOUNT_ROLE
The sending account has no role.
N/A
BAD_CHAIN_ID
The transaction's chain_id does not match the one published on-chain.
Verify that your chain ID matches the chain ID for your network
SEQUENCE_NUMBER_TOO_BIG
The sequence number is too large and would overflow if the transaction were executed.
N/A
BAD_TRANSACTION_FEE_CURRENCY
The gas currency is not registered as a TransactionFee currency.
N/A
FEATURE_UNDER_GATING
The feature requested is intended for a future Endless version instead of the current one.
N/A
SECONDARY_KEYS_ADDRESSES_COUNT_MISMATCH
The number of secondary signer addresses is different from the number of secondary public keys provided.
Verify the multi-agent or multi-ed25519 secondary signer addresses match the secondary public keys
SIGNERS_CONTAIN_DUPLICATES
There are duplicates among signers, including the sender and all the secondary signers.
Remove any duplicate signers
SEQUENCE_NONCE_INVALID
The sequence nonce in the transaction is invalid (too new, too old, or already used).
N/A
CHAIN_ACCOUNT_INFO_DOES_NOT_EXIST
There was an error when accessing chain-specific account information.
N/A
MODULE_ADDRESS_DOES_NOT_MATCH_SENDER
the module publisher is not the account that will eventually hold the module.
Confirm the module address in the move contract matches the sender of the transaction
ZERO_SIZED_STRUCT
Reported when a struct has zero fields.
N/A
DUPLICATE_MODULE_NAME
The sender is trying to publish two modules with the same name in one transaction.
Confirm every module has a unique name
BACKWARD_INCOMPATIBLE_MODULE_UPDATE
The sender is trying to publish a module that breaks the compatibility checks.
Confirm your new modules being published don't break backwards compatibility
CYCLIC_MODULE_DEPENDENCY
The updated module introduces a cyclic dependency (i.e., A uses B and B also uses A).
Check for loops in your module dependencies in the modules being published
INVALID_FRIEND_DECL_WITH_SELF
Cannot mark the module itself as a friend.
Confirm no module has itself marked as a friend in the modules being published
INVALID_FRIEND_DECL_WITH_MODULES_OUTSIDE_ACCOUNT_ADDRESS
Cannot declare modules outside of account address as friends.
Confirm all friends are in the same account address in the modules being published
INVALID_FRIEND_DECL_WITH_MODULES_IN_DEPENDENCIES
Cannot declare modules that this module depends on as friends.
Check friend declarations of the modules being published
CYCLIC_MODULE_FRIENDSHIP
The updated module introduces a cyclic friendship (i.e., A friends B and B also friends A).
Check friend declarations of the modules being published
INVALID_PHANTOM_TYPE_PARAM_POSITION
A phantom type parameter was used in a non-phantom position.
Confirm phantom types are used only with generics
LOOP_MAX_DEPTH_REACHED
Loops are too deeply nested.
Check for many nested loops
TYPE_RESOLUTION_FAILURE
Failed to resolve type due to linking being broken after verification.
N/A
RESOURCE_DOES_NOT_EXIST
We tried to access a resource that does not exist under the account.
Check the contract and possibly change it to handle resources that don't exist
RESOURCE_ALREADY_EXISTS
We tried to create a resource under an account where that resource already exists.
Check the contract and possibly change it to handle resources that already exist
UNKNOWN_STATUS
A reserved status to represent an unknown vm status. This is std::u64::MAX, but we can't pattern match on that, so put the hardcoded value in.
N/A
LINKER_ERROR
This may be due to the function has not been published on chain or by trying to call an invalid function as the result of either an incorrect account address, module name, or function name. This might not happen locally if the sources are available locally but have yet to be published on-chain.
There are many reasons, but you should check your account addresses, module names, and function names to determine that they're correct and published
INVALID_ARGUMENT
Caller specified an invalid argument (HTTP: 400).
OUT_OF_RANGE
An input or result of a computation is out of range (HTTP: 400).
INVALID_STATE
The system is not in a state where the operation can be performed (HTTP: 400).
UNAUTHENTICATED
Request not authenticated due to missing, invalid, or expired authentication token (HTTP: 401).
PERMISSION_DENIED
The client does not have sufficient permission (HTTP: 403).
NOT_FOUND
A specified resource is not found (HTTP: 404).
ABORTED
Concurrency conflict, such as read-modify-write conflict (HTTP: 409).
ALREADY_EXISTS
The resource that a client tried to create already exists (HTTP: 409).
RESOURCE_EXHAUSTED
Out of gas or other forms of quota (HTTP: 429).
CANCELLED
Request cancelled by the client (HTTP: 499).
INTERNAL
Internal error (HTTP: 500).
NOT_IMPLEMENTED
Feature not implemented (HTTP: 501).
UNAVAILABLE
The service is currently unavailable. Indicates that a retry could solve the issue (HTTP: 503).
EACCOUNT_ALREADY_EXISTS
Account already exists.
N/A
EACCOUNT_DOES_NOT_EXIST
Account does not exist.
Create the account first
ESEQUENCE_NUMBER_TOO_BIG
Sequence number exceeds the maximum value for a u64.
Provide a smaller sequence number
EMALFORMED_AUTHENTICATION_KEY
The provided authentication key has an invalid length.
Check your authentication key; it should be a 32-byte vector
ECANNOT_RESERVED_ADDRESS
Cannot create account because address is reserved.
N/A
EOUT_OF_GAS
Transaction exceeded its allocated max gas.
Increase the max gas amount
EWRONG_CURRENT_PUBLIC_KEY
Specified current public key is not correct.
Confirm the public key matches the account
EINVALID_PROOF_OF_KNOWLEDGE
Specified proof of knowledge required to prove ownership of a public key is invalid.
Check your proof of knowledge in key rotation to ensure it has proper signatures
ENO_CAPABILITY
The caller does not have a digital-signature-based capability to call this function.
Confirm you have the capability for the called functions
EINVALID_ACCEPT_ROTATION_CAPABILITY
The caller does not have a valid rotation capability offer from the other account.
Confirm the account being rotated is correct
ENO_VALID_FRAMEWORK_RESERVED_ADDRESS
Address to create is not a valid reserved address for Endless framework.
N/A
EINVALID_SCHEME
Specified scheme required to proceed with the smart contract operation - can only be ED25519_SCHEME(0) OR MULTI_ED25519_SCHEME(1).
Confirm the transaction was signed correctly when creating the account
EINVALID_ORIGINATING_ADDRESS
Abort the transaction if the expected originating address is different from the originating address on-chain.
Confirm you are rotating the correct account's key
ENO_SUCH_SIGNER_CAPABILITY
The signer capability doesn't exist at the given address.
Confirm the address is correct
ECOIN_INFO_ADDRESS_MISMATCH
Address of account which is used to initialize a coin CoinType
doesn't match the deployer of module.
Create the coin using a CoinType
in the same account creating the coin.
ECOIN_INFO_ALREADY_PUBLISHED
CoinType
is already initialized as a coin.
N/A
ECOIN_INFO_NOT_PUBLISHED
CoinType
hasn't been initialized as a coin.
Create the coin with CoinType
first before using it
ECOIN_STORE_ALREADY_PUBLISHED
Account already has CoinStore
registered for CoinType
.
N/A
ECOIN_STORE_NOT_PUBLISHED
Account hasn't registered CoinStore
for CoinType
.
Register the account for the CoinType
EINSUFFICIENT_BALANCE
Not enough coins to complete transaction.
Transfer less coins, or acquire more coins prior to the transfer
EDESTRUCTION_OF_NONZERO_TOKEN
Cannot destroy non-zero coins.
N/A
EZERO_COIN_AMOUNT
Coin amount cannot be zero.
Don't burn coins or conduct other actions with zero coins
EFROZEN
CoinStore is frozen. Coins cannot be deposited or withdrawn.
Account is frozen for this token; talk to the coin owner
ECOIN_SUPPLY_UPGRADE_NOT_SUPPORTED
Cannot upgrade the total supply of coins to different implementation.
N/A
ECOIN_NAME_TOO_LONG
Name of the coin is too long.
Coin name must be less than or equal to 32 characters
ECOIN_SYMBOL_TOO_LONG
Symbol of the coin is too long.
Coin symbol must be less than or equal to 10 characters
EALREADY_HAS_BALANCE
The token has balance and cannot be initialized.
ECOLLECTIONS_NOT_PUBLISHED
There isn't any collection under this account.
ECOLLECTION_NOT_PUBLISHED
Cannot find collection in creator's account.
ECOLLECTION_ALREADY_EXISTS
The collection already exists.
ECREATE_WOULD_EXCEED_COLLECTION_MAXIMUM
Exceeds the collection's maximal number of token_data.
EINSUFFICIENT_BALANCE
Insufficient token balance.
EINVALID_TOKEN_MERGE
Cannot merge the two tokens with different token IDs.
EMINT_WOULD_EXCEED_TOKEN_MAXIMUM
Exceed the token data maximal allowed.
ENO_BURN_CAPABILITY
No burn capability.
ETOKEN_DATA_ALREADY_EXISTS
TokenData already exists.
ETOKEN_DATA_NOT_PUBLISHED
TokenData not published.
ETOKEN_STORE_NOT_PUBLISHED
TokenStore doesn't exist.
ETOKEN_SPLIT_AMOUNT_LARGER_THAN_TOKEN_AMOUNT
Cannot split token to an amount larger than its amount.
EFIELD_NOT_MUTABLE
The field is not mutable.
ENO_MUTATE_CAPABILITY
Not authorized to mutate.
ENO_TOKEN_IN_TOKEN_STORE
Token not in the token store.
EUSER_NOT_OPT_IN_DIRECT_TRANSFER
User didn't opt-in direct transfer.
EWITHDRAW_ZERO
Cannot withdraw 0 token.
ENFT_NOT_SPLITABLE
Cannot split a token that only has 1 amount.
ENO_MINT_CAPABILITY
No mint capability
ECOLLECTION_NAME_TOO_LONG
The collection name is too long.
ENFT_NAME_TOO_LONG
The NFT name is too long.
EURI_TOO_LONG
The URI is too long.
ENO_DEPOSIT_TOKEN_WITH_ZERO_AMOUNT
Cannot deposit a token with 0 amount.
ENO_BURN_TOKEN_WITH_ZERO_AMOUNT
Cannot burn 0 token.
EWITHDRAW_PROOF_EXPIRES
Withdraw proof expires.
EOWNER_CANNOT_BURN_TOKEN
Token is not burnable by owner.
ECREATOR_CANNOT_BURN_TOKEN
Token is not burnable by creator.
ECANNOT_UPDATE_RESERVED_PROPERTY
Reserved fields for token contract. Cannot be updated by user.
EURI_TOO_SHORT
URI too short.
ETOKEN_OFFER_NOT_EXIST
Token offer doesn't exist.