Liquid P2P Loans
This is a variation of the Hodl Hodl contract design for Liquid, but without an arbitrator (not counting Liquid itself). It's pretty simple and similar ideas exist, but it seemed interesting enough to write up and spur some conversation.
I'll begin by explaining the high level concept. For the full details, please examine the steps in the diagram below.
A contract where the Borrower puts up 1.5x collateral (e.g. 1.5 L-BTC) in order to borrow another asset (e.g. $10k USDT, if we assume that's the price of 1 L-BTC). The borrower can reclaim the collateral if they pay back the loan before expiry. If expiry is reached, the collateral goes to the Lender.
- Spending L-BTC without necessarily selling, which may trigger a taxable event in some regions
- Leveraging your L-BTC position by buying more L-BTC with the USDT you borrowed
- Borrower loses the collateral (likely to be overvalued) if they fail to repay the loan
- Lender loses money if the collateral is no longer worth enough to cover the loan at expiry
The Lender's risk can be minimized by increasing the collateral. The Borrower's risk can be minimized by creating multiple "Repay Loan" transactions (see diagram) which pay back to a multisig with a potential buyer of the collateral. This way the Borrower can agree to give part of the collateral to the potential buyer, provided they pay back the loan in their stead. The same agreement could be made with the Lender, but they may not be willing to cooperate, as they'll receive the full collateral if the Borrower fails to pay.
This concept still needs a market place where the Lender and Borrower can find each other. At a minimum, a contract can be achieved in 3 communication rounds:
- Borrower makes an offer (e.g. revealing a 1.5 L-BTC UTXO for $10k USDT)
- Lender takes it and signs "Initiate Loan" and "Repay Loan" (see diagram) (We forego the "Forfeit Collateral" tx in favor of having the "Initiate Loan" tx contain a timelocked script, saving a communication round)
- Borrower signs "Initiate Loan" and sends it to the blockchain
-- Ruben Somsen
See also my other work.