Part III: The machine

10. Liquidity as a market

A market's capacity to issue is oiCap = backing * capMultiplierBps / 10000. Historically only the protocol could add to that backing, which made liquidity something Float provided rather than something anyone could take a position in. In 2.0 it is a market with two sides.

side position earns bears
long stake fSHARE (StakeVaults) that market's fee slice the stock falling
short deposit USDG as backing (BackingVault) that market's fee slice, plus Desk NAV the stock rallying

The Desk pays one per-market slice, stakerFeeBps of notional, and cashSplitBps divides it. Both live: 10 bps split 50/50, so each side earns 5 bps of that market's Desk volume.

The two sides do different things, which is the reason to have both. Staking expands the effective cap, so it buys the market headroom. Backing moves the stored cap, and since impact divides by the stored cap, backing makes the market cheaper to trade. Doubling the stored cap quarters the impact at a given position. Measured on mainnet with real money:

                    oiCap      $5 buy     $20 buy
before            $ 55.04       2.46%       2.70%
after backing $50 $155.04       0.92%       1.06%
after unfunding   $ 55.04       2.46%          -

$50.00 in, $50.00 back out, cap and impact both returned exactly.

The exit gate. A backer cannot pull capital holding up live open interest. requestUnfund computes the cap the withdrawal would leave and refuses if it falls below the notional of the market's current book.

The honest limitation. A backer's principal becomes ordinary Desk LP shares priced off global equity, so they are pari passu with the global LP, not senior to it, and their directional exposure is pooled rather than isolated to the market they backed. Real subordination needs per-market loss attribution, which needs Desk state, which needs a fresh Desk. UAsset.minter is immutable and bound at listing, so a new Desk could not mint or burn any existing fSHARE and would orphan every live market and pool. The gate plus the delay gives the practical effect. It is a lock-in, not a waterfall.

One formula for the cap. Two contracts write it. They used to disagree: BackingVault moved it by a delta while VaultFunder._syncCap recomputed from protocol backing alone, and _syncCap runs on every curve buy, so a backer's contribution was erased the next time anyone traded. A test proved a $150,000 cap falling to $101,000 after one $5 buy. Both now use one expression, vaultBacking + launchBacking + BackingVault.totalCash, with the launch-line half stored explicitly so a recompute reproduces the opening value exactly.