05.01.2023|Dan Robinsontransmissions11GalagaToadPacman
This paper introduces Blend: a peer-to-peer perpetual lending protocol that supports arbitrary collateral, including NFTs. Blend has no oracle dependencies and no expiries, allowing borrowing positions to remain open indefinitely until liquidated, with market-determined interest rates.
Blend matches users who want to borrow against their non-fungible collateral with whatever lender is willing to offer the most competitive rate, using a sophisticated off-chain offer protocol.
By default, Blend loans have fixed rates and never expire. Borrowers can repay at any time, while lenders can exit their positions by triggering a Dutch auction to find a new lender at a new rate. If that auction fails, the borrower is liquidated and the lender takes possession of the collateral.
Blend has been implemented by Blur Core Contributors. In their implementation, some protocol parameters, such as protocol fees, are controlled by BLUR governance, as described below.
There has been a significant amount of prior work done on NFT-backed lending. Popular models include perp-like protocols (such as Floor Perps and papr), pooled lending protocols (such as BendDAO and Astaria), and peer-to-peer protocols (such as NFTfi and Backed).
Blend most resembles the peer-to-peer model, but has some important differences to improve borrower experience. Rather than exhaustively examining the details of all NFT-backed lending protocols, we will describe some common design decisions and how Blend differs.
Some of these protocols require an oracle, either to determine when a position should be liquidated or to determine an interest rate. But individual NFT prices are very difficult to measure objectively. Even floor prices tend to be difficult to measure on-chain. Solutions often either involve a trusted party, or could be manipulated with trading strategies.
Blend avoids any oracle dependencies in the core protocol. Interest rates and loan-to-value ratios are determined by whatever terms lenders are willing to offer. Liquidations are triggered by the failure of a Dutch auction.
Some protocols only support expiring debt positions. This is inconvenient for borrowers, who need to remember to close or roll their positions before expiry (or risk harsh penalties such as confiscation of their NFT). The process of manually rolling positions also costs gas, which cuts into the yield from lending.
Blend automatically rolls a borrowing position for as long as some lender is willing to lend that amount against the collateral. On-chain transactions are only needed when interest rates change or one of the parties wants to exit the position.
Some protocols do not support liquidations before expiry. This is convenient for borrowers, and makes sense for many use cases. But because this effectively gives borrowers a put option, lenders need to demand short expirations, high interest rates and/or low loan-to-value ratios to compensate for the risk that a position may become insolvent.
In Blend, an NFT may be liquidated whenever a lender triggers a refinancing auction and nobody is willing to take over the debt at any interest rate.
Some protocols pool lenders' funds together and attempt to manage risk for them. This often means leaning heavily on on-chain governance or centralized administrators to set parameters. It also makes it difficult to permissionlessly support long-tail collateral.
Blend uses a peer-to-peer model where each loan is matched individually. Instead of optimizing for ease-of-use on the lending side, Blend assumes the existence of more sophisticated lenders capable of participating in complex on- and off-chain protocols, evaluating risks, and using their own capital.
In this section, we construct the protocol step by step, starting with a simple peer-to-peer fixed-rate lending protocol and gradually adding adaptations to allow gas-efficient rolling and market discovery of floating rates.
First, let us imagine how our protocol might work if it had expiring rather than perpetual loans.
We start with the lender. A lender signs an off-chain offer to lend some principal amount of ETH with a particular interest rate and expiration time, against any NFT of a specified collection. They make it publicly available (say, by posting it to an off-chain repository of offers).
A borrower has an NFT they want to borrow against. They browse the available off-chain offers and choose a compatible one that matches the terms they're interested in. They then create an on-chain transaction that fulfills the lender's offer, put their NFT in a vault with a lien on it, and transfer the principal from the lender to themselves.
Before the expiration time, the borrower can pay the repayment amount (calculated as the loan amount plus interest) to the lender, which closes their position and lets them withdraw their collateral. After the expiration time, if the loan has not been repaid, the lender can take the collateral.
Note that the borrower may choose not to repay the loan if the value of the NFT has fallen below the repayment amount.
In the above mechanism, if the borrower forgets to repay the loan before expiration, they lose their NFT, even if the NFT is worth much more than the repayment amount. This seems harsh.
In many cases, someone else might have been willing to pay the lender the full repayment amount in order to take over the loan until a later expiration time, though possibly with a higher rate of interest.
So, instead of simply giving the collateral to the lender, the protocol can run a competitive process to extend the loan, using a Dutch auction in interest rate space.
At the expiration time, if the borrower has not repaid the debt, a refinancing auction begins at 0%, with a steadily rising rate. Once the auction hits an interest rate at which a new lender is interested in lending, the new lender can accept it by submitting their offer on-chain. The new lender pays the full repayment amount to the old lender, calculated as of the moment the auction completes, and takes over the loan until the new expiration time (which could be calculated as the current expiration time plus some protocol-specified loan period), using the interest rate at which the auction resolved.
It is possible that this Dutch auction may not be able to find a willing lender, especially if the value of the collateral has dropped close to or below the value of the debt.
Once the auction hits some defined max rate (like 1000%) without any new lender stepping in, the protocol infers that the position is insolvent or otherwise non-viable, and liquidates the borrower. The existing lender can then send a transaction to take possession of the collateral.
In some cases, the same lender might be happy to continue the same loan at the same terms, and the borrower may too. We might even consider that the default scenario. In that case, it would be wasteful to run the auction.
Instead, we could design our protocol to optimistically renew the loan. At each expiration time, borrowers and lenders, by default, extend the expiration time by some predetermined loan period, with the same terms. The above-described auction would only occur if the lender seeks to terminate the loan.
One issue with the above protocol is that during a loan period, if the price of the collateral falls dangerously close to the price of the repayment amount, there is no way to liquidate it until the expiration time.
This is less of an issue if the loan period is very short, since if the lender is concerned about the safety of the collateral, they can trigger a refinancing auction at the next expiry.
We could imagine shortening the loan period until it is infinitesimal. If, at any moment, the lender becomes concerned about the safety of the collateral, they could trigger a refinancing auction.
This lets us drop the concept of expiration times and loan periods. By default, loans continue indefinitely until some user interacts with the contract. Interest is accumulated continuously, and the repayment amount is calculated on the fly whenever needed.
A borrower can repay at any time. If a borrower wants to change the amount they have borrowed or get a better interest rate, they can atomically take out a new loan against the collateral and use the new principal to repay the old loan.
If a lender wants to get out of a loan, they can trigger a refinancing auction, as discussed above. All timelines and deadlines during refinancing events can be defined relative to the time the refinancing was initiated.
Alternatively, if there is a compatible offer available from another lender, the current lender can skip the auction by submitting the other lender's offer to the vault to get out of their loan.
The protocol does not depend on governance for valuing collateral or setting acceptable loan-to-value ratios, thus reducing the need for extensive on-chain governance or centralized administrators. However, there may still be situations where adjustments to certain parameters could enhance the protocol's functionality. These parameters include:
In Blur's implementation of Blend, after a 180-day waiting period, these parameters can be managed by BLUR governance to ensure optimal performance and adapt to changing market conditions in a decentralized way.
Blend is a flexible and permissionless floating-rate lending protocol that can support arbitrary collateral with no oracle dependencies, and allows whatever interest rates and loan-to-value ratios the market will bear.
We're excited to see how people use it!
Acknowledgments: Dave White
Graphics By: Achal Srinivasan, Kirby
Copyright © 2024 Paradigm Operations LP All rights reserved. “Paradigm” is a trademark, and the triangular mobius symbol is a registered trademark of Paradigm Operations LP