Skip to main content
Market parameters control liquidity and interest. Spoke listings control account admission, borrowing power, liquidation terms, and exposure caps. The same market can have different risk terms on different spokes. Read market values with pool get_sync_data(hub_asset) and listing values with controller get_spoke_asset(spoke_id, hub_asset). Configuration files describe intended settings; live views establish whether a listing is available and which values apply. Field units use BPS for percentages, WAD for USD values and health factor, and RAY for rates and indexes. Caps use token base units. See Numeric scales for conversions.

Market parameters

The pool applies these settings independently for each HubAssetKey:

Assets below 3 decimals

These markets cannot be borrowable or flash-loanable. Their spoke listings must have zero liquidation fees. A supply position in such a market must be the account’s only supply market. Borrow, indebted withdrawal, and strategy final risk checks require at least two token base units of this collateral while debt remains. At 2 decimals, that means 0.02 token, not two whole tokens. The full rate curve uses base_borrow_rate, slope1, slope2, slope3, mid_utilization, and optimal_utilization. Their definitions and formulas are in Interest and revenue. The pool accrues interest under the old parameters before applying an update.

Spoke asset parameters

Caps apply to ordinary entry. Liquidation Credit seizure can add supply shares without enforcing supply caps. Caps belong to the controller’s spoke accounting. The pool enforces market cash, utilization, and solvency rather than spoke caps. A zero cap permits no new exposure; it does not mean unlimited.

Halt flags

Each spoke listing has three independent flags: Global pause is separate. Supply, borrow, and strategy entrypoints are globally pause-gated. Withdraw, repay, and liquidate bypass global pause but still apply their listing checks. Bad-debt cleanup bypasses both global pause and listing halt flags; its price and cleanup-eligibility checks still apply. The guardian can tighten these flags immediately. EditAssetInSpoke and the fast path can only preserve or tighten flags; attempts to clear one return #317 SpokeAssetFlagRelaxation. To clear a flag, schedule timelocked RelaxSpokeAssetFlags with the current get_spoke_asset_flags_epoch value. A stale epoch returns #319 SpokeFlagsEpochMismatch. Read the epoch again before scheduling a replacement. See Governance.

Liquidation curve

get_spoke(spoke_id) returns the spoke-wide liquidation settings: The target guides repayment sizing. The second parameter determines where the bonus ramp reaches its full scale before the bonus factor and HF-preserving cap. See Liquidation math.

Validation rules

  • LTV must be strictly below the configured liquidation threshold.
  • liquidation_threshold * (BPS + liquidation_bonus) <= BPS * BPS bounds the configured threshold and bonus pair. Invalid risk pairs return #113.
  • liquidation_fees must be below 100%. Transfer mode applies a one-base-unit minimum when a positive fee rounds to zero; Credit mode ceils fees in shares. See Seizure and fees.
  • Caps must be nonnegative and within the token’s decimal domain (#116).
  • Rate slopes must be nondecreasing and utilization breakpoints ordered (#117–#131).
  • A listing with nonzero usage cannot be removed (#309).
Position snapshots can differ from edited listing values under the risk-parameter refresh rules. The Health factor page explains how those snapshots affect account valuation.