

Problem:
DeFi yield products typically offer a single risk/reward profile to every depositor in the same pool. Conservative capital that wants downside protection can't participate without accepting the full exposure of the underlying strategies, while yield-seeking capital is stuck with the protocol's blended return rather than a leveraged version of it. When losses occur - from defaults, liquidations, or strategy failures - they're socialized across all depositors proportionally, regardless of risk preference.
There is no on-chain equivalent of traditional structured credit, where capital is stratified into senior, mezzanine, and junior tranches with explicit subordination. This leaves institutional and risk-segmented capital without a familiar primitive on-chain.

Solution (by Woof)
Mezzanine is a multi-tranche structured credit vault denominated in USDC. Users deposit USDC into the protocol stablecoin called mzUSD at 1:1 ratio. Then they can deposit mzUSD into one of several tranches (senior, mezzanine, junior) according to their risk appetite and earn yield proportional to a configurable risk premium for that tranche. Losses are absorbed in waterfall order - junior first, mezzanine next, senior last - so depositors choose the exact subordination position they want.
The protocol stablecoin MZUSD represents the underlying claim and routes flows between the vault and its tranches. Respectively, junior has the highest APY while the senior has the lowest APY and idle mzUSD not deposited into any tranche does not generate yield.




How it works:
USDC deposits enter the IssuanceVault, which mints MZUSD (18 decimals) at a 1e12 scale against the 6-decimal USDC. MZUSD is deposited into the chosen Tranche, an ERC-4626 vault, while idle USDC above a hysteresis bandis routed through a ReservoirUSDC buffer into an external yield strategy (e.g. Aave V3) to generate sustainable returns. Curators of the protocol can withdraw USDC to the Upshift Vault where USDC is used in different strategies. Yield is collected each epoch, split across tranches by configurable riskPremiumBps, and streamed linearly into NAV over the epoch duration so prices don't jump.
When losses materialize, the LossManager burns MZUSD from tranches in junior → mezzanine → senior order, fully exhausting one tranche before touching the next.
Withdrawals use an umbrella unstake flow with epoch delays so the vault can plan liquidity, and deposits/withdrawals are gated by an Allowlist with Chainalysis sanctions screening.
Benefits:
- Risk-stratified exposure on a single pool: conservative depositors get senior protection, yield-seekers get leveraged junior returns, all from the same underlying USDC.
- Real, sustainable yield: idle capital is automatically deployed into vetted strategies (Aave V3 today, pluggable for more) rather than depending on emissions. Core amount of funds is withdrawn into Upshift where curators can use USDC in different strategies.
- Explicit, on-chain loss allocation: the waterfall is enforced by LossManager, so subordination is a contractual guarantee rather than a marketing claim.
- Compliance-ready: built-in allowlist plus Chainalysis sanctions screening make the protocol suitable for institutional and regulated capital. Only allowlisted users can deposit USDC into mzUSD. However, mzUSD will also be available on the secondary markets where anyone will be able to buy and then deposit to tranches.
Ready to build primitives that actually move the market?
We don’t do hand-holding, and we don’t build in a vacuum. You bring the vision; we ship S-Tier Web3 products that scale.
Let’s work together - tell us what you're building, or jump straight into our DMs.