Skip to Content
Stacks Market

Error Codes

This page lists all error code prefixes across the Zest Protocol codebase for easier tracking and debugging.

Error Code Format

Error codes use a 6-digit format where:

  • First 3 digits: Contract identifier (prefix)
  • Last 3 digits: Specific error code within that contract

Contract Error Prefixes

ContractPrefixRangeDescription
dao-multisig100xxxu100001-u100007Multisig governance errors
dao-executor200xxxu200001-u200002Proposal execution errors
dao-treasury300xxxu300001Treasury operation errors
v0-4-market400xxxu400001-u400025Core market/lending errors
v0-market-vault600xxxu600001-u600007Position storage errors
pack700xxxu700001Bit packing utility errors
v0-assets (registry)710xxxu710001-u710008Asset registry errors
v0-egroup (registry)720xxxu720001-u720007Efficiency group errors
v0-vault-stx800xxxu800001-u800024STX vault errors
v0-vault-sbtc801xxxu801001-u801023sBTC vault errors
v0-vault-ststx802xxxu802001-u802024stSTX vault errors
v0-vault-usdc803xxxu803001-u803024USDC vault errors
v0-vault-usdh804xxxu804001-u804024USDH vault errors
v0-vault-ststxbtc810xxxu810001-u810024stSTXbtc vault errors

Detailed Error Codes by Contract

dao-multisig (100xxx)

CodeNameDescription
u100001ERR-DAONot authorized as DAO executor
u100002ERR-SIGNERCaller is not a signer
u100003ERR-SANITY-SIGNERInvalid signer operation
u100004ERR-SANITY-PROPOSALInvalid proposal operation
u100005ERR-PROPOSAL-EXPIREDProposal has expired
u100006ERR-IMPL-UPDATE-PENDINGImplementation update already scheduled
u100007ERR-IMPL-UPDATE-NOT-READYImplementation update timelock not elapsed

dao-executor (200xxx)

CodeNameDescription
u200001ERR-AUTHNot authorized (not current impl)
u200002ERR-INITInitialization failed (not deployer or already initialized)

dao-treasury (300xxx)

CodeNameDescription
u300001ERR-AUTHNot authorized as DAO executor

market (400xxx)

CodeNameDescription
u400001ERR-AUTHNot authorized as DAO executor
u400002ERR-AMOUNT-ZEROAmount cannot be zero
u400003ERR-COLLATERAL-DISABLEDCollateral not enabled for this asset
u400004ERR-BORROW-DISABLEDBorrowing not enabled for this asset
u400005ERR-UNHEALTHYPosition would become unhealthy
u400006ERR-INSUFFICIENT-SCALED-DEBTNot enough debt to repay
u400007ERR-INSUFFICIENT-COLLATERALNot enough collateral
u400008ERR-ZERO-LIQUIDATION-AMOUNTSLiquidation amounts are zero
u400009ERR-UNKNOWN-VAULTAsset ID doesn’t map to known vault
u400010ERR-ORACLE-TYPEUnknown oracle type
u400011ERR-ORACLE-CALLCODEUnknown oracle callcode
u400012ERR-ORACLE-PYTHPyth oracle call failed
u400013ERR-ORACLE-DIADIA oracle call failed
u400014ERR-ORACLE-INVARIANTOracle validation failed
u400015ERR-ORACLE-MULTIMulti-oracle resolution failed
u400016ERR-LIQUIDATION-PAUSEDLiquidations are paused
u400017ERR-PRICE-CONFIDENCE-LOWOracle price confidence too low
u400018ERR-HEALTHYPosition is healthy (cannot liquidate)
u400019ERR-SLIPPAGE / ERR-ORACLE-MOCKSlippage protection triggered / Mock oracle failed
u400020ERR-DISABLED-COLLATERAL-PRICE-FAILEDFailed to get price for disabled collateral
u400021ERR-BAD-DEBT-SOCIALIZATION-FAILEDBad debt socialization failed
u400022ERR-PRICE-FEED-UPDATE-FAILEDPyth price feed update failed
u400023ERR-EGROUP-ASSET-BORROW-DISABLEDAsset borrowing disabled in this egroup
u400024ERR-LIQUIDATION-BORROW-SAME-BLOCKCannot liquidate position borrowed in same block
u400025ERR-AUTHORIZATIONGeneral authorization failure

market-vault (600xxx)

CodeNameDescription
u600001ERR-AUTHNot authorized as market contract
u600002ERR-PAUSEDMarket vault is paused
u600003ERR-AMOUNT-ZEROAmount cannot be zero
u600004ERR-INSUFFICIENT-COLLATERALInsufficient collateral balance
u600005ERR-INSUFFICIENT-DEBTInsufficient debt balance
u600006ERR-UNTRACKED-ACCOUNTAccount not tracked in registry
u600007ERR-COLLATERAL-TRANSFER-FAILEDCollateral transfer failed

pack (700xxx)

CodeNameDescription
u700001ERR-INVALID-U16Value exceeds u16 max (65535)

assets - Registry (710xxx)

CodeNameDescription
u710001ERR-AUTHNot authorized as DAO executor
u710002ERR-LIMIT-REACHEDMaximum assets (64) reached
u710003ERR-ALREADY-REGISTEREDAsset already registered
u710004ERR-ALREADY-ENABLEDAsset already enabled for this type
u710005ERR-NOT-ENABLEDAsset not enabled for this type
u710006ERR-INVALID-STALENESSMax staleness cannot be zero
u710007ERR-INVALID-ASSETInvalid asset
u710008ERR-INVALID-IDInvalid asset ID

egroup - Registry (720xxx)

CodeNameDescription
u720001ERR-AUTHNot authorized as DAO executor
u720002ERR-ALREADY-REGISTEREDEgroup with this mask already exists
u720003ERR-LIQ-PARAMS-INVALIDLiquidation parameters invalid
u720004ERR-LIMIT-REACHEDMaximum egroups reached
u720005ERR-MASK-UPDATE-FAILEDMask update failed
u720006ERR-SUPERSET-INVARIANT-VIOLATIONSuperset egroup must have <= LTV-BORROW
u720007ERR-NO-EGROUP-FOUNDNo matching egroup for user mask

vault-* (800xxx - 810xxx)

All vaults share the same error structure with different prefixes:

VaultPrefix
vault-stx800xxx
vault-sbtc801xxx
vault-ststx802xxx
vault-usdc803xxx
vault-usdh804xxx
vault-ststxbtc810xxx
SuffixNameDescription
001ERR-AUTHNot authorized
002ERR-INITInitialization error
003ERR-ALREADY-INITIALIZEDVault already initialized
004ERR-REENTRANCYReentrancy detected
005ERR-RESERVE-VALIDATIONReserve validation failed
006ERR-PAUSEDOperation is paused
007ERR-TOKENIZED-VAULT-PRECONDITIONSTokenized vault preconditions failed
008ERR-TOKENIZED-VAULT-POSTCONDITIONSTokenized vault postconditions failed
009ERR-AMOUNT-ZEROAmount cannot be zero
010ERR-SLIPPAGESlippage protection triggered
011ERR-SUPPLY-CAP-EXCEEDEDSupply cap exceeded
012ERR-OUTPUT-ZEROOutput amount is zero
013ERR-INSUFFICIENT-BALANCEInsufficient balance
014ERR-INSUFFICIENT-LIQUIDITYInsufficient liquidity
015ERR-LENDING-PRECONDITIONSLending preconditions failed
016ERR-LENDING-POSTCONDITIONSLending postconditions failed
017ERR-NO-RESERVESNo reserves available
018ERR-INSUFFICIENT-VAULT-LIQUIDITYInsufficient vault liquidity
019ERR-DEBT-CAP-EXCEEDEDDebt cap exceeded
020ERR-INSUFFICIENT-ASSETSInsufficient assets
021ERR-INVALID-ADDRESSInvalid address (null address)
022ERR-INSUFFICIENT-FLASHLOAN-LIQUIDITYInsufficient flashloan liquidity
023/024ERR-FLASHLOAN-UNAUTHORIZEDFlashloan not authorized

Debugging Tips

  1. Error code lookup: Find the contract by prefix (first 3 digits), then specific error by suffix (last 3 digits)
  2. Common patterns:
    • xxx001 often means authorization failure (ERR-AUTH)
    • xxx002-xxx008 often validation/state errors
  3. DAO errors (100-300): Check multisig approval status and proposal state
  4. Market errors (400): Usually health/collateral/oracle related
  5. Vault errors (800-810): Check caps, pauses, balances, and flashloan permissions
Last updated on