> ## Documentation Index
> Fetch the complete documentation index at: https://xoxno.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Spokes

> Spoke risk modules: LTV, caps, pause/freeze, and liquidation curve per account.

A **spoke** is the risk module bound to a lending account. Users open positions
on a spoke; the spoke routes liquidity through the controller to the central
pool.

## What a spoke controls

For each `HubAssetKey` via `SpokeAsset(spoke_id, HubAssetKey)`:

* Collateral and borrow enable flags
* Supply and borrow caps, in raw asset units. **Zero means no new exposure**,
  not unlimited
* LTV and liquidation threshold
* Liquidation bonus and fee
* Three halt flags: `paused`, `frozen`, and `no_seize`

The spoke itself also carries the liquidation curve —
`liquidation_target_hf_wad`, `hf_for_max_bonus_wad`, and
`liquidation_bonus_factor_bps` — which decides how large the liquidation bonus
grows as an account gets sicker.

Pricing is protocol-level via the price aggregator (`PriceKey::Token(asset)`).
Spokes do not override oracles or prices — see
[Oracles](/docs/stellar-lending/oracles).

Spoke id is fixed when the account is created and never changes. **Spoke ids
start at 1**; `spoke_id == 0` is invalid (`#300 SpokeNotFound`). A spoke marked
deprecated accepts no new positions (`#301 SpokeDeprecated`).

## Halt matrix

Three layers can block an action. They are independent, and they block different
things on purpose.

| Layer                   | Blocks                                                                               | Still open                                                                                       | Error                          |
| ----------------------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------ |
| Global controller pause | Supply, borrow, strategies, flash loans                                              | Withdraw, repay, liquidate, `clean_bad_debt`, `recapitalize`, `renew_account`, `remove_delegate` | —                              |
| Spoke asset `frozen`    | Entry only: supply and borrow                                                        | Withdraw and repay                                                                               | `#316 SpokeAssetFrozen`        |
| Spoke asset `paused`    | **Every** user action on that listing, entry and exit — including withdraw and repay | Liquidation seizure                                                                              | `#315 SpokeAssetPaused`        |
| Spoke asset `no_seize`  | The liquidation seizure leg only                                                     | Everything else                                                                                  | `#318 SpokeAssetSeizureHalted` |

<Note>
  `paused` does **not** stop a liquidation from seizing that collateral. Seizure is
  pro-rata across an account's whole collateral set, so pausing one asset would
  otherwise halt liquidation of every account holding it. `no_seize` is the
  separate flag for that job.
</Note>

Read `get_spoke(spoke_id)` and `get_spoke_asset(spoke_id, hub_asset)` before you
choose a spoke for account creation.

## Mainnet spokes

Eight spokes are live on mainnet today. Most pair a specific collateral theme
with the same four borrowable majors.

| Id | Name               | Collateral                                           | Borrowable             |
| -- | ------------------ | ---------------------------------------------------- | ---------------------- |
| 1  | Blue Chip          | XLM, USDC, EURC, PYUSD, SolvBTC, xSolvBTC            | same six               |
| 2  | Etherfuse RWA      | USTRY, CETES                                         | USDC, XLM, EURC, PYUSD |
| 3  | Centrifuge RWA     | DEJTRSY, DEJAAA                                      | USDC, XLM, EURC, PYUSD |
| 4  | Stables & FX       | USDC, EURC, PYUSD, USST, USDY, the six Spiko classes | USDC, EURC, PYUSD      |
| 5  | AMM Collateral     | nine LP tokens                                       | USDC, EURC, XLM, PYUSD |
| 6  | Ondo RWA           | USDY, USDYUSDC\_LP                                   | USDC, EURC, XLM, PYUSD |
| 7  | Commodities        | XAUM, XAUMUSDC\_LP                                   | USDC, EURC, XLM, PYUSD |
| 8  | Aquarius Ecosystem | AQUA, XLMAQUA\_LP, AQUAUSDC\_LP                      | USDC, XLM, EURC, PYUSD |

<Warning>
  The keys in `configs/mainnet/spokes.json` are **not** the on-chain spoke ids. A
  disabled entry is skipped when spokes are created, so config key `4` is on-chain
  spoke `3`, and every later key is shifted by one. Read the id from
  `networks.json` or from the chain — never from the config file's key.
</Warning>

Notice that the same asset carries different terms in different spokes. USDC is
collateral on Blue Chip and on Stables & FX, but borrow-only on the RWA spokes.
That is the point of spokes.

## Related

* [Accounts and risk](/docs/stellar-lending/accounts-and-risk)
* [Liquidations](/docs/stellar-lending/liquidations)
