Skip to Content
Stacks Market

Market Vault

Purpose: User position storage and tracking. Uses bitmasks to track collateral (bits 0-63) and debt (bits 64-127) in a single uint.

List of Core Functions

Configuration:

  • set-impl: Update implementation contract (7-day timelock)
  • set-pause-states: Pause/unpause operations
  • get-impl: Get current implementation
  • get-pause-states: Get pause configuration

Position Queries:

  • get-nr: Get position counter (nonce)
  • lookup: Get position data by ID
  • resolve: Get position ID for account
  • resolve-safe: Safe resolve with error handling
  • get-position: Get complete position with collateral & debt lists

Collateral Queries:

  • get-collateral: Get collateral amount for specific asset
  • lookup-collateral: Get all collateral for position
  • get-account-scaled-debt: Get scaled debt for account (legacy)

Debt Queries:

  • get-debt: Get debt amount for specific asset
  • debt-scaled: Get scaled debt for specific asset
  • lookup-debt: Get all debt for position

Position Mutations (Market Auth Only):

  • collateral-add: Add collateral to position
  • collateral-remove: Remove collateral from position
  • debt-add-scaled: Add scaled debt to position
  • debt-remove-scaled: Remove scaled debt from position

Function Parameters

set-impl

Update implementation contract. Requires DAO authorization.

ParameterTypeDescription
newprincipalNew implementation contract address

Returns: (response bool uint) - Success or error

Authorization: DAO executor only

Note: Implementation changes subject to 7-day timelock in dao-multisig


set-pause-states

Configure pause states for operations.

ParameterTypeDescription
states{collateral-add: bool, collateral-remove: bool, debt-add: bool, debt-remove: bool}Pause configuration for each operation type

Returns: (response bool uint) - Success or error

Authorization: DAO executor only


get-impl

Get current implementation contract.

ParameterTypeDescription
(none)-No parameters

Returns: (optional principal) - Implementation address or none


get-pause-states

Get current pause configuration.

ParameterTypeDescription
(none)-No parameters

Returns: (response {...} uint) - Pause states or error

Fields:

  • collateral-add: bool
  • collateral-remove: bool
  • debt-add: bool
  • debt-remove: bool

get-nr

Get position counter (next position ID).

ParameterTypeDescription
(none)-No parameters

Returns: uint - Next position ID


lookup

Get position data by position ID.

ParameterTypeDescription
iduintPosition ID

Returns: (optional {...}) - Position data or none

Fields:

  • account: principal - Position owner
  • coll-debt-mask: uint - Bitmask (collateral in bits 0-63, debt in bits 64-127)
  • last-borrow-time: uint - Last borrow timestamp (for liquidation protection)

resolve

Get position ID for account. Creates new position if none exists.

ParameterTypeDescription
accountprincipalAccount address

Returns: uint - Position ID

Note: Creates new position entry if account has no position yet


resolve-safe

Safe resolve with error handling instead of auto-creation.

ParameterTypeDescription
accountprincipalAccount address

Returns: (response uint uint) - Position ID or error if not found


get-collateral

Get collateral amount for specific asset.

ParameterTypeDescription
iduintPosition ID
assetuintAsset ID

Returns: uint - Collateral amount (0 if none)


lookup-collateral

Get all collateral for position matching mask.

ParameterTypeDescription
iduintPosition ID
maskuintAsset mask to query (filters which assets to return)
enabled-maskuintEnabled assets mask from registry

Returns: (list 64 { aid: uint, amount: uint }) - List of collateral entries


get-account-scaled-debt

Get scaled debt for account. Legacy function.

ParameterTypeDescription
accountprincipalAccount address
asset-iduintAsset ID

Returns: uint - Scaled debt amount


get-debt

Get actual debt amount for specific asset (includes accrued interest).

ParameterTypeDescription
iduintPosition ID
assetuintAsset ID

Returns: uint - Debt amount (0 if none)

Note: Converts scaled debt to actual debt using current index


debt-scaled

Get scaled debt for specific asset (before interest accrual).

ParameterTypeDescription
iduintPosition ID
assetuintAsset ID

Returns: uint - Scaled debt amount


lookup-debt

Get all debt for position matching mask.

ParameterTypeDescription
iduintPosition ID
maskuintAsset mask to query
enabled-maskuintEnabled assets mask from registry

Returns: (list 64 { aid: uint, scaled: uint }) - List of debt entries (scaled)


get-position

Get complete position with collateral and debt lists.

ParameterTypeDescription
accountprincipalAccount address
enabled-maskuintEnabled assets mask from registry

Returns: { collateral: (list 64 {...}), debt: (list 64 {...}) } - Complete position data

Note: Returns empty lists if position doesn’t exist


collateral-add

Add collateral to position. Market authorization required.

ParameterTypeDescription
accountprincipalPosition owner
amountuintAmount to add
ft<ft-trait>Asset token contract
asset-iduintAsset ID

Returns: (response uint uint) - Updated collateral amount or error

Authorization: Market implementation only (contract-caller check)

Note: Transfers tokens from account to market-vault


collateral-remove

Remove collateral from position. Market authorization required.

ParameterTypeDescription
accountprincipalPosition owner
amountuintAmount to remove
ft<ft-trait>Asset token contract
asset-iduintAsset ID
recipientprincipalAddress to receive tokens

Returns: (response uint uint) - Remaining collateral amount or error

Authorization: Market implementation only (contract-caller check)

Note: Transfers tokens from market-vault to recipient


debt-add-scaled

Add scaled debt to position. Market authorization required.

ParameterTypeDescription
accountprincipalPosition owner
scaled-amountuintScaled amount to add
asset-iduintAsset ID

Returns: (response uint uint) - Updated scaled debt or error

Authorization: Market implementation only (contract-caller check)

Note: Updates last-borrow-time to prevent same-block liquidation


debt-remove-scaled

Remove scaled debt from position. Market authorization required.

ParameterTypeDescription
accountprincipalPosition owner
scaled-amountuintScaled amount to remove
asset-iduintAsset ID

Returns: (response uint uint) - Remaining scaled debt or error

Authorization: Market implementation only (contract-caller check)

Note: Clears debt bit in mask if debt reaches zero

Last updated on