New liquidation interface

Venus will update its liquidation smart-contract interface to accomodate for the liquidation incentive change in accordance with the Venus V3 tokenomics.

The current 10% liquidation incentive will be split into two parts:

  1. Half of the liquidation incentive along with the seized collateral will be sent to the liquidator. Thus, the liquidators will receive 105% of the liquidated borrow amount in collateral vTokens instead of the current 110%.
  2. Another half of the liquidation incentive (5% of the liquidated borrow amount) will be sent to Venus treasury.

Venus will provide a new interface that accounts for this change: the Liquidator contract. We will have a grace period of 30 days, during which both the old interface and the new interface will be available. After the grace period, the Comptroller contract will be upgraded to block the liquidateBorrow requests originating from other senders.

Breaking changes:

  1. Instead of calling vToken.liquidateBorrow(...), liquidators will now have to call Liquidator.liquidateBorrow(...). The new interface is unified for BNB and BEP-20 tokens.
    1. For BEP20 borrows, liquidators will need to approve tokens to liquidator contract (instead of the corresponding vToken) before calling liquidateBorrow.
    2. For BNB borrows, liquidators will need to send the corresponding repayAmount of BNB along with the liquidateBorrow transaction.
  2. Instead of listening to the LiquidateBorrow event, indexers should now listen to the new LiquidateBorrowedTokens event. The previous event will still be emitted, but the information there will be incomplete.

The upgrade will happen in two phases:

  1. We will deploy a fully functional version of the Liquidator contract to BSC mainnet. Liquidators and indexers can start adapting their code immediately.
  2. We will disable the liquidateBorrow function of vBNB and vBep20 by adding a check that ensures msg.sender == comptroller.liquidatorContract().

Note:

Liquidators should not expect that the address of the liquidator contract will stay the same forever. The contract may be upgraded later without prior notice. The address of the liquidator contract will become available on chain after phase (2) via comptroller.liquidatorContract().

You can find the new liquidator contract code here: https://github.com/VenusProtocol/venus-protocol/blob/master/contracts/Liquidator.sol

11 Likes