🚧
Protocol Design
Pools can be instantiated permissionlessly for any ERC721 token. After instantiation, Pools have no external owners or privileged operations.
The Pool Factory contract is the administrator of an instantiated Pool to allow for admin fee collection in the future. Admin fees would be accrued to the protocol.
Capital deposited into a Pool carries user-defined risk parameters, including a maximum price (per NFT), a maximum duration, and an interest rate tier.
The maximum price imposes a limit price per NFT at which the deposit funds can be used when the Pool originates a loan. Similarly, the maximum duration limits imposes the maximum loan duration the deposit funds can be used for. The interest rate tier determines the cost of borrowing the deposit funds.
Originated loans are fixed duration with prorated repayments. Borrowers can also choose to cash-in or cash-out refinance their loans, also with proration, allowing them to continually extend loans beyond the Pool's maximum fixed duration.
Overdue loans are subject to liquidation, but excess proceeds from profitable liquidations (total proceeds > principal + interest) are returned to borrowers, less a small fee to lenders for the service.
Loans are funded by sourcing liquidity from deposits of ascending price limits, which function as tranches in the loan. The higher priced tranches receive greater interest, in exchange for higher default risk. The lower priced tranches receive less interest, in exchange for the insurance from the higher tranches.
In the event of a default, the highest tranches absorb any loss in descending order, while the lowest tranches are made whole in ascending order, up to the available liquidation proceeds.
Liquidated loan collateral is sent to a collateral liquidator associated with the Pool. Currently, the primary collateral liquidator is the English Auction Collateral Liquidator contract, which hosts an onchain English Auction for collateral. On completion of liquidation, proceeds are returned to the Pool to reimburse the depositor funds used in the loan. Liquidation losses are absorbed by the highest tranches, while surpluses are remitted to the borrower.
Pools have a collateral filter that is responsible for validating the collateral provided when originating a loan. Currently, the primary collateral filter is the Collection Collateral Filter, which validates that the collateral belongs to a single collection.
Additional collateral filters include the Ranged Collection Collateral Filter, which validates collateral belongs to a contiguous range of token IDs, and the Merkle Collateral Filter, which validates that collateral belongs a sparse set of token IDs.
Pools support collateral wrappers, which are special tokens that wrap collateral and provide an interface to enumerate the underlying collateral and unwrap it for liquidation. The primary purpose of this feature is to implement bundles containing multiple collateral.
When enabled, a Pool recognizes the tokens of the Bundle Collateral Wrapper as collateral, subject to validation of the underlying collateral with the collateral filter.
Last modified 7d ago