[Warden] Multichain Hack - Proposed Recovery Plan
Hi everyone,
We wanted to share our thoughts in regards to a potential path forward following up to the Multichain bridge hack. As our goal is to elaborate a plan that will best align with the interest of the Moonwell community, we are curious to hear any feedback that may help improve it.
Current status
- Following the Multichain bridge hack, Moonwell Pause Guardians have temporarily paused borrowing and transfers of all assets on Moonwell Apollo. Repaying and withdrawing remains enabled for all markets. Supply is also enabled for non Multichain markets.
- Markets are currently in a state that prevents users from borrowing against Multichain assets at an inflated price.
- As a result, no significant outflow through borrowing activity against Multichain assets has occurred.
- Total exposure for non-recursive borrowing of Multichain assets is quite small (<$50k).
Summary
The current proposal aims to start the discussion regarding the following steps the protocol should undertake. Our objectives are to:
- Bring the Moonwell Apollo protocol to a functional state in a safe manner.
- Mitigate risks of accumulating bad debt by increasing borrowing rates, increasing reserve factors, and setting collateral factors to 0 for all Multichain assets.
- Incentivize users to withdraw and repay their Multichain positions.
State of markets (ETH.multi, USDC.multi, WBTC.multi, USDT.multi)
Allowed user action |
Before |
Present
(Pause guardians) |
After (Once propsal is executed) |
Supply | ✅ | ❌ | ❌ |
Borrow | ✅ | ❌ | ❌ |
Transfer | ✅ | ❌ | ✅ |
Repay | ✅ | ✅ | ✅ |
Withdraw | ✅ | ✅ | ✅ |
State of markets (MOVR, xcKSM, FRAX)
Allowed user action |
Before |
Present
(Pause guardians) |
After (Once propsal is executed) |
Supply | ✅ | ✅ | ✅ |
Borrow | ✅ | ❌ | ✅ |
Transfer | ✅ | ❌ | ✅ |
Repay | ✅ | ✅ | ✅ |
Withdraw | ✅ | ✅ | ✅ |
Potential action plan
Our proposed plan of action is comprised of the steps described below.
1. Update Interest Rate Curve settings to increase the borrow rates for all Multichain markets.
The objective of increasing the borrow rates of Multichain assets is to strongly penalize Multichain asset borrowers incentivizing them to repay their loan. High borrowing cost may counteract possible gains from continuing shorting Multichain assets.
IR Parameters | USDC.multi | USDT.multi | ETH.multi | BTC.multi |
Base | 0.00 | 0.00 | 0.02 → 0.00 | 0.02 → 0.00 |
Kink | 0.8 → 0.01 | 0.8 → 0.01 | 0.6 → 0.01 | 0.6 → 0.01 |
Multiplier | 0.05 → 0.3 | 0.05 → 0.3 | 0.15 → 0.3 | 0.15 → 0.3 |
Jump Multiplier | 3.175 → 5 | 3.175 → 5 | 3 → 5 | 3 → 5 |
Reserve Factor | 0.15 → 0.99 | 0.15 → 0.99 | 0.25 → 0.99 | 0.25 → 0.99 |
2. Set reserve factors to 99% for all Multichain markets.
Increasing the reserve factors for Multichain markets will incentivize users to withdraw their supply positions by offering little to no yield on lending positions.
All else equal, higher reserve factors will generate more reserves for the protocol which will then be able to convert its reserves to other assets if needed.
3. Set reward rates to 0 for all Multichain markets.
We would recommend removing incentives allocated to Multichain markets.
4. Set Collateral Factors (CF) to 0 for all Multichain markets.
With disabled supply and borrow capabilities, users will be strictly limited to repay their debts and withdraw their supply positions. Setting CF to 0 for Multichain assets will mitigate the risk of users borrowing non Multichain assets against their Multichain assets without pausing the protocol. Setting the CF to 0 will also make most accounts using Multichain assets as collateral eligible for liquidation.
Although, due to the current discrepancies between the Chainlink oracle prices and Multichain asset market prices, it is highly unlikely that liquidators will be able to liquidate accounts that borrow against multichain assets profitably.
Setting the collateral factors to 0 for all Multichain markets may also result in the liquidation of a subset of accounts holding Multichain assets as collateral and as debt which presents some downside.
5. Potentially update the oracle price feeds for all Multichain markets.
As mentioned above, although accounts borrowing against Multichain assets would become eligible for liquidation after updating CF to 0 most of them will not be profitable to liquidate due to the difference between Multichain asset oracle prices and on chain market prices.
By updating Multichain asset oracle price feeds in order to reflect their actual market price, liquidators could then liquidate some of these accounts profitably thereby mitigating the risk of accruing potential bad debts.
This solution would require a new adapter contract being deployed for each Multichain market, which will likely necessitate a smart contract audit and take some time. We think updating oracle price feeds is not a necessity given that most users using Multichain assets as collateral are executing recursive borrowing strategies. These users will likely have to unwind their position following the interest rate curve update. We wanted to mention this option as a potential action the protocol could take in order to mitigate the potential accrual of bad debts but think it is likely unnecessary and risky.
6. Unfreeze borrowing activity for non Multichain Markets (disable pause guardian).
Following the update of Collateral Factors and Interest Rate Curves for Multichain assets, the protocol could subsequently Unfreeze borrowing functionality for non Multichain markets.
References
- Moonwell Pause Guardians pausing .multi asset supply on Moonwell Apollo
- Moonwell Apollo borrow activity for 2023-07-06
- Gauntlet Multichain Risk - Community Update
Disclaimer
These proposed actions are aimed to start a discussion with the community and the Gauntlet team. The interest rate curve parameters should be reviewed by the Gauntlet team if they want to move forward with a similar proposal to validate they are adequate and safe.