Compensate Mozart For Liquidator Bug

Summary

Note: Init condition means Init health of the account is above 0 and Maint condition means Maint health of the account is above 0.

The person who goes by mozart on discord was liquidated continuously from September 30, 20:19:50 UTC to October 4, 21:11:37 UTC on his SOL assets and USDC borrows. There were two reasons why this occurred.

  1. The open source liquidator was inaccurate and did not liquidate accounts that had both the being_liquidated flag on AND above Maint. health condition AND below Init health condition. However, the liquidator is supposed to continue liquidating these accounts until the Init health condition is met. As a result of this inaccuracy, a new liquidator popped up that liquidated mozart’s account until it was just below Init condition such that being_liquidated flag would not be turned off. In this way, the popup liqor was able to keep liquidating mozart’s account. This wouldn’t have occurred if there was a competitive market of liqors.

  2. The UI was unclear and showed mozart’s account as having positive Maint health which was reasonably interpreted by mozart to mean his account could not be liquidated. But of course, his account can be liquidated as long as being_liquidated flag is on and account is not yet above Init condition.

Solution

We took some steps on October 4 to prevent this from happening again:

  1. We fixed the open source liqor
  2. We updated the UI to be more clear
  3. We made the mango program turn off the being_liquidated flag even if Init health is negative by a dust amount.
  4. Mango program also turns off the flag in Withdraw function after doing a health check

Compensation

I propose we compensate mozart in USDC for the liquidation fees of the SOL that was taken from his account with an additional 10% apologetic fee. This is roughly 5% of 4000 SOL at the market prices at the times he was liquidated. The total comes to 37,387.04 USDC. I think this is generous and should help alleviate some of the concerns traders may have about using Mango and falling into bugs.

This google doc has two sheets at the bottom so you can see the whole set of events. There’s the list of liquidations and a list of deposits and withdraws. The liq sheet has information about the compensation calculations.

Proposal

I’ll put up the DAO proposal in the morning if there aren’t any big objections to what I’ve proposed here.

3 Likes