AIP - 42: Add more granularity in the dust amounts of the Borrowing module

This is a proposal to add more granularity in the dust amounts in the borrowing module and introduce a dustLiquidation parameter such that:

  • everyone can still open borrow positions of any size
  • But if your debt is below a certain dustLiquidation amount, then if you get liquidated, all your debt can be repaid, and not an amount such that the position goes to a target health factor as normally done.

Context

A couple of weeks ago, we removed the dust parameter from the borrowing module so that there’s no longer a minimum needed when borrowing agEUR.

This article explains the rationale for removing the dust and the reason why it can be a big UX improvement for borrowers across the protocol.

Removing dusts may open the gate to more small positions hard to liquidate across the protocol. One thing to have in mind though is that the liquidation rules were conceived so that liquidations are the same regardless of the size of your position.

That is to say: if you have a position with 15k€ of collateral and 10k€ of debt, then if you have to be liquidated (for instance if collateral factor for this collateral is 0.6), then you’ll be liquidated such that the health factor of the position goes to a target: like 1.05.
In this case, with CF = 0.6 and assuming no protocol surcharge or discount, amount liquidated will be (1.05 x 10000 - 15000 x 0.6) / (1.05 - 0.6) = 3333.33

But now imagine that instead of having a 10k€ debt, you have 15€ worth of collateral and a 10 agEUR, then you’ll be liquidated 3.333.

The thing is that while the lack of dust may open the protocol to bad debt, there may be some amount of debt from which we no longer want the rule of the target health factor to apply, and to instead liquidate all the debt possible.
Rationale is that if you’re not profitable repaying 3.33€ and getting a proportional amount of discounted collateral, you may be profitable liquidating 10€ in this case.

Proposal

What we propose here is to add more granularity in the dust and add a dustLiquidation parameter such that if your debt is below this value, and if you get liquidated, you’re at risk of being liquidated the full value of your debt and not just an amount such that you’re back to the target health factor.

Implementation

This is in fact a minor change in the code, and can be done by just changing one line in the liquidation process.

We are currently thoroughly testing this change, but haven’t found any issue with the proposed implementation so far.

We propose setting this dustLiquidation parameter to the old dust value on each chain, that is to say:

  • on Ethereum: 10,000 agEUR
  • on Avalanche and Polygon: 20 agEUR
  • on Optimism and Arbitrum: 200 agEUR

Value to the protocol

It reduces the exposure of the protocol to the risk of bad debt as it’s possible that positions become profitable to liquidate (but wouldn’t be in the other case).

The drawback is that it makes the protocol slightly less borrower friendly for positions with smaller amount of debt because liquidations become more impactful in this case