ADD: THORFi Unwind Module and Manager
Context
Unwind Borrowers, Savers, RUNEPool and POL in an orderly fashion, starting immediately.
This is the no-redenomination of collateral option with no forced haircuts. Impatient users can exit for a haircut, or sell to another person their position.
Although there is no re-denom; Impatient users can still exit at a discount or offload their position to someone else. The 10% System Income Tax may exist permanently to pay off the biggest positions, if they continue to outrun RUNE.
The approach below uses existing code (handlers, memos).
Treasury can accelerate the Unwind by simply buying RUNE and placing it in the Unwind Manager using a variety of fund sources (liquid, RUNE, OTC-based)
Stage 1 - Unwind Module Income
Immediately, take ~10% of System Income and place it in a new Unwind Module with associated mimir. Evaluate this income split immediately before all other Node/Burn/Dev/LP payouts.
UnwindModuleIncomeBasisPoints = 1000 //10%
This can done immediately to accumulate RUNE
Nodes can raise higher to fund faster payouts. 5-20% is viable.
Stage 2 - Unwind Manager - Randomised Exits
Manager
Create a daily routine that evaluates Borrowers, Savers and RUNEPoolers for lottery exit execution.
UnwindManagerCycleBlocks = 14400 //once a day
Number of Users
- BTC Borrowers: 981 // 2.5 years to evaluate all
- ETH Borrowers: 707 // 2 years
- BTC Savers: 1828 // 5 years
- ETH Savers: 1600 // 4 years
- LTC Savers: 900 // 2 years
- Other Savers: Less than 900 // 2 years
- RP: 778 // 2 years
After 5 years every user will have been processed (each pool/asset assessed in parallel).
Users are waiting for a lottery exit (randomly chosen).
Borrower Ejection
- Pick a random borrower (one per asset)
- Evaluate the RUNE to payout via full forced loan withdrawal (
collateralValue - debtValue) - If the Unwind Module has enough, continue, if not exit
- Collect the RUNE required, delete the debt, and payout the remaining collateral directly to user. Delete the user from store.
If (3) exits, the cycle skips and the Module will accumulate RUNE for another 24hours. Smaller loan holders will be exited first, the larger ones will exist until the end. Eventually every holder will be exited.
Borrower Discount Auction
Any borrower can skip the queue, or accept a lower payout by repaying their debt in full, and specifying the min amount of collateral to receive (using the existing loan repay handler and memo). The Manager will try to hit the minCollateralAmount specified by taking from the Unwind Module.
ie, if the Borrower would need 30k RUNE to repay their position to receive 0.7 BTC, but the Unwind Module only has 25k RUNE, then the borrower would specify 0.58 BTC minCollateral and take the 25k RUNE available. They are skipping the queue and taking a discount.
Saver Ejection
Stop rebasing Synth Units immediately
- Pick a random Saver (one per pool), read their
asset_deposit_value(not the redeem value) - Assess 50% of the value in RUNE - if the Unwind Module has that, continue, if not exit
- Exit the saver fully to L1 via Savers Withdrawal. Delete the user from store.
- Take (2) and credit it directly to the Pool.
A Saver is 50% L1 and 50% RUNE. By taking the 50% RUNE from the Unwind Module after ejecting the Saver and crediting it to the pool it is "put back" and does not harm LP positions. Since the RUNE to eject the Saver was purchased from System Income, over the life of the ejection there is no new sell pressure.
RUNEPool
- Pick a random Pooler
- Force exit to RUNE directly. Delete the user from store.
- Once the last member is exited, the RESERVE will own the full POL Position which is then locked.
Stage 3 - App Layer Position Tokenisation
Overview
Once App Layer is live - Borrowers and Savers can sell their position on an open marketplace. Will need a new memo/handler/manager with App Layer execution via a WASM contract. The marketplace would behave similarly to OpenSea with a bidding process.
Implementation
- Borrower moves their position to be owned by the Marketplace Contract, with a min price.
- Anyone can bid with an offer of Secured Asset in same denomination of the collateral, nominating an L1 address.
- If successful bid, Secured asset pays the original Borrower to their L1 address.
- New owner of the position will go back into the Lottery Exit, or repeat (1)