Skip to main content

Mortgage Lifecycle

Every borrowing position in Buttonwood is represented by a Mortgage NFT (ERC-721). This document describes the full lifecycle of a mortgage from creation to resolution.

1. Creation

BNPL Path

  1. User submits a purchase order with a stablecoin down payment
  2. The Router wraps stablecoins to USDX and submits the order to the MortgageQueue
  3. An off-chain fulfillment service purchases HYPE on Hyperliquid's spot DEX
  4. On-chain settlement mints the Mortgage NFT via LoanManager
  5. Purchased HYPE is locked in SubConsol

Compounding Path

  1. User deposits HYPE and requests additional HYPE on credit
  2. The protocol executes a flash-loan-equivalent: deposit is used as down payment, borrowed amount finances more HYPE
  3. All HYPE (deposit + borrowed) is locked in SubConsol
  4. Position is automatically enrolled in the ConversionQueue

Order Fulfillment Window

  • Orders are queued on-chain with a 5-minute expiration
  • Fulfillment takes approximately 60 seconds
  • If not filled before expiration, all funds are refunded
  • Users cannot cancel during the fill window

2. Active Period

Once created, the mortgage enters its active period:

  • Term: Up to 36 monthly periods (30 days each)
  • Interest: Simple interest — totalDebt = principal * (1 + APR * years)
  • Payment schedule: Monthly payments of totalDebt / 36 in USDX (if payment plan is enabled)

Making Payments

Payments are processed through the LoanManager:

  1. User pays in any supported stablecoin via the Router
  2. Router wraps to USDX and forwards the payment
  3. LoanManager records the payment against the mortgage
  4. Payment flows to lenders through the Consol system

Late Payments

  • Grace period: 3 days after the due date
  • Penalty: A percentage of the monthly payment amount accrues as a penalty
  • Penalty payment: Must be paid in addition to the regular monthly payment

3. Resolution

A mortgage can resolve in one of three ways:

Redemption (Full Payoff)

All payments made ──► Mortgage marked "Redeemable"


User calls redeem()


SubConsol releases HYPE
Mortgage NFT burned
User receives collateral
  1. All 36 monthly payments are completed (or bullet payment at maturity)
  2. Mortgage status changes to Redeemable
  3. User calls redeem() on the /manage page
  4. SubConsol releases all locked HYPE back to the user
  5. The Mortgage NFT is burned

Conversion (Auto-conversion)

HYPE price hits trigger ──► ConversionQueue processes position


Debt portion of collateral
sent to lenders/protocol


Remaining collateral
returned to borrower


Mortgage resolved
  1. HYPE price reaches the Conversion Trigger Price
  2. The ConversionQueue automatically processes the position
  3. A portion of collateral sufficient to cover remaining debt is taken
  4. The remaining collateral is returned to the borrower
  5. Any outstanding payment obligations are adjusted

Foreclosure (Default)

Missed 2+ payments ──► Position eligible for foreclosure


Keeper/protocol calls foreclose()


All collateral seized
Sent to ForfeitedAssetsPool
Mortgage NFT marked "Foreclosed"
  1. Borrower misses more than 2 payments
  2. Position becomes eligible for foreclosure
  3. A keeper or the protocol calls the foreclosure function
  4. All locked HYPE is seized from SubConsol
  5. Collateral is sent to the ForfeitedAssetsPool
  6. The Mortgage NFT is marked as foreclosed (not burned — it remains as a record)

Mortgage States

StateDescription
PendingOrder submitted, awaiting fulfillment
ActiveMortgage is live, payments being made
At RiskPayments missed, approaching foreclosure threshold
RedeemableFully paid off, ready for collateral redemption
RedeemedCollateral returned, NFT burned
ForeclosedCollateral seized due to payment default