# Liquidator's Guide

{% hint style="info" %}
All the contents of the contract can be found here :

<https://github.com/BlockNG-Foundation/LAW-metaverse-contract-core/tree/main/Pawn>
{% endhint %}

#### Useful Contract Addresses

DegenBox : [0xDFD09C4A1Fd999F6e8518398216c53fcEa6f4020](https://www.smartscan.cash/address/0xDFD09C4A1Fd999F6e8518398216c53fcEa6f4020)

WBCHMarket : [0x3F562957b199d6362B378dBa5e3b45EE6fe77779](https://www.smartscan.cash/address/0x3F562957b199d6362B378dBa5e3b45EE6fe77779)

LAWMarket : [0xd46e5a9Cd7A55Bf8d3582Ff66218aD3e63462506](https://www.smartscan.cash/address/0xd46e5a9Cd7A55Bf8d3582Ff66218aD3e63462506)

MasterContract : 0xA01d276d9e8D356AdaBAda8b60916489BD4f51a8

#### Approve Markets

Sample Code：

```
//
DegenBox.setMasterContractApproval(address(this), market.masterContract(), true, 0, 0, 0);
```

#### Deposing lawUSD(Optional if not use swapper)

Depending on the amount of debt to be liquidated, it is necessary to fund lawUSD in DegenBox.

Sample Code：

```
//need to approve first
lawUSD.approve(address(box), num);
box.deposit(lawUSD, address(this), address(this), num, 0);
```

#### Liquidation

{% hint style="info" %}
Current liquidation is only available to a limited number of addresses.
{% endhint %}

```
//
interface Market {

    function onlyWhiteLiquidator() external view returns (bool);
    //current is true, will open when the price of LAW stabilizes
    
    function positionInfo(address user) external view
    returns 
    (uint256 deposited, 
        uint256 depositedShare, 
        uint256 depositedValue, 
        uint256 borrowed, 
        uint256 borrowedPart, 
        uint256 borrowedShare
    )

    function liquidate(
        address[] calldata users, // user need to be liquidated
        uint256[] calldata maxBorrowParts, // user borrow part
        address to, // move collateral to
        ISwapper swapper // could be zero if not use swapper
    ) external;
    

}
```

In general, you can use positionInfo to determine whether the user's position is ready for liquidation and to obtain the user's borrowpart.

If the collateral allows, the entire borrowpart of the user can be liquidated.

Once the user to be liquidated has been identified, the liquidate method can be called to perform the liquidation.

Note: If a swapper is not used, the collateral will go to the DegenBox of the "to" address.

#### Swapper

Swapper can convert collateral to lawUSD so that you can liquidate even if you don't have enough lawUSD.

An example of a Swapper：

<https://github.com/Abracadabra-money/magic-internet-money/blob/main/contracts/swappers/SushiSwapSwapper.sol>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.blockng.money/how-it-works/pawn/liquidators-guide.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
