Using the lending app? See the
getting started guide under Guide in the
sidebar, or open XOXNO directly.
Call the controller
governance owns admin and timelocks parameter changes. controller is the
user entrypoint. One LiquidityPool holds all assets. Lending calls go to the
controller, not the pool.
Prerequisites
Supply collateral
Supplying withaccount_id = 0 creates a new account and returns its id.
Stellar CLI (testnet example):
(HubAssetKey, i128) pair. HubAssetKey is a struct
{ hub_id, asset }, not a bare token address, because the same token under two
hubs is two independent markets.
One nested token transfer needs authorizing — transfer(caller → pool).
Simulating the transaction discovers it and attaches it to the auth tree, so
sign the outer call and the transfer comes along. If you are calling from a
contract rather than a wallet, pre-authorize it with
authorize_as_current_contract; see
Vault integrations.
Your account is an NFT. Creating one mints a position token to
caller, and
account_id is that token’s id. Whoever holds the token owns the position —
transferring it hands over collateral and debt together. The controller stores no
owner address; it asks the NFT contract on every authority check.Check your position
1e18). i128::MAX means the account has no debt.
Below 1e18 the account is liquidatable.
What just happened
You created a cross-asset account. The tokens live in the single central pool. The controller now tracks your supply as collateral that can back future borrows, subject to the market’s risk parameters.Next
Supply and borrow
Complete recipes for supply, borrow, withdraw, and repay.
System architecture
The governance – controller – pool model.
Governance
Timelock admin path for operators.
Health factor
How the protocol decides if a position is healthy.
Accounts and risk
Spoke risk, position limits, and account behavior.

