Whitepaper
FLUID | next-gen liquidity for NFTs
Here we present FluidNFT, a hybrid NFT liquidity protocol designed to enable capital efficient lending and borrowing against any NFT. The purpose of this whitepaper is to describe how FluidNFT works, and how it can be used to create novel lending & trading strategies.
1. Introduction
If NFTs are to succeed as a long-term asset class, unlocking liquidity and improving lending and borrowing infrastructure must go hand in hand [1]. Existing NFT liquidity protocols were not designed to manage the risks associated with the most illiquid and / or volatile assets. They rely instead on permissioned whitelisting to safeguard their users which simultaneously prevents over 99% of projects from being able to access this utility [1,2].
Within the first generation of NFT lending models, almost all of the total-loan-volume (TVL) comes from peer-to-peer (P2Peer) and peer-to-pool (P2Pool) lending [3]. Both have their distinct strengths and weaknesses in terms of default handling, loan-to-value ratios and loan duration. However, neither are able to optimize for capital efficiency due to the asset underutilization of unmatched offers & listings in P2Peer, and relatively low loan-to-value (LTV) ratios in P2Pool [4,5].
Enter FluidNFT: a hybrid NFT liquidity protocol designed to enable capital efficient lending and borrowing against any asset. This is implemented as a hybrid P2Peer x P2Pool model with custom-built features to manage long-tail risks, create novel lending & trading strategies, and enable greater composability & interoperability between NFTs and DeFi.
2. Permissionless Listings
FluidNFT lets users determine which collateral-asset pairs are listed. To achieve this, FluidNFT uses Chainlink PriceConsumerV3 data feeds and NFTX as core dependencies [6,7]. Any ERC721 or ERC1155 asset listed on NFTX, or fractionalized ERC20 token can be used as collateral. And any ERC20 asset with a WETH (Wrapped Ether) pair on PriceConsumerV3 can be used to lend against it.
2.1. Isolation Pools
Permissionless listings within P2Pool models risk contagion; that bad debt against one collateral will affect the liquidity available across others. As we've seen with BAYC in the summer of '22, even blue chip NFTs are not immune to price manipulation [8]. Isolation pools enable liquidity against a single collateral-asset pair and limit downside risk solely to funds within each pool.
Isolation pools can be used by NFT creators, collection and lending DAOs to provide the utility of instant loans to their members as an additional revenue stream post-royalties through yield generation, and/or limit exposure to foreclosure against projects other than their own.
3. Lending and Borrowing
FluidNFT lender options include depositing ERC20 tokens into lending pools for instant yield (P2Pool) and making offers against NFTs & fractionalized NFTs listed as collateral (P2Peer).
Borrower options include depositing NFTs & fractionalized NFTs into lending pools for instant liquidity (P2Pool) and listing these as collateral (P2Peer).
See Section 4. Capital Efficiency for how FluidNFT incorporates both P2Peer & P2Pool functionality within the same protocol to improve liquidity and capital efficiency.
3.1. Tokenized Debts
Lenders to lending pools receive interest-bearing ERC20 fTokens which can be redeemed for the underlying assets in the pool at any time (similar to AAVE's aTokens [9]).
Borrowers from lending pools receive interest-accruing ERC20-compliant dTokens that can be burned at any time on repayment of the debt. These debt tokens are soul-bound and held within ERC-988-inspired smart Obligation Receipts to enable the trading of NFTs with debt obligations.
3.2. Promissory Notes
Lenders of P2Peer loans receive ERC721 Promissory Notes on execution. These give the bearer the right to redeem the loan repayment on maturity or the collateral on foreclosure.
Lenders of P2Pool loans receive ERC-998-inspired smart Promissory Notes by depositing their interest-bearing fTokens to a stability pool. See Section 7.3. Stability Pools for more information.
Promissory Notes can be freely owned, transferred and traded; similar to those from NFTfi [10].
3.3. Obligation Receipts
Borrowers of P2Peer loans receive ERC721 Obligation Receipts on execution. These give the bearer the right to retrieve the underlying collateral on loan repayment.
Borrowers of P2Pool loans have the option to mint ERC-998-inspired smart Obligation Receipts. This locks an amount of debt tokens against a specific NFT and prevents any debt rebalancing.
Obligation Receipts can be freely owned, transferred and traded.
4. Capital Efficiency
Within the NFT-backed loans market the majority of capital inefficiencies exist due to the opportunity cost of unmatched P2Peer offers & listings and the relatively low P2Pool loan-to-value (LTV) ratios.
By combining P2Peer & P2Pool within a single hybrid protocol it is possible to optimize for asset utilization with measurable benefits for both lenders and borrowers.
4.1. Yield-Earning Offers
Lenders are able to earn yield on P2Peer loan offers.
The FluidNFT SDK and Interface are able to abstract the process to achieve this. At the smart contract level, lender funds are deposited into a P2Pool lending pool for instant, passive yield generation. So long as the pool is solvent, the fToken to underlying asset exchange will always be greater than one. So long as this is the case, making fToken offers is enabled with fTokens being swapped for the underlying asset on loan execution.
This enables lenders to earn passive yield while enabling the option to simultaneously execute on active lending strategies.
4.2. Listings with Instant Liquidity
Borrowers are able to list NFTs as collateral for P2Peer loans while accessing instant liquidity.
Again, the FluidNFT SDK and Interface are able to abstract this process. At the smart contract level, borrower NFT(s) are deposited to the hybrid Collateral Manager to create a P2Pool position, borrowing against a lending pool. Once P2Peer loan terms are matched and executed, so long as the amount is greater than that borrowed against the pool loan terms will automatically update.
This enables borrowers to access instant liquidity, create a listing for optimal terms, receive competing offers, and to switch to these freely.
5. Composability & Interoperability
Inspired by Euler, FluidNFT uses deferred liquidity checks to enable composable multi-step transactions that would not otherwise be possible, opening up unique lending, borrowing & trading strategies.[11] See Section 10. Strategies & Execution for further details.
FluidNFT has integrated with select partners to enable the ability to leverage NFTs across DeFi.
5.1. Transaction Builder
Transactions can be conveniently batched together to save on gas costs. Advanced users can combine multi-step transactions together with deferred liquidity checks, to rebalance positions and / or perform zero-fee flash loans.
5.2. External Integrations
FluidNFT has integrated with select partners to enable the ability to leverage liquidity and NFTs across DeFi. Integrations include NFT marketplaces OpenSea and Blur, fractionalized NFT marketplace NFTX, and decentralized exchange Uniswap [12,13,14].
6. Trust-Minimized Oracles
FluidNFT uses trust-minimized oracles to determine the amount of P2Pool liquidity that can be borrowed against NFTs and if positions are sufficiently over-collateralized.
6.1. Trust-Minimized
FluidNFT uses a trust-minimized method for accessing off-chain data on-chain [15]. Additional data storage optimizations help enable support for long-tail assets. While parameters such as “update-timelock” and “verification-window” are used to resolve team-risk.
6.2 Floor TWAP
Time-weighted average floor prices (Floor TWAP) from major exchanges including OpenSea and Blur are used for P2Pool NFT oracle prices. NFTX liquidity pools are used to calculate the Floor TWAP of any fractional NFT and as a data point for monitoring oracle price manipulation.
6.3. Price Feeds
Chainlink PriceConsumerV3 are used for the price of any given ERC-20 asset. The reference asset used is ETH and all ETH asset pairs are supported.
7. Liquidations
Liquidations can be triggered when P2Pool loans are no longer sufficiently over-collateralized. With collateralization calculated as the risk-adjusted oracle price. That is the Floor TWAP multiplied by the Collateral and Borrow Factors.
Whereas for P2Peer loans the foreclosure mechanic is relatively straightforward, in P2Pool liquidations there are multiple actors, risks and incentives to consider. i) Borrowers risk losing their collateral, ii) Lenders risk bad debt causing pool insolvency and a loss of funds, iii) Liquidators are incentivised to buy distressed assets at a discount & risk further downside.
7.1. Cascade Resistance
The majority of P2Pool liquidations currently use high-bid-wins auctions. Liquidation auctions are triggered only after a user deposits the amount of outstanding debt as the first bid. This is then staked for the duration of the auction or until this user is outbid. Issues can arise when a lack of bidding results in below-market liquidations to further drive down floor prices, causing a cascade of liquidations and/or the pool to accumulate bad debt [16].
FluidNFT uses Discounted Dutch Auctions to provide resistance to this, similar to the approach from Euler [17]. Discount rates are proportional to a lender's deposits which helps retain value within the protocol and disincentivizes external price manipulation. By removing the requirement for staking against the amount of outstanding debt, liquidation bonuses can be kept low as users no longer being locked within an untradable position.
7.2. Borrower Protection
Discounted Dutch auction start prices are set at many multiples of the NFT floor price to factor any potential rarity and to give the borrower time to resolve their position and avoid liquidation.
7.3. Stability Pools
Stability pools are a mechanism used to create tranches. Here each lending pool can be thought of as the senior tranche with and its corresponding stability pool as the junior tranche.
Lenders are incentivized to deposit fTokens within stability pools to receive an increased distribution of FLUID governance tokens as Stability Incentives. Should the pool accumulate bad debt, up to 30% of stability pool depositors' funds can be slashed to cover the deficit, similar to AAVE's Safety Module [18].
8. Reserves
8.1. Bad Debt Protection
Should bad debt accumulate to any pool it risks becoming insolvent. Liquidation measures 7.1 Cascade Resistance and 7.3 Stability Pools are designed to mitigate the risk of these events. Should this occur, it increases the chance of there being a “run on the bank” where lenders race to withdraw funds to avoid being left as the bearer of bad debt.
To reduce this risk, FluidNFT follows Euler in having a portion of the interest earned by lenders accumulate to the reserve. In this way pool reserves act as a lender of last resort in the event of a bank run. Provided that reserves accumulate at a faster rate than bad debt, lenders should not need to worry about withdrawing their deposits.
The proportion of interest paid to the reserve is called the “Reserve Factor” and is a parameter specific to each lending pool and configurable via governance. Noting the trade off between using a higher reserve factor to protect against bad debt vs the yield diverted from lenders.
8.2. Liquidation Surcharge
During a liquidation, an additional fee is paid to the reserve by the liquidator on behalf of the violator. This is contributed to the reserves such that more volatile assets which tend to trigger more liquidations accrue reserves at a faster rate than less volatile assets. Additionally, this fee ensures self-liquidations are unprofitable to counter some undesirable manipulation strategies.
9. Interest Rates
9.1. Interest Rate Model
FluidNFT uses the standard kink (piecewise linear) model to manage liquidity risk and optimize utilization. Parameters for each collateral-asset pair are calibrated independently to manage specific risks and incentivise liquidity within each pool [19].
10. Strategies & Innovations
10.1. Passive Yield
Lenders deposit funds to a lending pool to earn passive yield (P2Pool).
We envisage this strategy being used by NFT creators to generate yield from their treasury reserves while providing utility to their community. With members incentivized to borrow from these pools to generate revenue for the project and the missions they support.
10.2. Lend to Earn
Lenders make NFT loan offers with the goal to maximize yield (P2Peer).
This involves making offers with higher APRs, shorter durations, and lower LTVs to maximize returns while minimizing the risk of foreclosures.
10.3. Lend to Earn with Passive Yield
This is an extension of the 10.2. Lend to Earn strategy using P2Pool fTokens to make loan offers. FluidNFT's internal oracle ensures the exchange rate of fTokens to the underlying is always greater or equal to one and the conversion is handled at time of execution.
10.4. Lend to Acquire
Lenders make NFT loan offers with the goal to acquire the underlying collateral (P2Peer).
This involves making offers with lower APRs, bespoke maturities*, and higher LTVs to maximize the number of accepted offers and chance of foreclosures.
(* Maturities ending at inopportune times such as over public holidays or key events).
10.5. Lend to Acquire with Passive Yield
This is an extension of the 10.2. Lend to Acquire strategy using P2Pool fTokens to make loan offers. FluidNFT's internal oracle ensures the exchange rate of fTokens to the underlying is always greater or equal to one and the conversion is handled at time of execution.
10.6. Interest Rate Arbitrage
Users borrow at a lower APR and lend at a higher APR to net the difference.
Note that this can be P2Pool x Pool, P2Pool x P2Peer or P2Peer x P2Peer. Risk considerations should include cross-collateral risk and any rate change that would make this unprofitable.
10.7. Interest Rate Arbitrage via NFT Staking
This is an automation of the 10.6. Interest Rate Arbitrage strategy, abstracting the individual steps.
10.8. Tradable Promissory Notes
Lenders sell promissory notes within interest rate protocols such as MetaStreet [20].
Lenders receive promissory notes when executing P2Peer loans or, optionally, when depositing funds into a P2Pool stability pool.
10.9. Tradable Obligation Receipts
Borrowers sell obligation receipts on any NFT marketplace.
Borrowers receive obligation receipts when executing P2Peer loans or, optionally, for P2Pool loans by locking their position (to prevent debt rebalancing after listing the NFT for sale).
11. Governance
FluidNFT follows the Compound governance model [21]. The protocol will be managed by the community; holders of the protocol's native governance token called FLUID. FLUID tokens represent voting power over the protocol software. Holders with sufficient FLUID tokens will be able to make a formal proposal to change the protocol. Community members will be able to vote on proposals themselves or delegate their voting share to a third party.
Examples of the kind of decisions community members might vote on include proposals to alter:
- Collateral and asset tiers
- Collateral and borrow factors
- NFT oracle parameters
- Reserve factors
- Governance mechanisms themselves
12. Acknowledgments
With special thanks to the teams behind AAVE, Euler and Compound. FluidNFT's initial architectural design was based on AAVE and adopts some of the code. Subsequent improvements to enable permissionless listings, long-tail asset support, and the construction of configurable execution strategies were inspired by Euler. Compound has provided an excellent model for governance. We are very grateful for their pioneering work in DeFi.
13. References
[1] PROOF - Deep Dive 005 - Lending & Borrowing
[2] IntoTheBlock - Number of NFT Collections in 2022
[3] Impossible Finance - NFT Lending Aggregated Dash
[4] NFTfi - Peer-to-peer lending
[5] BendDAO - Peer-to-pool lending
[6] Chainlink - PriceConsumerV3
[7] NFTX - Fractional NFT marketplace
[9] AAVE - aTokens
[11] Euler - Liquidity deferrals
[12] OpenSea - NFT marketplace
[14] Uniswap - Decentralized exchange
[15] Trustus - Trust-minimized off-chain data on-chain
[16] Metaversal - P2Pool lending death spiral
[17] Euler - MEV-resistant liquidations
[18] AAVE - Safety Module
[19] AAVE - Interest Rate Model