Endless
  • 🚀README
  • Discovery
    • 🚀Endless Web3 Genesis Cloud
    • 💎Business Model
    • 🎯Vision
    • ✈️Roadmap
    • 🪙Economics
    • 👤Team
      • Yu Xiong
      • Amit Kumar Jaiswal
      • Ned
      • 0xfun
      • Scott Trowbridge
      • Neeraj Sharma LLB
      • Amjad Suleman
      • Binu Paul
      • Eduard Romulus GOEAN
    • ❤️Developer Community
  • Endless Chain
    • Tech Docs
      • Account Address Format
      • Endless Account
      • Endless Coin(EDS)
      • Sponsored Transaction
      • On-Chain Multisig
      • Randomness
      • Safety Transaction
      • Token Locking & Distribution
    • Start
      • Learn about Endless
        • Accounts
        • Resources
        • Events
        • Transactions and States
        • Gas and Storage Fees
        • Computing Transaction Gas
        • Blocks
        • Staking
          • Delegated Staking
        • Governance
        • Endless Blockchain Deep Dive
          • Validator Nodes Overview
          • Fullnodes Overview
          • Node Networks and Synchronization
        • Move - A Web3 Language and Runtime
      • Explore Endless
      • Latest Endless Releases
      • Networks
    • Build
      • Tutorials
        • Your First Transaction
        • Your First Fungible Asset
        • Your First NFT
        • Your First Move Module
        • Your First Multisig
      • Learn the Move Language
        • The Move Book
          • Getting Started
            • Introduction
            • Modules and Scripts
          • Primitive Types
            • Move Tutorial
            • Integers
            • Bool
            • Address
            • Vector
            • Signer
            • References
            • Tuples and Unit
          • Basic Concepts
            • Local Variables and Scope
            • Equality
            • Abort and Assert
            • Conditionals
            • While, For, and Loop
            • Functions
            • Structs and Resources
            • Constants
            • Generics
            • Abilities
            • Uses and Aliases
            • Friends
            • Packages
            • Package Upgrades
            • Unit Tests
          • Global Storage
            • Global Storage - Structure
            • Global Storage - Operators
          • Reference
            • Libraries
            • Move Coding Conventions
        • Advanced Move Guides
          • Objects
            • Creating Objects
            • Configuring objects
            • Using objects
          • Move Scripts
            • Writing Move Scripts
            • Compiling Move Scripts
            • Running Move Scripts
            • Move Scripts Tutorial
          • Resource Accounts
          • Modules on Endless
          • Cryptography
          • Gas Profiling
          • Security
      • Endless Standards
        • Object
        • Endless Fungible Asset Standard
        • Endless Digital Asset Standard
        • Endless Wallet Standard
      • Endless APIs
        • Fullnode Rest API
        • Indexer Restful API
          • Indexer Installation
        • GRPC Transaction Stream
          • Running Locally
          • Custom Processors
            • End-to-End Tutorial
            • Parsing Transactions
          • Self-Hosted Transaction Stream Service
      • Endless SDKs
        • TypeScript SDK
          • Account
          • SDK Configuration
          • Fetch data from chain
          • Transaction Builder
          • HTTP Client
          • Move Types
          • Testing
          • Typescript
        • Rust SDK
        • Go SDK
      • Endless CLI
        • Install the Endless CLI
          • Install On Mac
          • Install On Alibaba Cloud
          • Install On Linux
          • Install On Windows
        • CLI Configuration
        • Use Endless CLI
          • Working With Move Contracts
            • Arguments in JSON Tutorial
          • Trying Things On-Chain
            • Look Up On-Chain Account Info
            • Create Test Accounts
          • Running A Local Network
            • Running a Public Network
          • Managing a Network Node
      • Integrate with Endless
        • Endless Token Overview
        • Application Integration Guide
      • Endless VSCode extension
      • Advanced Builder Guides
        • Develop Locally
          • Running a Local Network
          • Run a Localnet with Validator
    • Nodes
      • Learn about Nodes
      • Run a Validator and VFN
        • Node Requirements
        • Deploy Nodes
          • Using Docker
          • Using AWS
          • Using Azure
          • Using GCP
        • Connect Nodes
          • Connect to a Network
        • Verify Nodes
          • Node Health
          • Validator Leaderboard
      • Run a Public Fullnode
        • PFN Requirements
        • Deploy a PFN
          • Using Pre-compiled Binary
          • Using Docker
          • Using GCP 🚧 (under_construction)
        • Verify a PFN
        • Modify a PFN
          • Upgrade your PFN
          • Generate a PFN Identity
          • Customize PFN Networks
      • Bootstrap a Node
        • Bootstrap from a Snapshot
        • Bootstrap from a Backup
      • Configure a Node
        • State Synchronization
        • Data Pruning
        • Telemetry
        • Locating Node Files
          • Files For Mainnet
          • Files For Testnet
          • Files For Devnet
      • Monitor a Node
        • Node Inspection Service
        • Important Node Metrics
        • Node Health Checker
    • Reference
      • Endless Error Codes
      • Move Reference Documentation
      • Endless Glossary
    • FAQs
  • Endless Bridge
    • Intro to Endless Bridge
    • How to use bridge
    • Liquidity Management
    • Faucet
    • Developer Integration
      • Contract Integration
        • Message Contract
        • Execute Contract
      • Server-Side Integration
        • Message Sender
        • Example of Message Listener Service (Rust)
        • Example of Token Cross-Chain (JS)
  • Endless Wallet
    • User Guide
    • Basic Tutorial
    • FAQs
    • MultiAccount
    • SDK
      • Functions
      • Events
  • GameFi
    • Intro
    • GameFi & Endless
  • Endless Modules
    • Stacks
    • Storage
    • Module List
  • Endless Ecosystem
    • Intro
    • Show Cases
    • App Demo
  • Whitepaper
  • Endless SCAN
    • User Guide
  • MULTI-SIGNATURE
    • Multi-Signature User Guide
  • Regulations
    • Privacy Policy
    • Terms of Service
    • Funding Terms - Disclaimer
Powered by GitBook
On this page
  • Error Codes in Endless
  • Move Virtual Machine (VM)
  • Move Standard Library (stdlib)
  • Endless accounts
  • Endless coins
  • Endless tokens
Export as PDF
  1. Endless Chain
  2. Reference

Endless Error Codes

PreviousReferenceNextMove Reference Documentation

Last updated 2 months ago

Error Codes in Endless

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:

Move Virtual Machine (VM)

Error
Meaning
Possible Resolution

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

Move Standard Library (stdlib)

Error
Meaning

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).

Endless accounts

Error
Meaning
Possible Resolution

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

Endless coins

Error
Meaning
Possible Resolution

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

Endless tokens

Error
Meaning

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.

vm_status.rs
error.move
account.move
coin.move
token.move