Errors
invalid_argument
Check the argument values against the operation schema
An argument was rejected before or at submission: a malformed address, an out-of-range value, a bad signature, or an extrinsic the node refused to accept into its pool.
Check the argument values against the operation's schema (btcli tools prints the machine-readable catalog; --help on any command shows its parameters).
Remediation
Check the argument values against the operation schema
Chain errors
The exact chain error names (from the extrinsic receipt) that classify to invalid_argument; the description says what triggered the failure and where to check. Each name has its own page:
| Chain error | Description |
|---|---|
AccountRejectsLockedAlpha | Locked alpha was being transferred to a coldkey whose AccountFlags do not have the accept-locked-alpha bit set, e.g. during a lock transfer or coldkey swap of locks. Check the destination coldkey's AccountFlags storage and have the recipient opt in to receiving locked alpha before retrying. |
ActivityCutoffFactorMilliOutOfBounds | The factor_milli argument to set the activity-cutoff factor was outside the allowed 1000-50000 per-mille range (1 to 50 tempos). Adjust the argument to fall within those bounds before resubmitting. |
ActivityCutoffTooLow | An admin tried to set the subnet's activity cutoff below the chain-wide minimum. Compare the requested value against the MinActivityCutoff storage item and current activity_cutoff in btcli sudo get --netuid <n>. |
AlphaHighTooLow | The alpha_high argument to set liquid-alpha values was below the minimum of roughly 0.025 (1638/65535 in u16 units). Raise alpha_high in the sudo_set_alpha_values call; current values are in the AlphaValues storage per netuid. |
AlphaLowOutOfRange | The alpha_low argument to set liquid-alpha values was below the ~0.025 minimum (1638/65535) or greater than alpha_high. Choose alpha_low within that range and not exceeding alpha_high; current settings are in the AlphaValues storage for the netuid. |
AmountTooLow | A stake, unstake, move or swap amount was zero or its TAO equivalent fell below the minimum stake threshold after fees and slippage. Compare the amount against the DefaultMinStake storage item and the subnet's alpha price before retrying with a larger amount. |
AnnouncedColdkeyHashDoesNotMatch | The new_coldkey passed to coldkey_swap hashes to a different value than the hash committed in the earlier announce_coldkey_swap. Verify the announced hash in the ColdkeySwapAnnouncements storage matches the BlakeTwo256 hash of the coldkey you are swapping to. |
BadEncKeyLen | The enc_key passed to announce_next_key is not the exact ML-KEM-768 encapsulation key length (1184 bytes). Check the byte length of the enc_key argument before announcing. |
BlockDurationTooLong | The requested end block is more than MaximumBlockDuration blocks after the current block. Compare end minus the current block number against the MaximumBlockDuration pallet constant when calling create or update_end. |
BlockDurationTooShort | The requested end block is fewer than MinimumBlockDuration blocks after the current block. Compare end minus the current block number against the MinimumBlockDuration pallet constant when calling create or update_end. |
CanNotSetRootNetworkWeights | set_weights was called with netuid 0, the root network, where normal weight setting is not allowed. Use a non-root netuid argument; root weights are handled by a separate mechanism. |
CannotAddSelfAsDelegateDependency | A contract called lock_delegate_dependency with its own code hash, which is not permitted. Check the code hash argument passed to the delegate dependency API against the contract's own code hash. |
CannotBurnOrRecycleOnRootSubnet | recycle_alpha or burn_alpha was called with netuid 0, and TAO on the root subnet cannot be burned or recycled. Pass a non-root netuid argument for the subnet whose alpha you want to recycle or burn. |
CannotEndInPast | The end block passed to create or update_end is not after the current block. Compare the end argument against the current block number; it must be strictly greater. |
CapTooLow | On create the cap is not strictly greater than the initial deposit, or on update_cap the new cap is below the amount already raised. Compare the cap argument against the deposit or the raised field of the Crowdloans entry. |
ChainIdMismatch | The order payload's chain_id field differs from this chain's configured EVM chain id, e.g. an order signed for testnet was submitted to mainnet. Compare the order's chain_id with the runtime's pallet_evm_chain_id value and re-sign if needed. |
ChildParentInconsistency | A set_children or parent-delegation call would make the same hotkey appear as both a child and a parent, or referenced a child missing from the proposed mapping. Inspect the ChildKeys and ParentKeys storage for the hotkeys involved and remove the overlap. |
CodeInUse | remove_code was refused because at least one contract instance still references the code hash. Check the code's reference count and terminate or set_code the contracts using it before removal. |
CodeRejected | The uploaded WASM failed validation, most often because it imports a host API the node does not support, e.g. newer ink! against an older node. Rerun the node with -lruntime::contracts=debug to see the detailed rejection reason. |
ContributionTooLow | The amount passed to contribute is below the crowdloan's configured minimum contribution. Check the min_contribution field of the Crowdloans entry for the crowdloan_id and contribute at least that amount. |
DecodingFailed | Input bytes passed to a contract API host function could not be SCALE-decoded into the expected type. Check the encoding of the call's input data or the argument bytes the contract passes to the runtime API. |
DelegateTakeTooHigh | The take argument exceeds the maximum delegate take allowed by the chain (18% by default). Compare the requested value against the MaxDelegateTake storage item and lower it. |
DelegateTakeTooLow | The take argument was below the MinDelegateTake minimum, or increase_take/decrease_take was not strictly increasing/decreasing relative to the current take. Check the hotkey's current take in the Delegates storage and the MinDelegateTake storage item. |
DeltaZero | The issuance adjustment was called with a delta of zero, which is meaningless. Check the delta argument to force_adjust_total_issuance and pass a strictly positive amount. |
DepositCannotBeWithdrawn | The creator called withdraw but holds nothing above the initial deposit, which stays locked until the crowdloan is dissolved. Compare the creator's Contributions entry with the deposit field of the Crowdloans entry. |
DepositTooLow | The deposit argument to create is below the pallet's required minimum. Check the MinimumDeposit pallet constant and create the crowdloan with at least that initial deposit. |
DuplicateChild | The children list passed to set_children contains the same child hotkey more than once. Deduplicate the children argument; current relations are visible in the ChildKeys storage for the parent hotkey and netuid. |
DuplicateOrderInBatch | Two entries in one execute_batched_orders call hash to the same order id, meaning the identical signed payload was included twice, which hard-fails the batch. Deduplicate by the blake2-256 hash of each SCALE-encoded VersionedOrder. |
DuplicateUids | The uids vector passed to set_weights (or a reveal) contains the same UID more than once. Deduplicate the uids/values pairs before submitting; each target neuron may appear only once per weight vector. |
FailedToExtractRuntimeVersion | The new runtime code passed to set_code did not yield a readable version: calling Core_version or decoding RuntimeVersion failed. Check that the submitted blob is a valid, complete runtime wasm and not truncated or compressed incorrectly. |
FeeRateTooHigh | set_fee_rate was called with a rate above the swap pallet's MaxFeeRate config constant. Compare the rate argument (u16-scaled fraction) against MaxFeeRate before submitting. |
GasLimitTooHigh | The transaction's gas_limit exceeds the block gas limit configured for the EVM. Compare the gas_limit argument against the chain's block gas limit and lower it. |
GasLimitTooLow | The transaction's gas_limit is below the intrinsic gas required, or too small to cover the weight and proof-size base cost. Raise the gas_limit argument, comparing against an eth_estimateGas result. |
GasPriceTooLow | The offered fee cannot satisfy the current base fee: max_fee_per_gas is below the block base fee, the priority fee exceeds the max fee, or the fee inputs are inconsistent. Check max_fee_per_gas and max_priority_fee_per_gas against the chain's base fee. |
IncorrectCommitRevealVersion | The commit_reveal_version argument does not match the chain's current commit-reveal weights version. Query the CommitRevealWeightsVersion storage item and upgrade or configure the client to commit with that version. |
IncorrectPartialFillAmount | The partial_fill amount is zero or exceeds the order's remaining unfilled amount, or a full execution was submitted against an order already partially filled. Compare partial_fill with order.amount minus the filled amount recorded in Orders. |
IncorrectWeightVersionKey | The version_key supplied with set_weights is older than the subnet's required weights version. Compare it against the WeightsVersionKey hyperparameter (btcli sudo get --netuid <n>) and update the validator software or the key. |
Indeterministic | Code flagged as non-deterministic (e.g. using floating point) was used where determinism is enforced, such as on-chain instantiation or calls. Check the determinism mode the code was uploaded with and rebuild the contract deterministically. |
InputForwarded | The contract forwarded its input to a callee via seal_call with the FORWARD_INPUT flag and then tried to read or forward it again. Check the call flags used; use CLONE_INPUT when the input is still needed afterwards. |
InputLengthsUnequal | A batch weights call passed vectors of different lengths, e.g. netuids vs commit hashes, or uids vs values, salts and version_keys in batch reveal. Check that every parallel vector argument in the batch extrinsic has the same length. |
InsufficientInputAmount | Declared for swap inputs too small to execute, but no current code path raises it since the user-liquidity code was removed. If seen on an older runtime, check that the swap input amount is nonzero and large enough to produce output. |
InvalidCallFlags | The flags bitmask given to seal_call or seal_delegate_call contains an unknown or disallowed combination; delegate calls accept only a restricted flag set. Check the flags argument against the supported CallFlags bit values. |
InvalidChainId | The EIP-155 chain id encoded in the signed transaction does not match this chain's configured chain id. Compare the transaction's chain id with the value returned by eth_chainId and re-sign the transaction. |
InvalidChild | The children or parents list includes the pivot hotkey itself (a self-loop), including during a hotkey swap when the new hotkey is already a child or parent of the old one. Check the children argument and ChildKeys/ParentKeys for the hotkeys involved. |
InvalidChildkeyTake | The childkey take is outside the allowed range for the subnet: below the effective minimum or above MaxChildkeyTake. Query MinChildkeyTake and MaxChildkeyTake and pick a take value within those bounds. |
InvalidDerivedAccount | Deriving the sub-account for as_derivative failed to decode into a valid account id from the (caller, index) entropy. Check the index argument and the caller account used for derivation. |
InvalidDerivedAccountId | Deriving the pure proxy account id from the provided entropy failed to decode into a valid account. Check the spawner, proxy_type, and index arguments used with create_pure (or the equivalent lookup when destroying one). |
InvalidDifficulty | The submitted proof-of-work hash does not meet the required difficulty (the faucet uses a fixed 1,000,000; PoW registration uses the subnet's difficulty). Check the Difficulty storage for the netuid and regenerate work against the current block. |
InvalidEquivocationProof | The submitted GRANDPA equivocation proof does not demonstrate a real double-vote: the two votes may be identical, from different rounds or set ids, or badly signed. Verify the proof contains two distinct votes by the same authority in the same round and authority set. |
InvalidFinalizationConfig | Exactly one of call or target_address must be set, but both or neither were provided to create, or the stored crowdloan holds an inconsistent pair at finalize time. Check those two fields on the create arguments or the Crowdloans entry. |
InvalidIdentity | The submitted coldkey or subnet identity failed validation, typically a field exceeding its allowed byte length or malformed data. Check each identity field's length against the limits enforced by the chain before calling set_identity or set_subnet_identity. |
InvalidIpAddress | The ip argument to serve_axon or serve_prometheus is not a valid address for the declared ip_type (prometheus additionally rejects the zero address). Verify the IP encodes correctly as IPv4 or IPv6 and matches the ip_type passed. |
InvalidIpType | The ip_type argument to serve_axon or serve_prometheus is not 4 or 6. Check the value being sent by the miner or client; only IPv4 (4) and IPv6 (6) are accepted. |
InvalidKeyOwnershipProof | The key ownership proof does not establish that the offending GRANDPA key belonged to the claimed validator at that session. Regenerate the proof via the generate_key_ownership_proof runtime API for the exact set id and authority id in the report. |
InvalidLeaseBeneficiary | The account registering a leased network is not the creator of the crowdloan currently being finalized. Check the crowdloan's creator field in the crowdloan pallet storage and submit the call from that coldkey. |
InvalidLiquidityValue | Legacy error from the removed V3 user-liquidity code, raised when an added or removed liquidity amount was below the pallet's MinimumLiquidity. Not raised on current runtimes; on older ones compare the liquidity argument to MinimumLiquidity. |
InvalidNonce | The transaction nonce does not match the sender's current account nonce, being either too low (already used) or too high. Compare the transaction's nonce with the sender's on-chain nonce from eth_getTransactionCount. |
InvalidNumRootClaim | The value passed to sudo_set_num_root_claims exceeds the compile-time maximum number of root claims. Check the new_value argument against the chain's MAX_NUM_ROOT_CLAIMS constant and pass a smaller number. |
InvalidPort | The port argument to serve_axon or serve_prometheus is 0, which is rejected. Check the miner or client axon configuration and serve on a non-zero port. |
InvalidRecoveredPublicKey | The EVM key association signature recovered to a public key whose keccak hash does not equal the supplied evm_key. Verify the signature was produced by the claimed EVM key over the hotkey plus block hash message (EIP-191 format). |
InvalidRevealCommitHashNotMatch | The revealed uids, values, salt and version_key hash to a value that matches none of the hotkey's pending non-expired commits. Check that the reveal parameters and salt exactly match what was committed, and inspect WeightCommits for the hotkey and netuid. |
InvalidRootClaimThreshold | The value passed to set the root claim threshold exceeds the chain's maximum allowed threshold. Check the new_value argument against the MAX_ROOT_CLAIM_THRESHOLD constant and the current RootClaimableThreshold for the netuid. |
InvalidRoundNumber | A submitted drand pulse has an unacceptable round: the first pulse ever stored must have a round greater than zero, and each later pulse must be exactly LastStoredRound plus one. Compare the pulse round against LastStoredRound. |
InvalidSchedule | The pallet's schedule is misconfigured, e.g. a zero weight or zero ref_time_by_fuel for a basic operation, making gas conversion impossible. This is a runtime configuration issue; inspect the Schedule constant rather than call arguments. |
InvalidSeal | The seal hash recomputed from the supplied block_number, nonce and key does not equal the submitted work. Verify the PoW solver built the seal for the same key and block it submits, and that the work bytes were not corrupted in transit. |
InvalidSignature | Signature verification failed: the sender of an Ethereum or EVM transaction could not be recovered from its signature, or a limit order's Sr25519 signature does not match the order payload and signer. Check the signing key, chain id, and the exact payload bytes that were signed. |
InvalidSpecName | The new runtime's spec_name does not match the current runtime, so set_code refuses the upgrade. Check the RuntimeVersion embedded in the new wasm and ensure the spec name is identical to the chain's current one. |
InvalidSubnetNumber | A root-claim call passed an empty subnet set or more subnets than the per-call maximum (claim_root, or KeepSubnets in set_root_claim_type). Check the subnets argument is non-empty and within the MAX_SUBNET_CLAIMS limit. |
InvalidTickRange | Legacy error from the removed V3 user-liquidity code, raised when tick_low was not below tick_high or a tick failed to convert to a sqrt price. Not raised on current runtimes; check the tick range arguments on older ones. |
InvalidValue | A generic out-of-range parameter on an admin or sudo call, e.g. mechanism counts, emission splits summing away from 65535, max UIDs or take bounds. Check the specific argument against the min/max storage items the extrinsic validates (e.g. MinAllowedUids, MaxMechanismCount). |
InvalidVotingPowerEmaAlpha | The alpha passed to set the voting power EMA exceeds 10^18, which represents 1.0. Check the alpha argument to sudo_set_voting_power_ema_alpha; it must be at most 10^18, and the current value is in VotingPowerEmaAlpha per netuid. |
InvalidWorkBlock | The block_number in the proof-of-work submission is in the future or more than 3 blocks old, so the work is stale. Compare the submitted block number with the current chain height and regenerate the PoW against a fresh block. |
LeaseCannotEndInThePast | The end_block supplied when registering a leased network is not after the current block. Check the current chain height and pass an end_block in the future, or omit it for a perpetual lease. |
LeaseHasNoEndBlock | The lease being terminated is perpetual (its end_block is None), so it can never be ended this way. Check the lease's end_block field in SubnetLeases for the given lease id. |
LockHotkeyMismatch | The coldkey already has a conviction lock on this subnet bound to a different hotkey, and locks for one coldkey per subnet must target a single hotkey. Check the existing lock's hotkey in the lock storage for the coldkey and netuid, or move the lock first. |
MaxAllowedUIdsLessThanCurrentUIds | sudo_set_max_allowed_uids was given a value below the number of neurons already registered on the subnet. Compare the max_allowed_uids argument against SubnetworkN for that netuid. |
MaxAllowedUidsGreaterThanDefaultMaxAllowedUids | sudo_set_max_allowed_uids was given a value above the chain-wide ceiling. Compare the max_allowed_uids argument against the DefaultMaxAllowedUids storage value. |
MaxAllowedUidsLessThanMinAllowedUids | sudo_set_max_allowed_uids was given a value below the subnet's configured minimum. Compare the max_allowed_uids argument against MinAllowedUids for that netuid. |
MaxValidatorsLargerThanMaxUIds | sudo_set_max_allowed_validators was given a value exceeding the subnet's UID capacity. Compare the max_allowed_validators argument against MaxAllowedUids for that netuid. |
MaxWeightTooLow | The max_weight argument supplied with the final multisig approval is lower than the actual weight of the call being dispatched. Compute the call's real dispatch weight and pass a max_weight at least that large to as_multi. |
MaximumContributionTooLow | The new_max_contribution passed to set_max_contribution is below the crowdloan's min_contribution or below the creator's existing contribution. Check both against the Crowdloans entry and the creator's Contributions entry. |
MinAllowedUidsGreaterThanCurrentUids | sudo_set_min_allowed_uids was given a value not strictly below the number of neurons currently registered on the subnet. Compare the min_allowed_uids argument against SubnetworkN for that netuid. |
MinAllowedUidsGreaterThanMaxAllowedUids | sudo_set_min_allowed_uids was given a value not strictly below the subnet's maximum UID capacity. Compare the min_allowed_uids argument against MaxAllowedUids for that netuid. |
MinimumContributionTooHigh | The new_min_contribution passed to update_min_contribution exceeds the crowdloan's configured per-contributor maximum. Compare it with the MaxContributions entry for the crowdloan_id. |
MinimumContributionTooLow | The minimum contribution given to create or update_min_contribution is below the chain-wide floor. Check the AbsoluteMinimumContribution pallet constant and raise the min_contribution argument to at least that value. |
MinimumThreshold | The multisig threshold argument was below 2, which these calls do not accept. Pass a threshold of 2 or more, or use as_multi_threshold_1 for the single-approval case. |
Named | An unnamed scheduler function was used on a task that was scheduled with a name. Use the named variants (cancel_named, schedule_named) with the task's id, which you can find via the Lookup storage map. |
NegativeSigmoidSteepness | A non-root caller (subnet owner) passed a negative value to sudo_set_alpha_sigmoid_steepness; negative steepness values are reserved for the root origin. Use a non-negative steepness or submit the call as root. |
NewColdKeyIsHotkey | The proposed new coldkey in a coldkey swap is already an existing hotkey account, which is not allowed. Check the Owner storage for the candidate key to confirm it is not registered as a hotkey, and pick a fresh coldkey. |
NewHotKeyIsSameWithOld | swap_hotkey was called with new_hotkey equal to the current hotkey, so there is nothing to swap. Check the extrinsic arguments and supply a different destination hotkey. |
NewHotKeyNotCleanForRootSwap | The destination hotkey has pending root claimable dividends, non-zero root stake, or root-claimed history, so root accounting cannot merge safely. Check RootClaimable and root-subnet stake for the new hotkey; claim or clear them, or use a fresh hotkey. |
NoApprovalsNeeded | The multisig call does not need any more approvals; it is only waiting for final execution with the full call data. Instead of another approve_as_multi, submit as_multi with the complete call to dispatch it. |
NoMigrationPerformed | A migrate call ran but no migration step executed, either because no migration is pending or the supplied weight_limit is too small for one step. Check the in-progress migration status and increase the weight limit argument. |
NoSelfProxy | An account attempted to register itself as its own proxy, which is not allowed. Check the delegate argument to add_proxy and ensure it differs from the calling (delegator) account. |
NoTimepoint | No timepoint was supplied but this multisig operation is already underway, so the approval cannot be matched to it. Read the operation's when field from the Multisigs entry for the call hash and pass that height and index as maybe_timepoint. |
NonDefaultComposite | The account cannot be killed because its composite account data is not in the default state. Check the account's System.Account entry; all balance and data fields must be default before the account can be removed this way. |
NonZeroRefCount | The account cannot be purged because other pallets still reference it. Check the consumers, providers, and sufficients counters in the account's System.Account record; all references must be released first. |
NotPermittedOnRootSubnet | An admin-utils call that only applies to regular subnets (burn half-life, burn increase multiplier, owner-cut flags, or the subnet emission toggle) was targeted at the root network. Check that the netuid argument is not the root netuid 0. |
NotRootSubnet | A call that only operates on the root network, such as setting root network weights, was given a non-root netuid. Check the netuid argument; root operations must target netuid 0. |
OrderNetUidMismatch | An order inside an execute_batched_orders call has a netuid field different from the batch's netuid parameter, which hard-fails the entire batch. Check each order payload's netuid against the batch argument and split mismatched orders out. |
OutOfBounds | A pointer and length pair passed to a contract API host function references memory outside the contract's sandbox. Check the buffer pointers and lengths the contract passes to seal functions; this usually indicates a low-level contract bug. |
OutputBufferTooSmall | The output buffer the contract supplied to an API call is smaller than the data the runtime needs to write back. Check the output length pointer the contract passes and enlarge the buffer; usually a contract-side bug. |
PauseFailed | A GRANDPA pause was signalled while the authority set is not live, i.e. it is already paused or a pause is already pending. Check the Grandpa State storage before signalling a pause. |
PreLogExists | An ethereum.transact extrinsic was submitted in a block that already carries a pre-log digest, meaning an Ethereum transaction is being injected by other means. Check the block's digest for a pre-runtime Ethereum log; transact is not allowed alongside it. |
ProportionOverflow | The child proportions passed to set_children sum to more than u64::MAX. Reduce the per-child proportion values so their total fits in a u64; each proportion is a fraction of u64::MAX. |
PulseVerificationError | BLS signature verification of a submitted drand pulse against the stored beacon configuration failed. Check the pulse's signature and round against the BeaconConfig storage (drand quicknet public key). |
ReentranceDenied | A call tried to re-enter a contract already on the call stack without reentrancy being allowed, or contract code called back into the contracts pallet through the runtime. Check the callee address against the current call stack and the ALLOW_REENTRY call flag. |
RegistrationNotPermittedOnRootSubnet | A neuron registration or child-hotkey operation (register, burned_register, set_children) was called with the root netuid, where these calls are invalid. Check the netuid argument; use a regular subnet, or root_register for root membership. |
RelayerMissMatch | The order's relayer allowlist is set but the account that submitted the execution transaction is not in it. Compare the extrinsic's signing account against the relayer list in the signed order payload. |
RelayerRequiredForPartialFill | A partial_fill was requested for an order whose relayer field is empty; partial fills are only permitted on orders that restrict who may execute them. Check the order payload and either set a relayer list or execute the full amount. |
Requested | The preimage cannot be unnoted while there are still outstanding requests for it. Check the request count in the hash's request status; all requests must be cleared before the preimage can be removed. |
RescheduleNoChange | The reschedule was rejected because the new dispatch time equals the task's currently scheduled time. Check the task's existing slot in Agenda and pass a genuinely different when block. |
ResumeFailed | A GRANDPA resume was signalled while the authority set is not paused, i.e. it is live or already pending a resume. Check the Grandpa State storage before signalling a resume. |
RevealPeriodTooLarge | set_reveal_period was given a commit-reveal period above the compiled-in maximum number of epochs. Lower the reveal_period argument; the current setting is readable from RevealPeriodEpochs for the netuid. |
RevealPeriodTooSmall | set_reveal_period was given a commit-reveal period below the compiled-in minimum number of epochs. Raise the reveal_period argument; the current setting is readable from RevealPeriodEpochs for the netuid. |
RootNetUidNotAllowed | The order or batch targets the root subnet, netuid 0, which the limit orders pallet does not serve. Check the netuid field of the order payload or the netuid parameter of the batch call and target a non-root subnet. |
SameNetuid | A stake swap or move where coldkey, hotkey, and subnet are all unchanged, so origin_netuid equals destination_netuid with nothing to transition. Check the call arguments; at least the subnet or one of the keys must differ. |
SenderInSignatories | The multisig sender was included in the other_signatories list, but that list must contain only the remaining signatories. Remove the sender's own account from other_signatories before resubmitting. |
SignatoriesOutOfOrder | The other_signatories list is not sorted in strictly ascending account order, which the multisig pallet requires for a canonical account derivation. Sort the list and remove duplicates before resubmitting. |
SpecVersionNeedsToIncrease | The new runtime's spec_version is not greater than the current one, so the upgrade is rejected. Check the RuntimeVersion in the new wasm and bump spec_version above the version currently on chain. |
TargetBlockNumberInPast | The scheduler was given a dispatch block that is not in the future. Compare the when argument against the current block number and choose a strictly later block. |
TempoOutOfBounds | The subnet owner gave sudo_set_tempo a tempo outside the allowed MIN_TEMPO to MAX_TEMPO range (360-50,400 blocks). Check the tempo argument against those chain constants and pick a value inside the bounds; only root may set a tempo outside them. |
TerminatedWhileReentrant | seal_terminate was called on a contract that appears more than once on the call stack, so termination was refused. Check the call chain for reentrant calls into the contract being terminated. |
TooFew | The bulk preimage upgrade was requested with zero hashes, so there is nothing to do. Pass at least one hash to ensure_updated. |
TooFewSignatories | The multisig signatory list is too short: other_signatories must contain at least one account besides the sender. Check the length of other_signatories against the threshold you are using. |
UidVecContainInvalidOne | The weight submission includes a UID that is not registered on the subnet, i.e. at least one entry is not below SubnetworkN. Check the uids argument against the subnet's neuron count in the metagraph (btcli subnets metagraph). |
UnableToRecoverPublicKey | While associating an EVM key, the secp256k1 public key recovered from the supplied signature could not be parsed. Check that the signature was produced by signing the expected EIP-191 message (hotkey plus block hash) with the EVM private key. |
UnexpectedTimepoint | A timepoint was supplied but no multisig operation is underway for this call hash; the first approval must open the operation with no timepoint. Pass maybe_timepoint: None on the opening call, or verify the call hash matches an existing Multisigs entry. |
UnverifiedPulse | Declared for drand pulses that fail validity checks, but current code raises PulseVerificationError for verification failures and silently skips unverified pulses. If seen on an older runtime, check the pulse signature against BeaconConfig. |
ValueNotInBounds | An admin-utils argument fell outside its allowed range: min_burn must be below MinBurnUpperBound and the subnet's max burn, max_burn above MaxBurnLowerBound and the min burn, and max_epochs_per_block at least 1. Check the argument against those bounds. |
WeightVecLengthIsLow | The weight submission has fewer entries than the subnet's minimum (setting only a self-weight is the one exception). Compare the vector length against the MinAllowedWeights (min_allowed_weights hyperparameter) for the netuid. |
WeightVecNotEqualSize | The uids and values vectors passed to a weight-setting call have different lengths, so they cannot be paired. Check the call arguments; both vectors must have exactly one value per UID. |
WrongTimepoint | The timepoint supplied does not match the one recorded when this multisig operation was opened. Read the correct when height and index from the Multisigs entry for the call hash and resubmit with that exact timepoint. |
XCMDecodeFailed | The bytes the contract passed to xcm_execute or xcm_send could not be decoded as a versioned XCM message. Check the XCM encoding and version the contract produces against what the runtime supports. |
ZeroShareInBatch | An order's pro-rata share of the batch output floored to zero, so the whole batch was rejected rather than consuming that order's input for no payout. Check the order's amount relative to the batch totals and retry it in a differently composed batch. |
The same explanation is available in the terminal: btcli explain invalid_argument (or btcli explain <ChainErrorName> for one exact chain error).