Protocol

SUBFROST P2P Lending

A walkthrough of P2P lending on the SUBFROST webapp.

Vitor
8 min read · Jul 20, 2026

Most on-chain lending is a tower of moving parts: a pooled pot of everyone's money, a price oracle feeding it, and a swarm of liquidators watching your position. Each part is also a way to lose money that has nothing to do with the loan you actually made: a drained pool, a manipulated feed, a liquidation cascade on a wick.

SUBFROST lending removes all three. It is peer-to-peer: you set your own terms and match with one other person. It is fixed-rate and fixed-term: you know the exact repayment before you agree to anything. And it settles in a single Bitcoin transaction that hands over the loan, locks the collateral, and creates the loan all at once, with no custodian holding your funds at any point.

There are no pools, so there is nothing to drain. There are no oracles, because a loan defaults on a deadline, not on a price. Nothing needs to know what your collateral is worth minute to minute. And there are no liquidators, because when a loan defaults the lender simply claims the agreed collateral. What you sign is what happens.

This post walks through the whole thing: how the one-transaction design works, then how to lend, borrow, repay, and handle a default in the app.

The lending feature is rolling out on the SUBFROST app. Screens below are from a development build and may change slightly at launch.

How a loan becomes one transaction

The trick that makes this work is that the two sides sign at different times, and neither can tamper with the other's part.

A maker builds an offer ("I'll lend 1 DIESEL against 0.00088 frBTC, at 10% for 1008 blocks") and signs it. Crucially, signing does not broadcast anything. The signed offer commits only the maker's side of the deal, and it is deliberately built so that it cannot go on-chain on its own: on its own, the transaction tries to pay out more than it puts in, so the Bitcoin network would reject it. It just sits in an order book until a taker fills it.

A taker is what completes it. When someone takes the offer, their wallet adds the missing input, pays the network fee, and finalizes the transaction. That single transaction then does three things atomically:

The maker signs their side; the taker funds and completes it; one Bitcoin transaction delivers the loan token, locks the collateral, and creates the loan. If anything in that transaction fails, both sides get their tokens back.

Because the loan is created, funded, and collateralized in the same transaction, there is no in-between state where your money is somewhere unsafe. Each loan becomes its own small on-chain contract, and everything that can happen to it afterward (repayment, collateral release, default) is enforced by that contract, not by a counterparty's goodwill. (For the cryptographic details, the pre-signed PSBT escrow and the SIGHASH scheme, see the lending protocol docs.)

Lending, step by step

Say you hold DIESEL and want to earn yield on it. Open the Lend page and pick the token you want to lend and the token you'll accept as collateral. Here, lend DIESEL against frBTC collateral.

The order book on the left shows open requests and offers for this pair; the form on the right is where you post your own.

With the Lend tab selected, fill in the offer:

  • You lend: the amount you're putting up (1 DIESEL).
  • Borrower's collateral: what you require them to lock (0.00088 frBTC).
  • APR: your rate (10%). This is your number to choose; the protocol doesn't set or promise a rate.
  • Duration (blocks): the loan term (1008 blocks, roughly a week).

Click Create loan offer and you'll get a summary: what you lend, the collateral required, the APR, exactly what you'll be repaid (1.0019178 DIESEL on this one), and the deadline. You can cancel any time before someone takes it.

Approve the signature in your wallet and your offer goes live in the order book, ready for a borrower to take.

That's it. Your loan offer is posted. Editing or cancelling it later just re-signs or removes the instruction.

Borrowing, step by step

The other side works the same way, mirrored. Say you hold frBTC and want to borrow DIESEL against it without selling anything.

One thing to expect up front: you'll lock collateral worth more than what you borrow. That isn't a quirk. It's the deal that makes both sides work: the lender needs that cushion to come out whole if you don't repay, and in exchange you get to use the borrowed token now without selling the asset you locked up. Repay before the deadline and your collateral comes straight back; the temporary over-lock is simply the price of liquidity without a sale.

You have two options: take an existing offer from the order book, or post your own request and wait for a lender to fill it.

To post a request, switch the form to Borrow, choose what you want to borrow and what you'll post as collateral, and set your terms:

The confirmation is the mirror of the lender's: what you post as collateral, what you receive, the APR, and exactly what you'll repay. Same deal: the request sits in the book until a taker fills it.

Once you approve it, your request sits in the order book until a lender fills it.

Taking an offer that's already in the book is even more direct: pick one you like (the book is sorted by APY), review the summary (what you provide, what you receive, the total repayment, and the deadline), then confirm. This is the step where you pay the network fee to settle, because taking an offer is what puts the loan on-chain.

Once that transaction confirms, the loan is active and the clock starts. You'll see it under Active Loans at the bottom of the page. From there, a loan ends one of exactly two ways:

Either the borrower repays and the loan closes, or the deadline passes and the lender claims the collateral. Which one is decided by a deadline, not a price.

Repaying, and getting your collateral back

A loan runs on fixed terms, so there are no surprises: you repay the principal plus the interest you agreed to, any time before the deadline.

In the app it's one button, Repay & reclaim, which both repays the loan and returns your collateral in a single transaction. Once you've done it, the lender claims their repayment, and the loan is fully closed. Both sides got exactly what they signed up for.

If the borrower doesn't pay

Fixed terms cut both ways, and this is the part to understand before you lend.

If the deadline passes without repayment, the loan defaults. There are no margin calls along the way and no automatic liquidation: the only thing that happens is that the lender can now claim the collateral (one click does it). The borrower keeps the tokens they borrowed and forfeits the collateral they locked.

That design is what removes the oracle and the liquidator, but it puts one responsibility squarely on the lender:

If you lend, you have to be genuinely fine ending up with the collateral instead of the repayment, even if its price has fallen below the loan you made. On a default, claiming the collateral is your only recourse; the protocol will not top you up. So set your collateral requirement and your rate for that scenario, not the rosy one.

The mirror holds for borrowers: the more collateral you post, the more you have at stake if you can't repay.

A quick gut-check before you post

You set the terms, so good terms are your job. Three things to sanity-check before you sign:

  • Collateral should cover the loan. Look at the two dollar figures the app shows you. In our example, lending 1 DIESEL (about $45) asks for 0.00088 frBTC of collateral (about $57). The collateral is worth more than the loan, so a default still leaves the lender whole. Lend over-collateralized, against collateral you'd be content to keep.
  • APR is annual, so watch the term. 10% sounds like a lot, but over 1008 blocks (about a week) it's roughly 0.19%. On a 1 DIESEL loan that's the 0.0019178 DIESEL you saw in the summary, a few cents. Read the exact "you are repaid" figure, not just the rate.
  • Network fees can eat the interest on a small loan. The Bitcoin fee to settle a loan can outweigh the interest on a small, short one. The rate really shows up on larger, longer loans.

None of this is enforced for you. There's no oracle deciding your collateral is "too low." That freedom is the point, and the responsibility that comes with it is yours.

What this is, and what it isn't

Lending on SUBFROST is deliberately narrow, and the boundaries are the point:

  • It is a way to make a fixed-rate, fixed-term loan directly on Bitcoin, holding your own keys the whole time, with the exact outcome known up front.
  • It is not a yield product with a protocol-set rate. Every rate in the book was chosen by a user. "Earn interest" is real; there is no guaranteed return.
  • There are no margin calls, no automatic liquidations, and no insurance fund. The contract does exactly what the two parties agreed: no more, no less. On a default, the lender's recourse is the collateral, as agreed.

Honesty about the failure case is the feature. A loan whose worst case is "I end up with the collateral I chose to accept" is a loan you can actually reason about.

FAQ

Who pays the network fee?

The taker pays the network fee to settle a loan on-chain when they accept an offer.

Can I cancel an offer I posted?

Yes, any time before someone takes it. A posted offer is a pre-signed instruction; cancelling just removes it.

What happens if the borrower doesn't repay?

After the deadline the loan defaults and the lender can claim the collateral. There's no automatic liquidation before that.

Is it custodial? Where are my funds?

Non-custodial. Your tokens stay in your wallet until the moment a loan settles on-chain, and repayments and collateral are only ever released to the address that owns them.

Which tokens can I use?

Any supported Alkanes token pair. The examples here use DIESEL as the loan token and frBTC as collateral.


*Ready to try it? Head to the Lend page on the SUBFROST app. *

Curious how much of Bitcoin is already Alkanes? The live data is here.