Design NFT Lending Protocol

Hard45 min
1 / 30
understanding7 min read

Problem Statement: NFT-Backed Collateral Loans

Problem Statement: NFT-Backed Collateral Loans — NFT lending interview depth

Problem Statement: NFT-Backed Collateral Loans

NFTfi / BendDAO / Blur Lending-class protocol where borrowers lock ERC-721/1155 collateral in escrow, lenders supply WETH/USDC liquidity pools, and loans settle via on-chain loan NFTs with time-bounded liquidation auctions. This understanding section (1/30) focuses on problem for NFT-backed lending.

Mechanism

  • Borrowers post NFT collateral; lenders fund pooled WETH/USDC at utilization-driven APY
  • Each loan is a transferable position NFT with principal, rate, expiry, and liquidation threshold
  • Floor-price oracles plus TWAP bands gate max LTV; liquidators bid in Dutch auctions on default

Lending invariants

On-chain escrowed collateral and loan principal are authoritative; off-chain floor feeds are projections that must carry stalenessSeconds and confidence metadata. Health factor recomputes on every material floor move.

Failure modes

  • Thin-collection floor spoofing during borrow (sec-01)
  • Double-liquidation if auction coordinator lacks idempotency on loanId
  • Lender bank-run when utilization hits 100% and withdraw queue stalls

Interview checkpoint (sec-01)

When NFTfi or BendDAO interviewers probe problem, cite $800M peak TVL, 8k concurrent loans, and HF < 1 triggers Dutch auction—not a generic DeFi diagram.

Staff+ talking point

Separate borrower UX latency from lender solvency: pools can stay solvent while previews slow down—never hide bad debt behind cached APY billboards.

javaOne Dark Pro
1public record LoanHealth1(java.math.BigInteger floorWei, java.math.BigInteger debtWei) {
2 public boolean underwater() { return floorWei.multiply(java.math.BigInteger.valueOf(80)).compareTo(debtWei.multiply(java.math.BigInteger.valueOf(100))) < 0; }
3}
pythonOne Dark Pro
1def health_factor_1(floor_eth: float, debt_eth: float, threshold: float = 0.8) -> float:
2 return (floor_eth * threshold) / debt_eth if debt_eth else float('inf')
typescriptOne Dark Pro
1export function healthFactor1(floorWei: bigint, debtWei: bigint, thresholdBps = 8000n): number {
2 if (debtWei === 0n) return Number.POSITIVE_INFINITY;
3 return Number((floorWei * thresholdBps) / debtWei) / 10000;
4}

Why interviewers care

NFT Lending Protocol interviews reward crisp scope, explicit trade-offs, and failure stories—not generic microservice diagrams.

Interview checkpoint

Name one failure story for Problem Statement: NFT-Backed Collateral Loans that proves you understand real outages, not happy-path diagrams.

Key Highlights

  • Borrowers post NFT collateral; lenders fund pooled WETH/USDC at utilization-driven APY
  • Each loan is a transferable position NFT with principal, rate, expiry, and liquidation threshold
  • Floor-price oracles plus TWAP bands gate max LTV; liquidators bid in Dutch auctions on default
Mention this
Tie problem to escrow invariants and HF-driven liquidation—not generic marketplace talk.
Pro tip
Quantify floor staleness and insurance fund coverage before deep-diving problem.

Section Rescue Kit

Buzzwords to use:

Health factorDutch auction

Safe statements:

  • "For Problem Statement: NFT-Backed Collateral Loans, I'll anchor escrow + loan NFT state before naming cloud SKUs."
  • "I'll walk borrow → HF monitor → Dutch liquidation when stuck on NFT lending."
Design NFT Lending Protocol - System Design | WinJob | WinJob