Credit
What it is
Section titled “What it is”fact Credit is a borrowing line against COUPON legs. A holder wraps whole units of a struck series into that series’ share token, posts the shares as collateral on a Morpho Blue market whose loan token is USDG, and borrows against them. Lenders supply USDG to the same market and earn the borrow rate. One market exists per series, opened by anyone through the factory.
| Contract | Role |
|---|---|
LegWrap (one per series, symbol nC<SYMBOL>-<id>) | ERC-20 share token that holds the COUPON units and the coupons they earn |
LegOracle (one per series) | Prices one share in USDG for Morpho |
LegWrapFactory | Deploys the pair for a series and creates the Morpho market |
| Morpho Blue and AdaptiveCurveIrm | The lending market and its interest rate model, unchanged upstream code |
Shares and the pool
Section titled “Shares and the pool”One share is one COUPON unit plus its share of the pool. The pool is every coupon the wrapper has collected from NoteCore plus every buy-in paid by later wrappers, less what left with unwraps, plus the coupons NoteCore has attributed to the wrapper but the wrapper has not yet pulled. The buy-in and the oracle price count that accrued part; an unwrap pulls it first, so it is in the pool by the time the payout is computed. USDG sent to the wrapper by any other route is not counted.
| Action | Rule |
|---|---|
| Wrap | Pulls units COUPON units and a buy-in of units × pool ÷ supply USDG, rounded up, so a newcomer’s shares carry the same pool share as everyone else’s. Zero buy-in while the pool is empty |
| Unwrap | Collects any accrued coupons first, then burns the shares, releases the same number of units and pays shares × pool ÷ supply USDG, rounded down |
| Harvest | Permissionless. Pulls the coupons NoteCore has attributed to the wrapper into the pool, together with any keeper reward the lazy crank booked to the wrapper. Unwrap does this on its own |
| Exit | Burns shares and releases the same number of units without collecting coupons and without a pool payout; the pool share stays with the remaining holders. The fallback when a coupon claim cannot go through |
The share supply always equals the units the wrapper holds. Units pushed into the wrapper by any other route are rejected. SHIELD units are never accepted. The wrapper itself is never a valid recipient of shares, units or quote.
At autocall or maturity the final coupon is collected as usual; the units themselves are redeemed by whoever holds them after unwrapping. The wrapper has no owner, no pause and no parameters. A pause of NoteCore does not stop coupon claims, so harvest and unwrap keep working through one.
Oracle
Section titled “Oracle”fact price() is the protocol’s own leg mark for the series, the value the Treasury applies to the COUPON legs it holds, plus the pool per share:
price = legValueFactor × 1e18 + pool × 1e36 ÷ supplyThe mark is par while the underlying sits comfortably above the barrier, the live mark once the barrier is breached, and a linear blend in between. The width of that blend and the staleness window of the feed are Treasury parameters set through its timelock; the page states them in the oracle breakdown. A stale or silent underlying feed makes the oracle revert rather than serve an old value; on Morpho that closes borrowing, collateral withdrawal and liquidation for that market until the feed updates. Supply, repay and adding collateral keep working.
Market parameters
Section titled “Market parameters”| Parameter | Value |
|---|---|
| Loan token | USDG |
| Collateral token | The series share token |
| Oracle | The series oracle |
| Interest rate model | AdaptiveCurveIrm |
| LLTV | 38.5% |
A position is healthy while borrowed ≤ collateral × mark × 38.5%. Below that anyone may liquidate. fact Morpho pays the liquidator a 15% incentive at this LLTV, so a liquidation covers the whole debt while the mark is above 0.44275 of par (0.385 × 1.15) and leaves bad debt below it, borne by the lenders of that market as Morpho designs it.
| Position opened at par, maximum borrow | Mark |
|---|---|
| Liquidatable | Below 1.00 of par, i.e. the first step of the blend below the barrier cushion |
| Whole debt still covered by a liquidation | Above 0.44275 of par |
| Bad debt | Below 0.44275 of par |
estimate With the default cushion and a 65 percent barrier the blend starts at 0.80 of the strike price of the underlying (the level is the barrier plus the cushion, so it moves with the barrier of the series), so a maximum borrower is liquidatable as soon as the stock closes below that level, and a single print from above the barrier to a deep breach can move the mark past 0.44275 in one step. The app shows the liquidation mark for the exact position and a health figure that should stay well above 1.0.
The borrow rate shown in the app is the model’s current per-second rate annualised and labelled as an estimate; it moves with utilisation.
Using it
Section titled “Using it”The app has a dedicated page at note.systems/credit: the markets book, the selected market’s terminal with Wrap, Unwrap, Collateral, Borrow, Repay and Supply (Exit sits under Unwrap for the case where a coupon claim cannot go through), the oracle breakdown for every market, and the contract addresses. Every write is shown in a confirmation sheet with the position after the action and the list of transactions to sign before anything is sent.
Before borrowing: check the liquidation mark against the barrier level of the series, keep in mind that coupons collected into the pool raise the mark slowly while a breach lowers it in one step, and that a stale feed blocks new borrowing and collateral withdrawals against an open loan until the next print (supply withdrawals and repayments continue).
Contract addresses
Section titled “Contract addresses”Addresses for each network are listed on the Addresses page once deployed and verified.
Interfaces: LegWrap.wrap(units, to), LegWrap.unwrap(shares, to), LegWrap.exit(shares, to), LegWrap.harvest(), LegWrap.previewWrap(units), LegWrap.previewUnwrap(shares), LegWrap.pool(), LegWrap.poolPerShareWad(), LegOracle.price(), LegWrapFactory.create(seriesId), LegWrapFactory.predict(seriesId), LegWrapFactory.marketParams(seriesId).