instructions/admin/{protocol,assets,reserves,integrations}.rs.
Protocol
The allowed-token list may hold at most
max_assets_per_margin minus the debt and venue limits. That way, allowing a token never stops borrowing, and a liquidation always fits in one transaction.
Operating modes
Assets and venues
Risk parameters are validated:
ltv < liquidation_threshold ≤ 100%, bonus at most 5%, and threshold × (1 + bonus) ≤ 100%.
Issuer controls. A mint whose issuer keeps power over balances or value needs accept_issuer_controls = true. That covers a freeze authority, a close authority, a transfer-fee, interest-rate or scaled-UI authority, a permanent delegate, pausing, or a settable transfer hook. Fixed transfer fees, metadata, groups and confidential transfers need nothing. A live transfer hook, non-transferable mints, accounts created frozen and unknown extensions are refused. A token allowed again is screened again, and must keep its token program and decimals.
Reserves
Reserve status:
Active (0), SupplyOnly (1), RepayOnly (2), Frozen (3). Borrowing needs Active. Supply needs Active or SupplyOnly. Redeem is blocked only when Frozen. Repay is always allowed.
The configured pools are USDC, USDT and SOL. The bootstrap scripts refuse to initialize a reserve for any other asset.
Integrations
Oracle admin
The oracle’s price book and market book are configured throughvanna_oracle instructions, gated by the core protocol admin. See Oracle Program.
