Errors
limit_exceeded
A chain-side capacity limit was hit; reduce the size or count of the request
A chain-side capacity limit was hit: too many children, weights above the maximum, no free UID slots on the subnet, the subnet limit reached, or a batch/queue at its configured maximum.
These are hard caps rather than timing windows, so retrying unchanged will fail again. reduce the size or count of the request, or free capacity first (e.g. remove a child before adding another).
Remediation
A chain-side capacity limit was hit; reduce the size or count of the request
Chain errors
The exact chain error names (from the extrinsic receipt) that classify to limit_exceeded; the description says what triggered the failure and where to check. Each name has its own page:
| Chain error | Description |
|---|---|
BondsMovingAverageMaxReached | A subnet owner called sudo_set_bonds_moving_average with a value above 975000, the cap for owner-set values; root is exempt. Lower the bonds_moving_average argument or submit the call as root. |
CapRaised | A contribution was attempted on a crowdloan whose raised amount has already reached its cap, so no further contributions are accepted. Compare the raised and cap fields of the Crowdloans entry for the crowdloan_id. |
CodeTooLarge | The code blob passed to instantiate_with_code or upload_code exceeds the maximum code length in the pallet's schedule. Compare the WASM binary size against the schedule's code length limit and shrink the contract. |
EvmKeyAssociationLimitExceeded | The EVM address is already associated with the maximum number of UIDs allowed on this subnet. Inspect the AssociatedUidsByEvmAddress storage for the (netuid, evm_key) pair and free a slot or use a different EVM address. |
LockIdOverFlow | The global network-registration lock id counter reached its u32 maximum while queueing a subnet registration, so no new lock could be created. Check the NetworkRegistrationLockId storage value; this indicates lock id exhaustion, not a balance problem. |
MaxCallDepthReached | A nested contract call would exceed the maximum call stack depth defined in the pallet schedule. Inspect the cross-contract call chain for deep or unbounded recursion and flatten it or raise the configured depth. |
MaxContributionReached | The contributor's cumulative contribution already equals the crowdloan's per-contributor cap, so further contributions are rejected. Compare their Contributions entry with the MaxContributions value for the crowdloan_id. |
MaxContributorsReached | The crowdloan already has the maximum number of distinct contributors, so accounts without an existing contribution are rejected. Compare the contributors_count field of the Crowdloans entry with the MaxContributors pallet constant. |
MaxDelegateDependenciesReached | lock_delegate_dependency failed because the contract already holds the maximum number of delegate dependencies allowed by the runtime. Check the MaxDelegateDependencies config value and unlock unused dependencies first. |
MaxWeightExceeded | After normalization, one of the submitted weights exceeds the subnet's maximum weight limit (self-weight is exempt). Check the MaxWeightsLimit hyperparameter (btcli sudo get --netuid <n>) and flatten the weight vector before setting. |
NoNeuronIdAvailable | Registration could not obtain a uid: the subnet's MaxAllowedUids is 0, or the subnet is full and every neuron is immune from pruning. Check SubnetworkN versus MaxAllowedUids for the netuid and retry after immunity periods expire. |
OutOfGas | The contract exhausted the gas limit supplied for this execution before completing. Increase the gas_limit argument on call or instantiate; dry-run the call via RPC to estimate the required weight. |
OutOfTransientStorage | A write would exceed the per-execution byte limit for transient storage. Check how much data the contract places in transient storage during the call against the runtime's transient storage limit. |
RandomSubjectTooLong | The subject buffer given to the deprecated seal_random API exceeds the schedule's subject_len limit. Shorten the randomness subject the contract passes or check the schedule's limits section. |
RegistrationPriceLimitExceeded | burned_register with a price limit failed because the subnet's current registration burn cost exceeds the supplied limit_price. Check the current burn via Burn storage or btcli subnets list and raise the limit or wait for the cost to decay. |
StorageDepositLimitExhausted | The execution created more storage than the caller's storage_deposit_limit allows to be charged. Raise the storage_deposit_limit argument or reduce storage usage; a dry-run reports the required storage_deposit. |
SubnetLimitReached | register_network failed because the subnet count is at the network limit and no existing subnet is eligible to be pruned. Check the number of registered subnets (btcli subnets list) against the subnet limit and retry once a subnet becomes prunable. |
TooBig | The preimage exceeds the maximum size the pallet will store on-chain (4 MiB). Check the byte length of the preimage against the pallet's MAX_SIZE limit before noting it. |
TooMany | A limit was exceeded: more preimage hashes than MAX_HASH_UPGRADE_BULK_COUNT were passed to ensure_updated, or the account has hit its proxy or announcement cap. Check the account's Proxies and Announcements entries against MaxProxies and MaxPending. |
TooManyCalls | The batch submitted to the utility pallet contains more calls than the batched-calls limit allows. Check the length of the calls vector and split the work across multiple smaller batch, batch_all, or force_batch submissions. |
TooManyChildren | set_children was called with more than 5 child hotkeys for a parent on the subnet. Trim the children list to at most 5 entries. |
TooManyFieldsInCommitmentInfo | The CommitmentInfo passed to set_commitment contains more entries in fields than the pallet's MaxFields config allows. Count the fields in the info argument and trim to the MaxFields limit. |
TooManyFreezes | The account already has the maximum number of balance freezes, so a new freeze cannot be added. Check the account's Freezes entry against the MaxFreezes constant; an existing freeze must be thawed first. |
TooManyHolds | The account already carries the maximum number of balance holds, one per hold reason variant. Check the account's Holds entry; an existing hold must be released before a new reason can place another. |
TooManyPendingExtrinsics | store_encrypted was rejected because the shield pallet's queue of encrypted extrinsics is already at capacity. Compare the PendingExtrinsics count against MaxPendingExtrinsicsLimit and wait for queued items to be processed or expire. |
TooManyReserves | The account already has the maximum number of named reserves. Check the account's Reserves entry against the MaxReserves constant; a named reserve must be unreserved before adding another. |
TooManySignatories | The multisig signatory list exceeds the maximum allowed. Compare the length of other_signatories plus the sender against the pallet's MaxSignatories constant. |
TooManyTopics | The number of topics passed to seal_deposit_event exceeds the schedule's event_topics limit. Reduce the number of indexed topics in the contract's event definition or compare against the schedule limit. |
TooManyUIDsPerMechanism | Setting max UIDs or mechanism count would make max_uids times mechanism_count exceed the chain default of 256 UIDs per subnet. Check MaxAllowedUids and the subnet's mechanism count so their product stays within the limit. |
TooManyUnrevealedCommits | commit_weights (or a CRv3 commit) failed because the hotkey already has 10 unrevealed commits queued on the subnet. Inspect WeightCommits for the hotkey and reveal or let old commits expire before committing again. |
TrimmingWouldExceedMaxImmunePercentage | Trimming the subnet's UIDs cannot proceed because immune neurons would make up at least the maximum immune share (80%) of the reduced slot count. Check neurons still in ImmunityPeriod and retry after their immunity lapses or with a higher max UID target. |
UidsLengthExceedUidsInSubNet | The weight submission contains more UID entries than there are neurons registered on the subnet. Compare the length of the uids argument against SubnetworkN for the netuid and trim the vector. |
ValueTooLarge | A value written to contract storage or emitted as event data exceeds the MaxValueSize limit. Compare the size of the stored value or event payload against the runtime's maximum value size constant. |
WeightExceedsAbsoluteMax | set_on_initialize_weight or set_max_extrinsic_weight was given a value above the shield pallet's hard cap of half the total block weight. Compare the value argument against the MAX_ON_INITIALIZE_WEIGHT constant. |
The same explanation is available in the terminal: btcli explain limit_exceeded (or btcli explain <ChainErrorName> for one exact chain error).