For the complete documentation index, see llms.txt. This page is also available as Markdown.

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

Contract
Prefix
Range
Description

dao-multisig

100xxx

u100001-u100007

Multisig governance errors

dao-executor

200xxx

u200001-u200002

Proposal execution errors

dao-treasury

300xxx

u300001

Treasury operation errors

v0-4-market

400xxx

u400001-u400025

Core market/lending errors

v0-market-vault

600xxx

u600001-u600007

Position storage errors

pack

700xxx

u700001

Bit packing utility errors

v0-assets (registry)

710xxx

u710001-u710008

Asset registry errors

v0-egroup (registry)

720xxx

u720001-u720007

Efficiency group errors

v0-vault-stx

800xxx

u800001-u800024

STX vault errors

v0-vault-sbtc

801xxx

u801001-u801023

sBTC vault errors

v0-vault-ststx

802xxx

u802001-u802024

stSTX vault errors

v0-vault-usdc

803xxx

u803001-u803024

USDC vault errors

v0-vault-usdh

804xxx

u804001-u804024

USDH vault errors

v0-vault-ststxbtc

810xxx

u810001-u810024

stSTXbtc vault errors


Detailed Error Codes by Contract

dao-multisig (100xxx)

Code
Name
Description

u100001

ERR-DAO

Not authorized as DAO executor

u100002

ERR-SIGNER

Caller is not a signer

u100003

ERR-SANITY-SIGNER

Invalid signer operation

u100004

ERR-SANITY-PROPOSAL

Invalid proposal operation

u100005

ERR-PROPOSAL-EXPIRED

Proposal has expired

u100006

ERR-IMPL-UPDATE-PENDING

Implementation update already scheduled

u100007

ERR-IMPL-UPDATE-NOT-READY

Implementation update timelock not elapsed

dao-executor (200xxx)

Code
Name
Description

u200001

ERR-AUTH

Not authorized (not current impl)

u200002

ERR-INIT

Initialization failed (not deployer or already initialized)

dao-treasury (300xxx)

Code
Name
Description

u300001

ERR-AUTH

Not authorized as DAO executor

market (400xxx)

Code
Name
Description

u400001

ERR-AUTH

Not authorized as DAO executor

u400002

ERR-AMOUNT-ZERO

Amount cannot be zero

u400003

ERR-COLLATERAL-DISABLED

Collateral not enabled for this asset

u400004

ERR-BORROW-DISABLED

Borrowing not enabled for this asset

u400005

ERR-UNHEALTHY

Position would become unhealthy

u400006

ERR-INSUFFICIENT-SCALED-DEBT

Not enough debt to repay

u400007

ERR-INSUFFICIENT-COLLATERAL

Not enough collateral

u400008

ERR-ZERO-LIQUIDATION-AMOUNTS

Liquidation amounts are zero

u400009

ERR-UNKNOWN-VAULT

Asset ID doesn't map to known vault

u400010

ERR-ORACLE-TYPE

Unknown oracle type

u400011

ERR-ORACLE-CALLCODE

Unknown oracle callcode

u400012

ERR-ORACLE-PYTH

Pyth oracle call failed

u400013

ERR-ORACLE-DIA

DIA oracle call failed

u400014

ERR-ORACLE-INVARIANT

Oracle validation failed

u400015

ERR-ORACLE-MULTI

Multi-oracle resolution failed

u400016

ERR-LIQUIDATION-PAUSED

Liquidations are paused

u400017

ERR-PRICE-CONFIDENCE-LOW

Oracle price confidence too low

u400018

ERR-HEALTHY

Position is healthy (cannot liquidate)

u400019

ERR-SLIPPAGE / ERR-ORACLE-MOCK

Slippage protection triggered / Mock oracle failed

u400020

ERR-DISABLED-COLLATERAL-PRICE-FAILED

Failed to get price for disabled collateral

u400021

ERR-BAD-DEBT-SOCIALIZATION-FAILED

Bad debt socialization failed

u400022

ERR-PRICE-FEED-UPDATE-FAILED

Pyth price feed update failed

u400023

ERR-EGROUP-ASSET-BORROW-DISABLED

Asset borrowing disabled in this egroup

u400024

ERR-LIQUIDATION-BORROW-SAME-BLOCK

Cannot liquidate position borrowed in same block

u400025

ERR-AUTHORIZATION

General authorization failure

market-vault (600xxx)

Code
Name
Description

u600001

ERR-AUTH

Not authorized as market contract

u600002

ERR-PAUSED

Market vault is paused

u600003

ERR-AMOUNT-ZERO

Amount cannot be zero

u600004

ERR-INSUFFICIENT-COLLATERAL

Insufficient collateral balance

u600005

ERR-INSUFFICIENT-DEBT

Insufficient debt balance

u600006

ERR-UNTRACKED-ACCOUNT

Account not tracked in registry

u600007

ERR-COLLATERAL-TRANSFER-FAILED

Collateral transfer failed

pack (700xxx)

Code
Name
Description

u700001

ERR-INVALID-U16

Value exceeds u16 max (65535)

assets - Registry (710xxx)

Code
Name
Description

u710001

ERR-AUTH

Not authorized as DAO executor

u710002

ERR-LIMIT-REACHED

Maximum assets (64) reached

u710003

ERR-ALREADY-REGISTERED

Asset already registered

u710004

ERR-ALREADY-ENABLED

Asset already enabled for this type

u710005

ERR-NOT-ENABLED

Asset not enabled for this type

u710006

ERR-INVALID-STALENESS

Max staleness cannot be zero

u710007

ERR-INVALID-ASSET

Invalid asset

u710008

ERR-INVALID-ID

Invalid asset ID

egroup - Registry (720xxx)

Code
Name
Description

u720001

ERR-AUTH

Not authorized as DAO executor

u720002

ERR-ALREADY-REGISTERED

Egroup with this mask already exists

u720003

ERR-LIQ-PARAMS-INVALID

Liquidation parameters invalid

u720004

ERR-LIMIT-REACHED

Maximum egroups reached

u720005

ERR-MASK-UPDATE-FAILED

Mask update failed

u720006

ERR-SUPERSET-INVARIANT-VIOLATION

Superset egroup must have <= LTV-BORROW

u720007

ERR-NO-EGROUP-FOUND

No matching egroup for user mask

vault-* (800xxx - 810xxx)

All vaults share the same error structure with different prefixes:

Vault
Prefix

vault-stx

800xxx

vault-sbtc

801xxx

vault-ststx

802xxx

vault-usdc

803xxx

vault-usdh

804xxx

vault-ststxbtc

810xxx

Suffix
Name
Description

001

ERR-AUTH

Not authorized

002

ERR-INIT

Initialization error

003

ERR-ALREADY-INITIALIZED

Vault already initialized

004

ERR-REENTRANCY

Reentrancy detected

005

ERR-RESERVE-VALIDATION

Reserve validation failed

006

ERR-PAUSED

Operation is paused

007

ERR-TOKENIZED-VAULT-PRECONDITIONS

Tokenized vault preconditions failed

008

ERR-TOKENIZED-VAULT-POSTCONDITIONS

Tokenized vault postconditions failed

009

ERR-AMOUNT-ZERO

Amount cannot be zero

010

ERR-SLIPPAGE

Slippage protection triggered

011

ERR-SUPPLY-CAP-EXCEEDED

Supply cap exceeded

012

ERR-OUTPUT-ZERO

Output amount is zero

013

ERR-INSUFFICIENT-BALANCE

Insufficient balance

014

ERR-INSUFFICIENT-LIQUIDITY

Insufficient liquidity

015

ERR-LENDING-PRECONDITIONS

Lending preconditions failed

016

ERR-LENDING-POSTCONDITIONS

Lending postconditions failed

017

ERR-NO-RESERVES

No reserves available

018

ERR-INSUFFICIENT-VAULT-LIQUIDITY

Insufficient vault liquidity

019

ERR-DEBT-CAP-EXCEEDED

Debt cap exceeded

020

ERR-INSUFFICIENT-ASSETS

Insufficient assets

021

ERR-INVALID-ADDRESS

Invalid address (null address)

022

ERR-INSUFFICIENT-FLASHLOAN-LIQUIDITY

Insufficient flashloan liquidity

023/024

ERR-FLASHLOAN-UNAUTHORIZED

Flashloan 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