LP shares & NAV
When you deposit USDC into a Milky pool, you don't get an ERC-20-style LP
token. Instead, the protocol records your stake in an LP position account
that stores the number of shares you own in that pool. Your dollar value
at any time is shares × price_per_share (PPS).
This page explains how shares are minted on deposit, how PPS is computed, and how the pool's net asset value (NAV) drives both.
The accounting model
Each pool tracks a few aggregate numbers that, together, define its state:
- Quote vault balance — idle USDC currently sitting in the pool's vault.
- Outstanding principal — the sum of all principal currently lent out in active loans.
- Accrued interest — interest that has been recognized as belonging to the pool but not yet paid out.
- Accumulated protocol fees — fee revenue earmarked for the protocol, not the LPs (withdrawn by a separate admin instruction).
- Total LP shares — the sum of all outstanding LP shares across every position.
From these, two derived quantities matter most for LPs:
NAV = quote_vault_balance + outstanding_principal + accrued_interest − accumulated_protocol_fees
PPS = NAV × 10^6 / total_lp_shares (in micro-USDC per share)
The × 10^6 factor reflects that pool quote tokens use 6 decimals, so PPS is
itself stored at 6 decimals of precision.
Deposits — how shares are minted
When you deposit, the protocol mints you shares according to two cases:
- First-ever depositor in a pool receives shares 1:1 with the amount deposited. NAV is zero before the first deposit, so PPS is initialized at 1 USDC per share (in micro-USDC terms).
- Subsequent depositors receive
amount × 10^6 / PPSshares, where PPS is the current price-per-share at the moment of deposit.
This means a depositor who arrives later, when NAV has grown from accrued interest, gets fewer shares per USDC than the first depositor — but each of those shares is worth more. New deposits don't dilute existing LPs, because they pay the current PPS for their entry.
Withdrawals — burning shares for USDC
To withdraw, you burn some number of shares. The pool sends you USDC equal
to shares × PPS / 10^6, computed at the current PPS.
A few constraints apply:
- The pool must hold enough idle USDC in the vault to cover the withdrawal. If most of the pool is currently lent out, large withdrawals may need to wait for loans to repay (or be split across multiple smaller withdrawals as repayments arrive).
- Withdrawals are not blocked by the global pause. Even when the protocol is paused for new loan or deposit activity, lenders can still exit at the current PPS.
When does NAV change?
NAV moves continuously as the pool absorbs:
- Interest income from repaid loans → NAV ↑ → PPS ↑.
- Principal returns from repaid loans → no NAV change (USDC moves from outstanding principal to vault balance).
- Auction proceeds in excess of debt (pool's share of surplus) → NAV ↑.
- Auction shortfalls (winning bid less than debt) → NAV ↓.
- Origination fees on new loans → NAV ↑ (origination is interest revenue to the pool/protocol).
- Protocol fee accrual on auction surplus → NAV is calculated net of this, so accrued protocol fees do not count toward LP value.
A worked example
Suppose a pool starts empty. Alice deposits 10,000 USDC and gets 10,000 shares. PPS is 1.0.
A month later, the pool has earned 200 USDC of net interest. NAV is now
10,200, and PPS is 10,200 / 10,000 = 1.02. Alice's stake is worth
10,000 × 1.02 = 10,200.
Bob deposits 5,000 USDC at this point. He receives 5,000 / 1.02 ≈ 4,901.96
shares. Total shares are now 10,000 + 4,901.96 ≈ 14,901.96 and NAV is
10,200 + 5,000 = 15,200. PPS is unchanged at 1.02.
A month later, after more interest, NAV is 15,500. PPS is
15,500 / 14,901.96 ≈ 1.04. Alice's stake is 10,000 × 1.04 = 10,400,
Bob's is 4,901.96 × 1.04 ≈ 5,098.
If Alice withdraws 5,000 shares, she receives 5,000 × 1.04 = 5,200 USDC
and her position is reduced to 5,000 shares, worth 5,000 × 1.04 = 5,200.
Read next
- Yield, utilization & risks — what makes PPS go up or down in practice.
- Withdrawals — operational details of pulling liquidity out.
- Single-LP note — what's currently different from the steady-state model described above.