Liquidations
Specification
Below are all relevant functions and events that pertain to perps liquidations.
How Do Liquidations Work?
Once a position's remaining margin is exhausted, it must be closed in a timely fashion, so that its contribution to the market skew and to the overall debt pool is accounted for as rapidly as possible, necessary for accuracy in funding rate and minting computations.
Liquidations occur in two stages: (1) flagging and (2) triggering liquidation on flagged positions. Flagging, as the name would suggest, flags the account to be liquidated, associating the flagger via flagPosition
. After, and only after, a separate invocation to {force}LiquidatePosition
performs the liquidation. There are two types of liquidations: Spontaneous Liquidation and Forced Liquidation.
Once a position has been flagged for liquidation, no further interaction can occur until the liquidation is finalised.
A position can only be flagged for liquidation once. Every subsequent attempts to flag will be met with reverts.
Spontaneous Liquidation
A spontaneous liquidation is one whereby any account can perform the liquidation invocation. If the position is flagged, premium paid upon liquidation is below maxLiquidationDelta
, and instantaneous premium/discount is below maxPD
then a trigger to liquidate will be successful and relevant fees will be paid to the respective keepers.
Vast majority of liquidated accounts are expected to be liquidated spontaneously.
Forced Liquidation
A forced liquidation similar to a spontaneous liquidation except that it bypasses the validation of maxLiquidationDelta
and maxPD.
Additionally, only an endorsed account can successfully invoke forceLiquidatePosition
, with a revert being thrown on non-endorsed accounts.
Refer to PerpsV2MarketSettings for the values of maxLiquidationDelta
and maxPD
.
Endorsed Accounts
Endorsed accounts are tracked and managed on-chain via the FuturesMarketManager
contract:
Flagger / Liquidation Rewards
Rewards in the form of sUSD are paid to accounts that flag positions for liquidation. Rewards are also issued to accounts that trigger the subsequent liquidation. Flaggers are awarded the bulk of sUSD rewards, receiving an amount capped by maxKeeperFee
but a minimum of minKeeperFee
. As of writing this, an amount between $2 sUSD and $1000 sUSD is rewarded to the flagger.
A static sUSD amount defined by keeperLiquidationFee
is issued to the liquidator triggering keeper. Endorsed keepers do not receive a fee for force liquidations.
sUSD rewards are not issued upon flagging (i.e. at the invocation to flagPosition
) but rather, they are issued at liquidation (i.e. invocation of liquidatePosition
).
Refer to PerpsV2MarketSettings for the values of minKeeperFee
, maxKeeperFee
, and KeeperLiquidationFee
.
Further Reading
SIP-2005 - https://sips.synthetix.io/sips/sip-2005/
Last updated