Docs
loom is a stablecoin yield layer — a second layer for DeFi. Deposits keep earning at blue-chip venues; LUME is minted against them at up to 80% LTV, with no oracle and no liquidation engine in the codebase. Live on Base Sepolia (→ audit status).
Written for a reader who has supplied a DeFi money market before. What is different here: the mint cost is measured rather than quoted, there is no price between the debt and the collateral, and every position can exit by being sold whole. Every checkable claim carries a § — it opens the enforcing contract's verified code on Basescan.
The mental model
The protocol is one object — a receipt — and the verbs that act on it.
Deposit. Stablecoins route to the market's venue in full — Aave V3 for USDC today; nothing is skimmed on the way in. What you hold in return is a receipt: an ERC-721 whose four rows — deposit, minted, unlocks, at redemption — are the whole terms of the position. A zero-mint deposit is a complete position.
Mint. Against that receipt you can mint LUME — whenever, in as many steps as you like — up to 80% of what the collateral is worth live. Minting adds LUME written onto the receipt; nothing leaves the venue. The cost is measured on your position, not quoted (→ the charge).
Exit. Close the receipt after its T+2 unlock — minted LUME is returned and burned, and the collateral comes back at live value, already net of everything owed. Or sell before the unlock: the receipt goes whole on the on-chain marketplace, debt attached.
Figures illustrative.
Enforced byPositionManager §Receipt §
The receipt
Every deposit mints one — an ERC-721. Its four rows are the vocabulary the whole product is written in (→ the mental model).
The receipt is the unit of account for everything. Debt is booked per receipt, not per owner — transfer the token and the debt, the accruing charge, and the unlock all travel with it. That is what makes a position sellable whole.
The unlock is stamped once, at deposit: now plus the market's withdrawal delay — 2 days on the launch market, and the registry hard-caps any market at 30 days. It is never reset: not by minting, not by repaying, not by a sale.
A closed receipt stays on-chain rather than being burned, so it still appears in your wallet. It can't be sold on the marketplace, minted against, or closed again — the token itself stays transferable.
Enforced byReceipt §PositionManager §
Deposit
A deposit routes 100% to the market's venue through its adapter — the launch market supplies USDC to Aave V3 today — and books the vault shares to a fresh receipt owing nothing. There is no deposit fee and no split: the receipt claims everything the deposit earns.
The rate is the venue's own (→ Markets & venues).
Each market carries a supply cap (→ governance lanes).
Enforced byVault §AaveV3Adapter §MarketRegistry §
Mint & the charge
Minting writes LUME onto a receipt you hold — up to the market's max LTV: 80% of live net value, the receipt's shares at today's price minus the charge it already owes. Never of what was deposited. The registry hard-caps any market's LTV at 90%.
The debt is dollars against dollars — no price between them to attack (→ Security model).
An illustrative $1,000.
Past the cap, a position is reported, not seized — healthOf returns the exact excess, repayable by anyone (→ Security model).
The charge
A minted position pays the yield earned by the slice of its own collateral the minted face occupies — value(drawnShares) − drawnBasis, measured per receipt. That is the venue's own supply rate on the minted share, zero spread, and never principal — if the venue earns nothing, nothing is charged. There is no rate parameter anywhere in the protocol to set, raise, or govern.
Anyone may settle any receipt's charge — harden is permissionless, and a keeper runs it nightly. Settling turns an accrual into a transfer: the receipt's payout is already quoted net, so nothing on it moves.
On-chain, mint is borrow(receiptId, amount) — the ABI's name for the same verb. Passing receiptId 0 means "the receipt this transaction just created", which is how deposit-and-mint lands as one transaction.
Enforced byPositionManager §MarketRegistry §CarveAccumulator §
Stake — sLUME & the coupon
LUME stakes into sLUME, an ERC-4626 pool. 100% of the charge goes to stakers: no emissions, no points, no protocol rate. The pool prices the coupon as it vests, so a staker's figure moves without anyone executing anything.
The plumbing: a hardened charge is collected as vault shares and banked at the value it was taken at; the coupon — an equal face of LUME — is minted to the pool at par as it vests. The vest is linear over the span the charge took to accrue — 24h at the floor, 30 days at the cap, and a nightly sweep sits at the floor — because a share price that steps is sandwichable and one that vests is not. The collected shares themselves sit with the treasury.
Proportions illustrative.
Publishing both terms makes the gap measurable without summing receipts off the token.
Any yield figure the app shows for sLUME is realized — what a staked LUME actually returned over a stated window, annualized. No forward rate is projected, because there is none to project.
Enforced bysLUME §LUME §CarveAccumulator §
The marketplace
Every receipt can be sold whole, on-chain. Listing escrows the ERC-721 with the marketplace contract; a buyer pays the ask in LUME and takes the receipt with its debt, its accruing charge, and its unlock. Bids work the same way in reverse: the bidder's LUME is escrowed until the bid is accepted or withdrawn — an expired bid can no longer be accepted, and the bidder reclaims the LUME by withdrawing it.
Both sides settle pinned, and a trade carries six bounds.
- max debt
- min shares
- min payout
- min venue payout
- uncovered-loss floor
- arrangement — matched exactly
Leaving the arrangement empty means “settle only while this market's collateral sits at one venue” — a trade pinned that way is refused while a migration has left part of the book behind. A bid stores the same six, plus an expiry, checked when the seller accepts.
The fee is 0 today — owner-settable, hard cap 5%, raises wait 48h. While escrowed, a receipt can't be minted against or closed.
Enforced byReceiptMarketplace §
Exits & T+2
Close — one transaction after the unlock; the charge settles inside it.
Sell — on the marketplace, whole.
Figures illustrative.
Enforced byPositionManager §Vault §ReceiptMarketplace §
Markets & venues
Five markets, two venue shapes — a savings vault is a different adapter, not a different label.
Status = the registry's allAssets() answer at the deploy in the book below.
Every rate shown anywhere is read from the venue itself — Aave's liquidityRate (a ray), sGHO's targetRate (basis points), sUSDe derived from its own reward schedule. A derivation that is ill-conditioned is refused and shown as an em dash rather than printed wrong.
Enforced byMarketRegistry §
Security model
8,638 lines · 13 contracts — 9 core, 4 venue adapters · counted from the tree, not typed · 0 oracles, in any market
Enforced byPositionManager §
Governance & custody
The custody trail for the live USDC market, as deployed today. Every hop below You is a contract — the addresses are in the book.
A migration swaps the adapter under the vault without touching a single position — receipts, debt and unlocks all live above the seam.
One redemption is paid out of one side; the app reads the split and says so.
Four adapters, three venue shapes: accrual-index (Aave V3), share-price (ERC-4626 savings vaults, with an in-kind variant for sUSDe), and raw — the refuge, holding the asset bare. Every adapter answers an in-kind lane: a redemption is paid entirely in the asset or entirely in the venue's token, never split. The refuge declares no second lane, because its only lane already is the asset.
Same-block is reserved for moves that cannot hurt a depositor. A hop that moves value at par spends no budget; the hop INTO the refuge is never rationed, and draining the rest out of a dead venue is rationed on its shortfall alone.
Testnet truth: the current owner is the deploy key — an EOA with an EIP-7702 delegation, verified on-chain — and it is also the treasury and the fee recipient. A Safe multisig ships with mainnet. Renouncing ownership is disabled on every contract.
Enforced byMarketRegistry §Vault §
Parameters
One row per enforced fact — the same data the landing and /verify render. A test pins each number to the constant the contracts declare.
Addresses
Base Sepolia — chain 84532, deploy block 45383777, stack v9.6. Generated from the deployment's own address book — the file the app reads.
Audit status
The mechanism is frozen for an independent audit. Ethereum mainnet follows it. Audit status: pending.
Until the audit the repository is private; /verify carries the complete ledger and address book.
FAQ
Is minting required?
No. Zero is the default, and a zero-mint deposit is a complete position. Minting is a separate decision, available later or never.
What is returned at redemption?
The collateral at its live value, less only what the position already owes. A receipt's value is already net — the charge is settled in shares as it accrues, never at exit — so nothing further is subtracted. Minted LUME is returned and burned.
Can positions be liquidated?
No. The debt is dollars against dollars, so there is no price between them to move. No oracle and no liquidation engine exist in the codebase — the § links open every deployed contract, so the absence is checkable on-chain.
What does minting cost?
The yield earned by the share of collateral the mint occupies — measured on your own position, not a rate applied to it. Never principal, and no performance fee.
How long does exit take?
T+2 to redeem, or sell the position on the secondary market and the unlock passes to the buyer. USDe exits in kind, delivering sUSDe.
What happens past the LTV cap?
Reported, not seized: healthOf returns the exact excess, and repaying it — permissionless, never blocked — brings the position back inside. → Security model
Who can settle a receipt's charge?
Anyone, any time — harden is permissionless, and a keeper runs it nightly. Settling only changes when the coupon reaches stakers; the payout was already quoted net. → Mint & the charge
What does the marketplace cost?
Nothing today: the fee is 0. It is owner-settable with a 5% hard cap; raising it waits 48h, lowering lands same-block.
Where does the charge go?
Collected as vault shares, banked to the coupon at the value it was taken at, and minted at par to the sLUME pool as it vests — linearly over the span it accrued, 24h floor, 30-day cap. → Stake
Who owns the contracts today?
The deploy key — an EOA with an EIP-7702 delegation, verified on-chain — also the treasury and the fee recipient. A Safe multisig ships with mainnet. → Governance & custody