DEVNETYou are on Solana devnet. Funds are not real. Behavior matches mainnet.

Glossary

A reference of every term that gets used as if you already know what it means. If you encounter a piece of jargon elsewhere in the docs that isn't here, that's a bug — let us know.

Active loan

A loan in the Active state: the borrower has drawn the funds, the NFT is locked in collateral, and the maturity clock is ticking.

ActiveLock

A protocol-enforced lock that prevents the same NFT from backing two loans at once. Keyed by the NFT mint address.

AllowedCollection

A pool-level allowlist entry indicating that NFTs from a particular Metaplex collection can be used as collateral in this pool.

AllowedOracle

A protocol-level allowlist entry for an oracle public key. Only quotes signed by an active allowed-oracle pubkey are accepted.

Anti-sniping

A mechanism in English auctions that automatically extends the auction's end timestamp when a bid arrives close to expiration, giving competitors time to react. Not used in Dutch auctions.

APR

Annual percentage rate. The fixed interest rate for a Milky loan, applied pro-rata to the term length to compute the actual interest owed.

Asset type ID

A 32-byte deterministic identity for a canonical card at a specific grader and grade. Two different physical certs of the same card at the same grade share the same asset_type_id. Used for exposure tracking.

Auction

The on-chain mechanism that resolves a defaulted loan by selling the collateral card. Production auctions are Dutch; English is also supported by the program.

Bid escrow

A USDC vault attached to a live auction that holds the current high bidder's funds. Funds flow out at settlement (to the pool and the protocol) or back to the bidder if outbid.

Binding leaf

A 32-byte hash combining (NFT mint, cert hash, asset type id) plus a domain separator. The Merkle allowlist's elements.

Cert hash

A 32-byte digest of a grading certificate's identity. Used in the binding leaf and in the CertLock.

CertLock

A protocol-enforced lock that prevents the same grading certificate (identified by cert hash) from backing two loans at once, even if a different NFT is later minted for the same certificate.

Collateral vault

The PDA-controlled token account that holds the card's NFT for the duration of an active loan or auction.

Default

The state a loan transitions into when it's not repaid by `maturity

  • grace period`. Triggers an auction.
Draw

The instruction that releases USDC to the borrower and locks the card. The maturity clock starts at draw, not at create.

Dutch auction

A descending-price auction where the listed price falls linearly from a starting price to a reserve over a fixed duration. The first bidder to accept the current price wins.

Ed25519

The signature scheme the oracle uses to sign borrow quotes. Solana has native verification support via the Ed25519 program.

English auction

An ascending-bid auction where the highest bid at the end timestamp wins. Supported by the program but not used in production default flow today.

Fixed interest

Interest computed once at draw time as principal × rate_bps × term_secs / (10,000 × seconds_per_year). Doesn't change based on when the loan is repaid.

FMV

Fair market value. The card's price in micro-USDC as determined by the oracle at the moment a quote is signed.

Grace period

The time window after maturity during which the borrower can still repay on the original terms. After grace expires, the loan is eligible for default. Default 7 days, capped at 30 days.

LP position

A per-(owner, pool) account recording how many shares an LP holds in a specific pool.

LTV

Loan-to-value. The ratio of principal to the card's FMV, expressed in basis points. Capped by both pool and protocol settings.

Maturity

The timestamp by which a loan must be repaid to avoid grace and eventual default. maturity = draw_ts + term_secs.

Merkle root

The root hash of the protocol's collateral-eligibility tree. The on-chain Config keeps a ring buffer of K=3 active roots.

Micro-USDC

USDC's smallest unit. 1 USDC = 1,000,000 micro-USDC (USDC has 6 decimals).

Net asset value. The pool's total value in USDC, computed as vault_balance + outstanding_principal + accrued_interest - accumulated_protocol_fees.

Origination fee

A small fee withheld from the borrower's disbursement at draw time. Computed as a percentage of the interest amount, not of the principal. Default 2%, capped at 5%.

pNFT

Programmable NFT (Metaplex). A Metaplex token standard with delegate-and-lock semantics that the protocol uses for collateral of pNFT cards.

Pool

The unit of capital that funds loans. Has its own quote vault, its own configuration, and its own LPs.

PoolHeldNft

An on-chain record that the pool currently holds an NFT (because its auction expired with no bids). The pool admin retrieves and re-disposes of the card off-chain.

PPS

Price per share. The current USDC value of one LP share, computed from NAV / total_lp_shares (with 1e6 precision factor).

Programmable NFT

See pNFT.

ProofReceipt

A short-lived PDA created by verify_merkle_proof and consumed by loan_create, locking in the (NFT, cert, asset type, root version) binding for the loan being opened.

Protocol fee

The percentage of any auction surplus the protocol takes. Default 50% of surplus (only of surplus, not of debt).

Quote

A signed off-chain message from the oracle authorizing a specific borrow against a specific card with specific terms.

Quote ID

The unique 32-byte identifier of a quote, used for replay protection via the UsedQuote PDA.

Reserve price

The minimum acceptable winning bid in an auction. Always equal to the loan's full payoff (principal + fixed interest).

Root version

The version number associated with one of the K=3 active Merkle roots in the on-chain Config. Quotes carry a root version they were signed against.

Settlement

The act of finalizing an auction: transferring USDC per the waterfall, transferring the NFT to the winner, and closing the loan and auction accounts.

Surplus

The amount by which a winning auction bid exceeds the loan's payoff. Split between the protocol and the pool; never paid to the borrower.

Term option

One of up to three pre-configured (term_secs, rate_bps, grace_period_secs) triples a pool publishes. Borrowers pick one at loan creation.

Tokenization issuer

A third-party platform (today: CollectorCrypt and Phygitals) that takes physical custody of graded cards and mints NFTs/pNFTs representing them. Milky lends against those NFTs but never custodies the underlying physical cards itself.

TypeExposure

A per-(pool, asset_type_id) account tracking how much principal is currently outstanding against that asset type. Used to enforce the pool's max_exposure_per_type.

UsedQuote

A PDA created on first use of a quote. Its existence prevents the same quote from being used a second time.

Utilization

The ratio of outstanding principal to NAV, in basis points. The protocol caps post-draw utilization to preserve a withdrawal buffer.

Waterfall

The fixed split of auction proceeds between the pool (debt + share of surplus), the protocol (other share of surplus), and the borrower (zero on default).

  • Risks — uses many of the terms above in context.
  • FAQ — quick answers that lean on this vocabulary.