Fixed rates, found by auction.
Ladder runs one sealed-bid auction a week for USDC loans on Solana, across three maturities. Every matched lender and borrower gets the same rate.
Variable-rate pools reprice every block. That is fine for parking cash, and bad for anyone who needs to know what a loan will cost next month. Ladder fixes the rate at the start, for the whole term, and lets the market set it once a week instead of letting a utilization curve set it every second.
Three things set it apart from a single-term auction:
- Three maturities: 1, 4 and 12 weeks clear side by side, which publishes a USDC yield curve on-chain every Friday.
- A secondary market for notes: a lender can sell before maturity instead of waiting.
- More collateral: SOL, jitoSOL, mSOL, INF and cbBTC, each with its own ratios and caps.
How an auction works
Each maturity has its own book. All three run on the same weekly calendar (UTC).
| Phase | When | What happens |
|---|---|---|
| Commit | Mon – Wed 16:00 | Lock USDC or collateral, post the hash of your rate and a 0.5% bond. |
| Reveal | Thu | Publish the rate and salt. The program checks them against your hash. |
| Clear | Fri | Supply meets demand. One clearing rate per maturity. |
| Claim | Fri onward | Lenders receive notes, borrowers receive USDC, unfilled funds return. |
Why sealed
Side and maximum size are public from the moment you commit, because the funds are locked. The rate is not. It is stored as sha256(rate ‖ salt) until reveal, so nobody can shade their bid against yours, and there is nothing to front-run.
Why one rate
Lenders state the lowest rate they accept; borrowers state the highest rate they will pay. The clearing rate is the lowest tick where cumulative lending at or below it covers cumulative borrowing at or above it. Every filled order gets that rate, so bidding your true limit is the best strategy: a lender who bids 4% in a 6% auction earns 6%.
Unrevealed orders
An order that is not revealed is excluded from clearing. Its funds are returned and its bond is forfeited, which keeps commits honest.
Lending
- Choose a maturity and an amount of USDC.
- Set your minimum rate, in ticks of 0.25%.
- Commit: your USDC and a bond of 0.5% (at least 1 USDC) are locked.
- Reveal on Thursday. The bond comes back.
- After clearing, claim. If the clearing rate is at or above your minimum, you receive notes for the filled amount and any remainder is returned.
At maturity, notes redeem for principal plus interest at the clearing rate. If the marginal tick is oversubscribed, fills at that tick are pro rata.
Borrowing
- Choose a maturity, the USDC you want, and a collateral asset.
- Set your maximum rate.
- Commit: collateral at the initial ratio and the 0.5% bond are locked.
- Reveal, then claim. If the clearing rate is at or below your maximum, you receive the filled USDC. Excess collateral is released.
- Repay principal plus interest by maturity to unlock your collateral.
Your cost is fixed at the clearing rate for the full term. Repaying early does not reduce the interest owed.
Notes & secondary market
Each auction and maturity has its own SPL note mint, for example LDR-4W-0925. One note is one USDC of principal. Notes are ordinary tokens: they can be held, transferred, or sold.
On the secondary book a note trades against USDC. Its price implies a yield:
value_at_maturity = principal × (1 + rate × days / 365)
implied_yield = (value_at_maturity / price − 1) × 365 / days_left
As maturity approaches, the price pulls toward the value at maturity. Selling early locks in whatever the market pays that day, which can be more or less than the clearing rate.
Collateral & liquidation
| Asset | Initial | Maintenance | Price |
|---|---|---|---|
| SOL | 250% | 200% | Pyth |
| jitoSOL, mSOL, INF | 250% | 200% | Pyth SOL × stake pool rate |
| cbBTC | 200% | 160% | Pyth |
Each asset has a deposit cap, so a depeg or an oracle fault cannot take down the whole market. Prices come from Pyth with freshness and confidence checks, never from a DEX spot price that a thin pool could move.
Below maintenance, anyone can liquidate: they repay the debt and receive the collateral at a 5% discount. Not repaid at maturity, the collateral is sold and noteholders are paid first.
Rates & math
- Ticks are 0.25%. Rates are annual, simple interest, actual/365.
- 4 weeks = 28 days. 10,000 USDC at 6.00% for 28 days repays 10,046.03.
- Amounts settle in base units of USDC (6 decimals), rounded down in favor of the pool.
S(t) = Σ lend sizes where lend.rate ≤ t
D(t) = Σ borrow sizes where borrow.rate ≥ t
clearing_rate = min t such that S(t) ≥ D(t) and both > 0
matched = min(S(clearing_rate), D(clearing_rate))
Devnet preview
Until the program ships, the app runs on Solana devnet with real wallets and real signatures, and no locked funds.
- Commit sends a memo signed by your wallet:
ladder:v0:c:<week>:<weeks>:<side>:<amount>:<hash>. The rate is not in it. - Reveal sends
ladder:v0:r:<week>:<hash>:<rate>:<salt>. Anyone can check thatsha256("rate|salt")equals the committed hash. - Every Ladder transaction references one book address, so the app reads every wallet's orders with a single
getSignaturesForAddresscall and computes the same clearing for everyone. - Your salt stays in your browser until you reveal. Clearing your browser storage before reveal means the order cannot be revealed.
You need a little devnet SOL for fees. Use the airdrop in the wallet menu, or faucet.solana.com if the airdrop is rate-limited.
Risks
- Smart contract risk. The program is not yet deployed or audited. Do not treat the preview as a live market.
- Oracle risk. Liquidations depend on Pyth prices. Stale or wrong prices can liquidate too early or too late.
- Collateral risk. LSTs can depeg; cbBTC depends on its issuer.
- Liquidity risk. The secondary book can be thin. Selling a note early may cost more than you expect.
- No fill. If the book does not cross at your limit, you get nothing that week and your funds come back.
- Regulatory risk. Fixed-rate lending may be regulated where you live. Ladder is not an offer of any financial product.
Addresses
| Item | Network | Address |
|---|---|---|
| Ladder program | devnet | Published after deployment |
| Memo program (preview) | devnet | MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr |
| Token contract (CA) | mainnet | Published at launch, copied from pump.fun |
FAQ
Why once a week and not continuously?
Batching concentrates liquidity into one moment, gives everyone the same price, and removes the speed race. A weekly rhythm is also easy to plan around.
Can I cancel a committed order?
Not after commit. You can skip the reveal: your funds are returned after clearing, minus the bond.
What if I bid a much lower rate than the market as a lender?
You still earn the clearing rate. Your bid is a limit, not a price.
Is there a token?
The protocol does not need one to work. Any token will be announced on the official channels, with its contract address published here.