Error Domains
Overview
Section titled “Overview”Ashen groups errors into five numeric domains. These codes appear in RPC
responses and logs via the unified ChainError structure:
code: numeric error code (e.g., 1001)name: stable, machine-readable identifiermessage: human-readable description
Domains:
- E1xxx: Consensus/DKG
- E2xxx: VM/Execution
- E3xxx: Storage/State
- E4xxx: Transaction
- E5xxx: Network/RPC
E1xxx: Consensus/DKG Errors
Section titled “E1xxx: Consensus/DKG Errors”| Code | Name | Description |
|---|---|---|
| E1001 | INVALID_SIGNATURE | Block signature verification failed |
| E1002 | HEIGHT_MISMATCH | Block height does not match expected height |
| E1003 | PARENT_NOT_FOUND | Parent block not found in chain |
| E1004 | INVALID_TIMESTAMP | Block timestamp is invalid or in the future |
| E1005 | UNAUTHORIZED_PROPOSER | Block proposer is not authorized for this slot |
| E1006 | DUPLICATE_BLOCK | Block has already been received |
| E1007 | VALIDATION_FAILED | Block validation failed |
| E1008 | INVALID_FINALITY_CERTIFICATE | Finality certificate is invalid |
| E1009 | EPOCH_MISMATCH | Block epoch does not match expected epoch |
| E1010 | VIEW_MISMATCH | Block view does not match expected view |
| E1101 | DKG_SHARE_VERIFICATION_FAILED | DKG share verification failed |
| E1102 | DKG_INVALID_COMMITMENT | DKG commitment is invalid |
| E1103 | DKG_THRESHOLD_NOT_MET | DKG threshold not met for key reconstruction |
| E1104 | DKG_PARTICIPANT_NOT_FOUND | DKG participant not found |
| E1105 | DKG_ALREADY_COMPLETED | DKG has already completed for this epoch |
| E1106 | DKG_NOT_STARTED | DKG has not started for this epoch |
| E1107 | DKG_DECRYPTION_FAILED | DKG share decryption failed |
| E1108 | DKG_INVALID_COMPLAINT | DKG complaint is invalid |
| E1109 | DKG_INVALID_JUSTIFICATION | DKG justification is invalid |
| E1110 | DKG_SHARE_NOT_FOUND | DKG share not found after key generation |
| E1111 | DKG_NETWORK_TIMEOUT | DKG network timeout during protocol execution |
| E1112 | DKG_INVALID_CONTRIBUTION | DKG invalid contribution from peer |
| E1113 | DKG_TOO_MANY_PARTICIPANTS | DKG participant count exceeds maximum |
| E1114 | DKG_INDEX_OUT_OF_BOUNDS | DKG internal index out of bounds |
| E1115 | DKG_CONSECUTIVE_FALLBACK | DKG consecutive fallback (back-to-back epoch failures) |
| E1116 | DKG_EMPTY_PARTICIPANTS | DKG participant set is empty |
| E1117 | DKG_FAILED | DKG failed for epoch |
| E1201 | INSUFFICIENT_VOTES | Insufficient votes for finality |
| E1202 | UNKNOWN_VALIDATOR | Vote from unknown validator |
| E1203 | DUPLICATE_VOTE | Duplicate vote from validator |
| E1204 | VOTE_EPOCH_MISMATCH | Vote is for wrong epoch |
| E1205 | VOTE_SIGNATURE_INVALID | Vote signature is invalid |
| E1301 | LC_VALIDATOR_SET_ID_MISMATCH | Validator set ID mismatch in finality proof |
| E1302 | LC_INVALID_MEMBERSHIP_PROOF | Invalid membership proof for aggregate key |
| E1303 | LC_TRANSITION_COMMITMENT_MISMATCH | Validator set transition commitment mismatch |
| E1304 | LC_TRANSITION_VERSION_NOT_INCREASED | Validator set version did not increase |
| E1305 | LC_TRANSITION_NOT_AT_EPOCH_BOUNDARY | Validator set transition not at epoch boundary |
| E1306 | LC_NO_PENDING_UPDATE | No pending validator set update |
| E1307 | LC_DATA_UNAVAILABLE | Data unavailability detected (DAS verification failed) |
| E1308 | LC_DAS_TIMEOUT | Data availability verification timed out |
| E1401 | KEY_ROTATION_ALREADY_PENDING | Key rotation already pending for validator |
E2xxx: VM/Execution Errors
Section titled “E2xxx: VM/Execution Errors”| Code | Name | Description |
|---|---|---|
| E2001 | OUT_OF_GAS | Execution ran out of gas |
| E2002 | INVALID_OPCODE | Invalid opcode encountered |
| E2003 | STACK_OVERFLOW | Stack overflow |
| E2004 | STACK_UNDERFLOW | Stack underflow |
| E2005 | MEMORY_OUT_OF_BOUNDS | Memory access out of bounds |
| E2006 | DIVISION_BY_ZERO | Division by zero |
| E2007 | INTEGER_OVERFLOW | Integer overflow |
| E2008 | INVALID_MEMORY_ACCESS | Invalid memory access |
| E2009 | TRAP | Execution trap |
| E2010 | INVALID_CALL_TARGET | Invalid call target address |
| E2011 | CSR_FORBIDDEN | CSR instruction is forbidden |
| E2012 | BUFFER_TOO_SMALL | Buffer too small for operation |
| E2013 | INVALID_GAS_SCHEDULE | Invalid gas schedule specified |
| E2101 | CONTRACT_NOT_FOUND | Contract not found at address |
| E2102 | INVALID_CONTRACT_CODE | Contract code is invalid |
| E2103 | DEPLOYMENT_FAILED | Contract deployment failed |
| E2104 | REVERT | Contract execution reverted |
| E2105 | PANIC | Contract panicked |
| E2106 | INVALID_ABI_VERSION | Invalid ABI version |
| E2107 | UNKNOWN_SELECTOR | Unknown function selector |
| E2108 | INVALID_CALLDATA | Invalid calldata format |
| E2109 | CONTRACT_ALREADY_EXISTS | Contract already exists at address |
| E2201 | HEAP_CAP_PER_FRAME | Heap memory cap exceeded for frame |
| E2202 | STACK_CAP_PER_FRAME | Stack memory cap exceeded for frame |
| E2203 | HEAP_CAP_PER_TX | Heap memory cap exceeded for transaction |
| E2204 | JOURNAL_CAP | Journal entries cap exceeded |
| E2205 | STORAGE_WRITES_CAP | Storage writes cap exceeded |
| E2206 | LOG_CAP_PER_TX | Log bytes cap exceeded for transaction |
| E2207 | PRECOMPILE_CAP | Precompile input cap exceeded |
| E2208 | CALL_DEPTH_CAP | Call depth cap exceeded |
| E2209 | LOG_CAP_PER_BLOCK | Log bytes cap exceeded for block |
| E2210 | PRECOMPILE_CAP_PER_BLOCK | Precompile input cap exceeded for block |
| E2211 | INPUT_TOO_LARGE | Input data too large |
| E2212 | STORAGE_BYTES_CAP | Storage bytes cap exceeded for transaction |
| E2301 | REENTRANCY | Reentrancy detected |
| E2302 | STATIC_CALL_WRITE | Static call attempted to modify state |
| E2303 | CROSS_CONTRACT_CALL_FAILED | Cross-contract call failed |
| E2304 | INVALID_RETURN_DATA | Invalid return data from call |
| E2401 | HOST_ERROR | Host error during syscall execution |
| E2402 | CONTEXT_DECODE_FAILED | Failed to decode execution context |
E3xxx: Storage/State Errors
Section titled “E3xxx: Storage/State Errors”| Code | Name | Description |
|---|---|---|
| E3001 | KEY_NOT_FOUND | Key not found in storage |
| E3002 | INVALID_KEY_FORMAT | Invalid key format |
| E3003 | KEY_TOO_LARGE | Key exceeds maximum size |
| E3004 | TYPED_DECODE_FAILED | Typed state decode failed (borsh deserialization) |
| E3005 | DATA_CORRUPTED | Storage data corrupted on read |
| E3050 | VALUE_TOO_LARGE | Value exceeds maximum size |
| E3051 | QUOTA_EXCEEDED | Storage quota exceeded |
| E3052 | TYPED_ENCODE_FAILED | Typed state encode failed (borsh serialization) |
| E3053 | METADATA_OVERRIDE_NOT_ALLOWED | Metadata override not allowed for table |
| E3101 | MERKLE_PROOF_ERROR | Merkle proof error |
| E3102 | INVALID_PROOF | State proof is invalid |
| E3103 | PROOF_VERIFICATION_FAILED | State proof verification failed |
| E3104 | MISSING_PROOF_NODE | Missing node in proof |
| E3105 | INVALID_STATE_ROOT | State root is invalid |
| E3106 | INVALID_NON_MEMBERSHIP_ORDERING | Invalid non-membership proof ordering |
| E3107 | INVALID_EMPTY_ROOT | Expected empty tree for non-membership proof |
| E3108 | UNEXPECTED_SLOT_PROOF | Unexpected slot proof for absent contract |
| E3109 | INVALID_QMDB_OPS | Invalid QMDB operations |
| E3110 | MISSING_QMDB_OP | Missing QMDB operation for contract |
| E3111 | INVALID_QMDB_ORDERING | Invalid QMDB ordering |
| E3112 | INVALID_QMDB_LAST_LOC | Invalid QMDB last_loc |
| E3113 | INVALID_LEAF_DIGEST | Leaf digest mismatch in proof |
| E3114 | UNSUPPORTED_PROOF | Unsupported proof request |
| E3115 | LEAF_POSITION_OVERFLOW | Leaf position overflow in BMT |
| E3201 | BACKEND_UNAVAILABLE | Storage backend unavailable |
| E3202 | WRITE_FAILED | Storage write failed |
| E3203 | READ_FAILED | Storage read failed |
| E3204 | SNAPSHOT_NOT_SUPPORTED | Storage backend does not support snapshots |
| E3205 | COMMIT_FAILED | Storage commit failed |
| E3206 | ROLLBACK_FAILED | Storage rollback failed |
| E3207 | SERIALIZATION_FAILED | Serialization error during storage operation |
| E3301 | UNDECLARED_ACCESS | Accessed state key not in access list |
| E3302 | READ_ONLY_WRITE | Attempted write to read-only storage |
| E3401 | MMR_POSITION_OUT_OF_BOUNDS | MMR leaf position out of bounds |
| E3402 | MMR_EMPTY | MMR is empty |
| E3403 | MMR_HEIGHT_NOT_FOUND | Height not found in MMR |
| E3501 | SNAPSHOT_UNSUPPORTED_VERSION | Snapshot version not supported |
| E3502 | SNAPSHOT_EMPTY | Empty snapshot: no headers included |
| E3503 | SNAPSHOT_BROKEN_CHAIN | Header chain broken in snapshot |
| E3504 | SNAPSHOT_MMR_ROOT_MISMATCH | MMR root mismatch in snapshot |
| E3505 | SNAPSHOT_STATE_ROOT_MISMATCH | State root mismatch in snapshot |
| E3506 | SNAPSHOT_FINALITY_FAILED | Finality proof verification failed in snapshot |
| E3507 | SNAPSHOT_MISSING_VALIDATOR_SET | Missing validator set for epoch in snapshot |
| E3508 | SNAPSHOT_CHECKPOINT_MISMATCH | Checkpoint height mismatch in snapshot |
| E3509 | SNAPSHOT_MMR_COUNT_MISMATCH | MMR entry count mismatch in snapshot |
| E3510 | SNAPSHOT_SERIALIZATION_FAILED | Snapshot serialization error |
| E3511 | SNAPSHOT_STORAGE_FAILED | Snapshot storage error |
E4xxx: Transaction Errors
Section titled “E4xxx: Transaction Errors”| Code | Name | Description |
|---|---|---|
| E4001 | INVALID_SIGNATURE | Transaction signature is invalid |
| E4002 | INVALID_NONCE | Transaction nonce is invalid |
| E4003 | INSUFFICIENT_BALANCE | Insufficient balance to pay fees |
| E4004 | GAS_LIMIT_TOO_LOW | Gas limit is too low |
| E4005 | GAS_LIMIT_TOO_HIGH | Gas limit exceeds maximum |
| E4006 | INVALID_FEE_ASSET | Fee asset is not supported |
| E4007 | MAX_FEE_TOO_LOW | Max fee is too low for transaction |
| E4008 | INVALID_ACCESS_LIST | Access list is invalid |
| E4009 | SYSTEM_ADDRESS_NOT_ALLOWED | System addresses not allowed in transactions |
| E4010 | PAYER_MISMATCH | Payer does not match authorizer |
| E4101 | INVALID_DEPLOY_NONCE_SPACE | Invalid nonce space for deploy |
| E4102 | INVALID_DEPLOY_ADDRESS | Invalid deploy address derivation |
| E4103 | DEPLOY_CODE_TOO_LARGE | Deploy code exceeds size limit |
| E4104 | INVALID_DEPLOY_MANIFEST | Deploy manifest is invalid |
| E4201 | KEY_ROTATION_EPOCH_TOO_SOON | Key rotation effective epoch is too soon |
| E4202 | KEY_ROTATION_NOT_VALIDATOR | Key rotation sender is not a validator |
| E4203 | KEY_ROTATION_ALREADY_PENDING | Key rotation already pending for validator |
| E4204 | KEY_ROTATION_MALFORMED | Key rotation call_data is malformed |
| E4301 | POOL_FULL | Transaction pool is full |
| E4302 | DUPLICATE_TRANSACTION | Transaction already in pool |
| E4303 | TRANSACTION_EXPIRED | Transaction has expired |
| E4304 | REPLACEMENT_FEE_TOO_LOW | Replacement transaction fee is too low |
| E4305 | TOO_MANY_LANES | Too many nonce lanes for sender |
| E4306 | TRANSACTION_TOO_LARGE | Transaction exceeds maximum size |
| E4307 | GAS_RATE_LIMITED | Transaction rejected due to gas-weighted rate limiting |
| E4401 | SEAL_ENCRYPTION_FAILED | Sealed transaction encryption failed |
| E4402 | SEAL_DECRYPTION_FAILED | Sealed transaction decryption failed |
| E4403 | SEAL_INVALID_CIPHERTEXT | Sealed transaction ciphertext is invalid |
| E4404 | SEAL_EPOCH_MISMATCH | Sealed transaction epoch mismatch |
| E4405 | SEAL_DESERIALIZATION_FAILED | Sealed transaction deserialization failed |
| E4406 | TLE_INSUFFICIENT_SIGNATURES | Insufficient threshold signatures for TLE |
| E4407 | TLE_INVALID_PARTIAL_SIGNATURE | Invalid partial signature for TLE |
| E4408 | TLE_SIGNATURE_RECOVERY_FAILED | TLE signature recovery failed |
| E4501 | ORDERING_UNKNOWN_COMMITMENT | Unknown sealed transaction commitment |
| E4502 | ORDERING_OUT_OF_ORDER | Sealed transactions out of FIFO order |
| E4503 | ORDERING_DUPLICATE_COMMITMENT | Duplicate sealed transaction commitment |
| E4601 | CALL_DATA_TRUNCATED | Call data is truncated |
| E4602 | CALL_DATA_UNKNOWN_VERSION | Unknown call data version byte |
| E4603 | CALL_DATA_UNKNOWN_KIND | Unknown call data kind |
| E4604 | CALL_DATA_MANIFEST_OVERFLOW | Manifest length overflow in call data |
| E4605 | CALL_DATA_MANIFEST_OUT_OF_BOUNDS | Manifest extends past end of call data |
| E4606 | CALL_DATA_IDL_OVERFLOW | IDL length overflow in call data |
| E4607 | CALL_DATA_IDL_OUT_OF_BOUNDS | IDL extends past end of call data |
| E4608 | CALL_DATA_MISSING_IDL | Deploy missing required IDL |
| E4609 | CALL_DATA_MISSING_ELF | Deploy missing required ELF binary |
| E4701 | ACCESS_LIST_INVALID_PREFIX | Access list prefix is invalid |
| E4702 | ACCESS_LIST_INVALID_RANGE | Access list range bounds invalid or empty |
| E4703 | ACCESS_LIST_TOO_MANY_ACCOUNTS | Too many accounts in access list |
| E4704 | ACCESS_LIST_TOO_MANY_STORAGE_ENTRIES | Too many storage entries in access list |
| E4705 | ACCESS_LIST_TOO_MANY_DESCRIPTORS | Too many descriptors per access list entry |
| E4801 | SESSION_KEY_NOT_FOUND | Session key not found for authorizer |
| E4802 | SESSION_REVOKED | Session key has been revoked |
| E4803 | SESSION_EXPIRED | Session key has expired |
| E4804 | SESSION_BUDGET_EXHAUSTED | Session key budget is exhausted |
| E4805 | SESSION_VALUE_EXCEEDED | Transaction value exceeds session per-tx limit |
| E4806 | SESSION_BUDGET_OVERFLOW | Transaction value exceeds remaining session budget |
| E4807 | SESSION_CONTRACT_NOT_ALLOWED | Target contract not allowed by session key |
| E4808 | SESSION_SELECTOR_NOT_ALLOWED | Function selector not allowed by session key |
E5xxx: Network/RPC Errors
Section titled “E5xxx: Network/RPC Errors”| Code | Name | Description |
|---|---|---|
| E5001 | INVALID_REQUEST | RPC request is invalid |
| E5002 | METHOD_NOT_FOUND | RPC method not found |
| E5003 | INVALID_PARAMS | RPC parameters are invalid |
| E5004 | INTERNAL_ERROR | Internal server error |
| E5005 | RATE_LIMITED | Request rate limited |
| E5006 | REQUEST_TOO_LARGE | Request exceeds size limit |
| E5007 | SERVICE_UNAVAILABLE | Service is unavailable |
| E5008 | PARSE_ERROR | Failed to parse request (malformed JSON) |
| E5009 | REQUEST_TIMEOUT | Request timed out |
| E5010 | PAYMENT_REQUIRED | Payment required for this method |
| E5011 | PAYMENT_INVALID | Payment verification failed |
| E5012 | PAYMENT_ERROR | Payment processing error |
| E5013 | NOT_FOUND | Resource not found |
| E5014 | UNAUTHORIZED | Unauthorized access |
| E5101 | PEER_NOT_FOUND | Peer not found |
| E5102 | CONNECTION_FAILED | Connection failed |
| E5103 | HANDSHAKE_FAILED | Handshake failed |
| E5104 | PROTOCOL_MISMATCH | Protocol version mismatch |
| E5105 | MESSAGE_TOO_LARGE | Message exceeds size limit |
| E5106 | INVALID_MESSAGE | Message is invalid |
| E5107 | PEER_BANNED | Peer is banned |
| E5108 | MAX_CONNECTIONS_REACHED | Maximum connections reached |
| E5201 | GOSSIP_VALIDATION_FAILED | Gossip message validation failed |
| E5202 | DUPLICATE_GOSSIP_MESSAGE | Duplicate gossip message |
| E5203 | UNKNOWN_GOSSIP_TOPIC | Unknown gossip topic |
Related
Section titled “Related”/reference/rpc-api/for RPC error surfacessrc/core/error_domains.rsfor the canonical source