In order to ensure the health of over-collateralized positions within the Metronome Synth Protocol, assets are assigned collateralization ratios. Each individual collateral asset on Metronome Synth is assigned a Collateralization Ratio (CR) in accordance with the risk framework, which scores collateral assets according to values like open market liquidity and smart contract risk. The collateral requirements of a user’s account is assessed as the value of each collateral deposited * its collateral factor.
Users can create synths with a USD value based on the user’s total collateral limit, which is determined by each asset's Collateral Factor (CF). You can calculate the maximum USD value of synths that can be generated using this formula:
Issuable limit in USD = Sum of (CR * assetDeposited * USD value) - current outstanding amount in USD.
The overall health of an account is assessed by comparing the total collateral value with the total value of synths generated. ‘debtPositionOf’ calculates the health status of a user's outstanding position in USD. If the outstanding amount is within the issuable limit, ‘_isHealthy’ is set to true. ‘_issuableInUsd’ is calculated as the remaining amount of issuable value. This function is critical in determining eligible positions for liquidation and calculating the required amounts of synthetic tokens and collateral. The ‘quoteLiquidateIn’ function is then used to calculate the amount of synthetic tokens required to liquidate the unhealthy position and the appropriate amount of collateral to be seized, including protocol fees and liquidator incentives.
When a user’s outstanding synthetic mintage is greater than the maximum allowed mintage of their account, they may be subject to liquidation. Anyone can call the ‘liquidate()’ function, specifying the account to be liquidated, the synthetic token, and the amount to repay.
The liquidator must have enough balance of the synthetic token to repay the specified amount. After the liquidation call, the contract burns the synth from the liquidator's balance and decreases the generated position of the account of the liquidated user.
Once the amount of collateral has been calculated, it is taken from the liquidated account and transferred to the liquidator. A fee may also be taken from the account and sent to the fee collector. Currently, the liquidation fee is an extra 18%, with 10% allocated to the liquidator and 8% to Metronome.
User A deposits $1000 of USDC into Metronome Synth with a Collateralization Ratio (CR) of 85%. This gives them up-to $850 in value to generate their chosen synthetic asset, in this example we will go with msETH: Issuable limit in USD = (85% * 1000 USDC * 1 USD) = $850 of msETH.
The collateral value is $1000, and the outstanding value is $850 of msETH. User A's account is currently healthy.
Later, the value of msETH increases, causing user A's account to become unhealthy. Let's assume the value of msETH has increased to the point where the outstanding msETH is worth $900.
User B, the liquidator, decides to perform a liquidation on user A. User B must alleviate enough of their outstanding positon through liquidation so that user A’s remaining position becomes healthy once again. There is an additional 18% premium subtracted from user A’s liquidated collateral, split between the liquidator and the Metronome Synth protocol.
- 1.User B acquires $300 worth of msETH and applies it towards the liquidation to partially repay user A's position.
- 2.User A's oustanding position is reduced by $300 worth of msETH, leaving them with $550 worth of msETH in minted assets.
- 3.Correspondingly, 354 USDC is seized from user A's account as collateral (equal to the amount of outstanding synths repaid plus the 18% liquidation fee, or 300*1.18).
- 4.The 300 USDC seized from user A's account is delivered to user B.
- 5.An additional 18% liquidation fee is applied to the seized collateral, so 54 USDC is split between user B and Metronome Synth. User B receives 10% on top of the size of liquidation as a bonus (30 USDC) and Metronome receives the remainder per the liquidation premium (24 USDC).
After the liquidation, user A's account now has $550 msETH and 646 USDC as collateral. This puts user A’s outstanding position at <85% the value of the remaining collateral, making user A’s position healthy once again. Note that there is no grace period following a liquidation. User A could be continually liquidated should they fail to remediate their position and the price of ETH continues to increase versus USDC.
- 1.The ‘_debtToken’ and ‘_syntheticToken’ must be valid and exist in the system.
- 2.The account to be liquidated (‘account_’) must have an outstanding amount (i.e., a non-zero balance in ‘_debtToken’).
- 3.The account's collateralization ratio must be less than the minimum collateralization ratio.
- 4.The amount of outstanding assets to be repaid during the liquidation (‘amountToRepay_’) must be within the acceptable range, defined as a percentage of the total outstanding amount.
- 5.The liquidation process must not be paused.
Users can liquidate positions by calling the ‘liquidate()’ function. Here is a breakdown of the liquidation process:
- 1.The liquidator calls the ‘liquidate’ function, providing the account to be liquidated (‘account_’), the debt token (‘_debtToken’), the synthetic token (‘syntheticToken_’), and the amount to be repaid (‘amountToRepay_’). This will also check if the prerequisites explained above for liquidation are met.
- 2.The liquidation amount is converted to the equivalent amount of collateral that needs to be seized from the liquidated account. This is done using the ‘quoteLiquidateOut’ function, which returns three values: ‘_totalSeized’, ’ _toLiquidator’, and ‘_fee’.
- 3.The function checks if the total seized collateral (‘_totalSeized’) is less than or equal to the liquidated account's collateral balance. If not, it reverts with an error.
- 4.The synthetic tokens are burned from the liquidator's account for the specified ‘amountToRepay_’. The corresponding debt tokens are also burned from the liquidated account.
- 5.The collateral is seized from the liquidated account and transferred to the liquidator's account (‘_toLiquidator’).
- 6.If there is a fee (‘_fee’) associated with the liquidation process, it is seized from the liquidated account and sent to the fee collector (‘defined in poolRegistry.feeCollector()’).
- 7.Finally, the ‘PositionLiquidated’ event is emitted, providing details about the liquidation process, including the liquidator's address, the liquidated account's address, the synthetic token, the amount of outstanding assets to be repaid, the total seized collateral, and the fee.
As mentioned above, when liquidating a position, Metronome will take 8%, and the liquidator will receive 10% of the fee associated with the liquidation process. To evaluate profitability, users should consider the following factors:
- 1.Monitor positions in the Synth protocol to identify undercollateralized accounts that are eligible for liquidation.
- 2.Calculate the potential profit for liquidating a position by determining the value of the seized collateral (including the liquidator's share of the fee) and comparing it to the number of synthetic tokens they would need to repay.
- 3.Take into account the optimal route for acquiring those synthetic tokens for repayment (minting through Metronome or purchasing off the open market).
- 4.Estimate the gas costs associated with executing the liquidation transaction. The gas costs will depend on the network congestion and the complexity of the transaction. If possible, it’s best to wait until times when the network is less congested. You can use an Ethereum Gas Tracker tool such as Etherscan to view gas prices at any time.
- 5.Weigh the potential profit against the estimated gas costs.
- 6.Continuously monitor the market prices of the synthetic tokens and the underlying collateral. Price fluctuations may impact the profitability of liquidation.