Non-custodial, fixed-rate, fixed-term lending. Rates are set by the market — not a formula.
Midnight is not a V2 of Morpho Blue and does not replace it. The Morpho network now has two primitives: Blue for variable-rate, open-term flexibility; Midnight for predictable rate and duration. Capital can earn on Blue while quoting on Midnight.
Isolated, immutable markets — each with a loan token, collateral config, and a single maturity date. Like Blue, markets are permissionlessly created primitives.
1 debt unit = repay 1 loan token before maturity. 1 credit unit = claim on those repaid tokens.
P = tick price — USDC paid today per 1 credit unit (each CU redeems for 1 loan token at maturity). Quoted on the offer; not derived after fill.
r = APR × (term_days ÷ 365) · term return from quoted APR
CU = USDC spent ÷ P · units minted from upfront USDC
DU = CU · borrower owes the same unit count
APR = (1 ÷ P − 1) × (365 × 86,400 ÷ ttm) · reverse check (ttm in seconds)
Makers quote APR + maturity; the protocol maps that to P. When a taker fills, economics lock — no IRM drift, no utilization surprises.
A lender signs a lend offer to deploy 100,000 USDC today · 90-day maturity · 5.2% APR on a cbBTC/USDC market. The offer sits in the mempool until a borrower fills it. Capital stays productive until fill — nothing mints until on-chain execution.
r = APR × (90 ÷ 365) → term return from quoted APR
P = 1 ÷ (1 + r) → tick price (~0.9873 = 98.73¢ per $1 face)
CU = USDC spent ÷ P → 100,000 ÷ 0.9873 ≈ 101,282 CU
DU = CU · APR = (1 ÷ P − 1) × (365 × 86,400 ÷ ttm) reverse check
CU = claim on 1 loan token (USDC) at maturity · 1 DU = obligation to repay 1 loan token before maturity
P.
r = 5.2% × (90 ÷ 365) ≈ 1.28%
P = 1 ÷ (1 + 0.0128) ≈ 0.9873 → pay 98.73¢ today per $1.00 due at maturity
CU = 100,000 ÷ 0.9873 ≈ 101,282
DU = 101,282 (borrower owes the same unit count)
100,000 USDC → hold 101,282 CU → redeem ~101,282 USDC at maturity
Borrower: receive 100,000 USDC → owe 101,282 DU → repay ~101,282 USDC
Return: 101,282 − 100,000 ≈ 1,282 USDC (~1.28% over 90 days = 5.2% APR)
At fill (today)
At maturity (90 days later)
100,000 USDC upfront and receives more units than dollars spent — the extra ~1,282 USDC at maturity is the 5.2% return. No daily accrual, no utilization drift. Either side can trade units on secondary markets before maturity; hold-to-maturity economics stay fixed.
Makers don't pre-lock collateral or loan tokens. Offers are conditional — liquidity is sourced via callbacks only when filled.
The protocol stores offers; routers (e.g. Tenor) search across books, consumption groups, and callback paths to find executable liquidity.
Ladder pools idle pre-positioned USDC from several legal entities, earns variable Blue yield while waiting, then matches into Midnight via Tenor. SeriesVault is the sole lender of record — Midnight sees one address, not five subsidiaries. Fixed rate applies only after a real match; SeriesVault handles per-entity share accounting on top.
See also: Ladder architecture · Ladder walkthrough · Midnight animation