Liquidators' Guide
Liquidators make sure all borrows are always covered
Liquidation means transferring part of both debt and collateral(+premium) from the account with negative health to the caller.
Only users with negative health can be liquidated.
To find out if account fall under liquidation or not, one may query liquidator-entry-point(
3PAZv9tgK1PX7dKR7b4kchq5qdpUS3G5sYT)
contract, specifically, getUserHealth(user)
function. The following snippet queries any waves node on the status of
3PMZCTZjdsVZe2hePquBpE4LCVuZ5JA2PvK
(the argument of getUserHealth
function): curl -X 'POST' \
'https://nodes.wavesnodes.com/utils/script/evaluate/3PJ6iR5X1PT2rZcNmbqByKuh7k8mtj5wVGw' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"expr": "getUserHealth(\"3PMZCTZjdsVZe2hePquBpE4LCVuZ5JA2PvK\")"
}'
The output would be similar to:
{
"result": {
"type":"String",
"value":"bp:2105388966, bpu:1861495565"
},
"complexity":5354,
"expr":"getUserHealth(\"3PMZCTZjdsVZe2hePquBpE4LCVuZ5JA2PvK\")",
"address":"3PAZv9tgK1PX7dKR7b4kchq5qdpUS3G5sYT"
}⏎
The important line is #4: it returns
bp
and bpu
where -
bp
means "borrow power"
- bpu
means "borrow power used"account_health = (bp - bpu) / bp
If
bp<bpu
, the account falls under liquidation.To liquidate, one need to call
transferDebt
function in liquidator-entry-point (
3PJ6iR5X1PT2rZcNmbqByKuh7k8mtj5wVGw)
. There're 4 parameters in
tranfserDebt
function:borrowReserve
: the reserve address with debt,collateralReserve
: the reserve address with collateral,borrower
: address of the borrower with negative health,liquidateDebtAmount
: an amount of debt to be liquidated;
Up to 50% of debt can be liquidated within 1 transaction.
The caller needs to maintain positive health after this operation.
Last modified 1yr ago