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.
| Parameter | Type | Description |
|---|---|---|
| new | principal | New 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.
| Parameter | Type | Description |
|---|---|---|
| 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.
| Parameter | Type | Description |
|---|---|---|
| (none) | - | No parameters |
Returns: (optional principal) - Implementation address or none
get-pause-states
Get current pause configuration.
| Parameter | Type | Description |
|---|---|---|
| (none) | - | No parameters |
Returns: (response {...} uint) - Pause states or error
Fields:
collateral-add: boolcollateral-remove: booldebt-add: booldebt-remove: bool
get-nr
Get position counter (next position ID).
| Parameter | Type | Description |
|---|---|---|
| (none) | - | No parameters |
Returns: uint - Next position ID
lookup
Get position data by position ID.
| Parameter | Type | Description |
|---|---|---|
| id | uint | Position ID |
Returns: (optional {...}) - Position data or none
Fields:
account: principal - Position ownercoll-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.
| Parameter | Type | Description |
|---|---|---|
| account | principal | Account 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.
| Parameter | Type | Description |
|---|---|---|
| account | principal | Account address |
Returns: (response uint uint) - Position ID or error if not found
get-collateral
Get collateral amount for specific asset.
| Parameter | Type | Description |
|---|---|---|
| id | uint | Position ID |
| asset | uint | Asset ID |
Returns: uint - Collateral amount (0 if none)
lookup-collateral
Get all collateral for position matching mask.
| Parameter | Type | Description |
|---|---|---|
| id | uint | Position ID |
| mask | uint | Asset mask to query (filters which assets to return) |
| enabled-mask | uint | Enabled 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.
| Parameter | Type | Description |
|---|---|---|
| account | principal | Account address |
| asset-id | uint | Asset ID |
Returns: uint - Scaled debt amount
get-debt
Get actual debt amount for specific asset (includes accrued interest).
| Parameter | Type | Description |
|---|---|---|
| id | uint | Position ID |
| asset | uint | Asset 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).
| Parameter | Type | Description |
|---|---|---|
| id | uint | Position ID |
| asset | uint | Asset ID |
Returns: uint - Scaled debt amount
lookup-debt
Get all debt for position matching mask.
| Parameter | Type | Description |
|---|---|---|
| id | uint | Position ID |
| mask | uint | Asset mask to query |
| enabled-mask | uint | Enabled 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.
| Parameter | Type | Description |
|---|---|---|
| account | principal | Account address |
| enabled-mask | uint | Enabled 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.
| Parameter | Type | Description |
|---|---|---|
| account | principal | Position owner |
| amount | uint | Amount to add |
| ft | <ft-trait> | Asset token contract |
| asset-id | uint | Asset 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.
| Parameter | Type | Description |
|---|---|---|
| account | principal | Position owner |
| amount | uint | Amount to remove |
| ft | <ft-trait> | Asset token contract |
| asset-id | uint | Asset ID |
| recipient | principal | Address 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.
| Parameter | Type | Description |
|---|---|---|
| account | principal | Position owner |
| scaled-amount | uint | Scaled amount to add |
| asset-id | uint | Asset 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.
| Parameter | Type | Description |
|---|---|---|
| account | principal | Position owner |
| scaled-amount | uint | Scaled amount to remove |
| asset-id | uint | Asset 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