How NAV Works
NAV Formula
NAV (Net Asset Value) is the MOTO-equivalent value of one HDL token at any point in time. It is computed from live on-chain state:
NAV = (MOTO_balance + PILL_balance × motoPerPill)
─────────────────────────────────────────────
total_HDL_supplyWhere motoPerPill is the live exchange rate pulled from MotoSwap's MOTO/PILL pool reserves. This ensures NAV always reflects current market prices, not a stale oracle.
NAV is queryable at any time via getNAV() on the vault contract. The frontend displays it in real time on the Dashboard.
At Launch
When the vault is first deployed and has no deposits, NAV starts at approximately 10 MOTO per HDL — matching the fixed mint rate. The first depositor gets HDL at exactly this rate. There is no founder discount or pre-mine.
As more users deposit, the MOTO and PILL balances grow proportionally, and NAV stays stable at 10 — until yield begins to accrue.
As Yield Accrues
Yield enters the vault through depositRewards(). When the vault owner calls this, tokens are deposited into the vault without minting new HDL. The total vault value increases, but the supply of HDL does not — so NAV rises.
Owner deposits 200 MOTO as yield. Vault now holds 2200 MOTO-equivalent. HDL supply unchanged at 200. NAV = 2200 / 200 = 11 MOTO/HDL.
Every HDL holder's position just grew by 10% without any action on their part.
In the current hackathon implementation, yield injection is manual (owner-operated). The roadmap includes automatic yield via native token staking and liquidity mining — see How Yield Works.
Profit Claiming
You can harvest accrued yield without closing your position using claimProfit(). The vault tracks each user's cost basis — the MOTO-equivalent value at the time of deposit. Claimable profit is the difference between your current position value and that cost basis.
claimable = (your_HDL / total_HDL) × total_vault_value
− your_original_deposit_valueOn claiming, you receive proportional MOTO + PILL equal to the profit amount. Your HDL balance is unchanged — your position stays open and continues earning. The cost basis is updated to reflect the claimed amount.
getClaimable(address) to check how much profit is available before calling claimProfit().
HODL Docs