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
Activestate: 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 MLKY 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.
- Basis points
A hundredth of a percent. 10,000 basis points = 100%. Pool parameters like loan-to-value and annual percentage rates are stored this way so the program can express fractions of a percent as integers.
- Bid escrow
A USDC vault attached to a live sale that holds the current high bidder's funds. At settlement the commission and the lender's share flow out and the borrower's residual stays behind, which is why the escrow is not closed with the rest of the accounts.
- Binding leaf
A 32-byte hash combining
(NFT mint, cert hash, asset type id)plus a domain separator. The Merkle allowlist's elements.- BorrowerCredit
The on-chain record of a defaulted borrower's residual, seeded on the auction and the borrower. Claimed with
claim_borrower_credit, which anyone may submit but which pays only the borrower. MirrorsBidCredit. Records the time it was written, which starts the twelve-month sweep window.- Claim window
The twelve months (365 days) after a residual is written, measured from the
BorrowerCredit'screated_at. Past it the protocol admin may take the residual withsweep_expired_borrower_credit. It is not a cut-off on the borrower:claim_borrower_creditnever reads the clock, so the borrower's own claim stays open and the two paths race, first transaction winning.- 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. It outlives the loan by the 48-hour cooling-off period defined below, and is closed after that by
card_cooldown_release.- Collateral vault
The token account owned by a program-derived address (PDA) that holds the card's NFT for the duration of an active loan or auction.
- Cooling-off period
The 48 hours that must pass after a loan is closed out before a new loan may be opened against the same physical card. Held on the
CertLock, so it is keyed to the grading certificate rather than to the NFT and a re-mint does not reset it. It exists so that repaying and immediately re-borrowing cannot be used as an unlimited rollover around the three-extension cap.- Default
The state a loan transitions into when it's neither repaid nor extended by
maturity + grace period. Puts the card up for sale — but does not end the borrower's right to repay, which runs until the sale settles.- 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 sale where the listed price falls linearly from the card's appraised value down to the loan's principal over 24 hours, passing the full payoff on the way. 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.
- Extension
A borrower-initiated renewal of an active loan. The borrower pays the outstanding interest in full, reduces principal by at least 10% (rounded up), and pays a fresh origination fee on the new term — one transfer, and no separate rollover or penalty charge. The loan stays
Active, repriced rather than closed and reopened, and the card is re-appraised against a fresh oracle quote that can refuse the renewal. Three per loan at most.- Fixed interest
Interest computed once at draw time as
principal × rate_bps × term_secs / (10,000 × seconds_per_year), and recomputed on the same formula at each extension. Doesn't change based on when the loan is repaid.- Floor price
The lowest bid an auction will accept: the loan's principal. A Dutch sale decays to it; an English auction opens at it. It sits below the full payoff, so a clearing sale can still leave the lender short. It used to be
total_debt × recovery_floor_bps / 10,000.- 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 before the loan becomes eligible for default. It is the loan's term or 7 days, whichever is shorter. It used to be a flat 7 days regardless of term, so a 3-day loan carried a 7-day grace.
- 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, or extended, to avoid grace and eventual default.
maturity = draw_ts + term_secson a loan that has never been extended; an extension moves it toextended_at + term_secsof the newly chosen term option.- Merkle root
The root hash of the protocol's collateral-eligibility tree. The on-chain
Configkeeps 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%.
- PDA
Program-derived address. An address the Solana program can sign for without holding a private key, used for vaults, locks, and one-shot records like
UsedQuote.- 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
Retired. It recorded a card parked with the pool after a sale expired with no buyer, and the pool admin then withdrew it to their own wallet. Such cards now enter protocol custody, under a record seeded on the mint alone. No path puts collateral in a lender's hands.
- 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_proofand consumed byloan_create, locking in the (NFT, cert, asset type, root version) binding for the loan being opened.- Protocol fee
See Sale commission.
Config.auction_fee_bps, which used to set the protocol's 50% share of any surplus, is retained on the account and no longer read by anything.- 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
UsedQuotePDA.- Recovery floor
Retired pool parameter (
recovery_floor_bps). It set the auction floor as a share of total debt, defaulting to 50%, and the pool wizard forced it to 100% on every new pool. The floor is now the loan's principal. The field remains on the account and is not read.- Redemption
A borrower repaying a loan that has already defaulted, with
loan_redeem_from_auction. Closes the sale, refunds any standing bidder as a credit, and returns the card. Available until the sale settles, not until it opens. Borrower-signed, and the full payoff only — a part payment is refused, because it would leave the loan defaulted with its sale already closed.- Reserve price
The Dutch starting price: the card's fair market value at origination, from the loan's oracle snapshot. The field name is unchanged but the meaning is not — it used to hold the full payoff.
- Residual
What is left of a sale's proceeds after the commission and the lender's principal, interest and fees. It belongs to the defaulted borrower, and is written as a
BorrowerCreditthey claim rather than pushed to their wallet — settlement is permissionless, and a push to a missing or frozen account would let one bad destination brick every settlement. No interest accrues on it. The borrower's own claim never expires; what happens at 12 months is that the admin gains a competing right to sweep it — see "Claim window".- Sale commission
5% of the gross sale price on a defaulted card, taken before anyone else is paid and charged even when the sale does not cover the debt. 0% when MLKY or an affiliate is the buyer.
- 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
Retired term. Proceeds above the loan's payoff are now the residual and belong to the borrower. "Surplus" described the old model in which everything above the debt was split between the protocol and the pool.
- 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. MLKY 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 order in which sale proceeds are applied: a 5% commission, then the pool's principal, interest and fees, then everything left to the borrower. The three amounts sum to the sale price exactly.