---
# System prepended metadata

title: LSR Testnet(Kovan)

---

# LSR Testnet(Kovan)

## Contract address

### Liquid Stability Reserve(2022-07-23)
| Contract Name | Contract Address                           | Link                                                                                  |
| ------------- | ------------------------------------------ |:------------------------------------------------------------------------------------- |
| LSRFactory            | 0x06852f0B6aA3E3eccb66bC275186dCAFB97fC2C5 | [link](https://kovan.etherscan.io/address/0x06852f0B6aA3E3eccb66bC275186dCAFB97fC2C5) |

#### LSR(USDC)
| Contract Name | Contract Address                           | Link                                                                                  |
| ------------- | ------------------------------------------ |:------------------------------------------------------------------------------------- |
| LSR(USDC)            | 0x1E2BfC4d0104E314E91dC52C3407002CbB1A040F | [link](https://kovan.etherscan.io/address/0x1E2BfC4d0104E314E91dC52C3407002CbB1A040F) |
| msd(USX)            | 0xF76eAd4da04BbeB97d29F83e2Ec3a621d0FB3c6e | [link](https://kovan.etherscan.io/address/0xF76eAd4da04BbeB97d29F83e2Ec3a621d0FB3c6e) |
| USDC            | 0x11513151a77fE2Bc43fdEdeACE05c4F35ff81A8f | [link](https://kovan.etherscan.io/address/0x11513151a77fE2Bc43fdEdeACE05c4F35ff81A8f) |
| DForceLendingStrategy(USDC)            | 0xD9A0b2620E132153e57A8bC63c3aF6a77cfC3880 | [link](https://kovan.etherscan.io/address/0xD9A0b2620E132153e57A8bC63c3aF6a77cfC3880) |

#### LSR(USDT)
| Contract Name | Contract Address                           | Link                                                                                  |
| ------------- | ------------------------------------------ |:------------------------------------------------------------------------------------- |
| LSR(USDT)            | 0x00C4b81F79153dfDA7289257BBf6b0023aB0E9f8 | [link](https://kovan.etherscan.io/address/0x00C4b81F79153dfDA7289257BBf6b0023aB0E9f8) |
| msd(USX)            | 0xF76eAd4da04BbeB97d29F83e2Ec3a621d0FB3c6e | [link](https://kovan.etherscan.io/address/0xF76eAd4da04BbeB97d29F83e2Ec3a621d0FB3c6e) |
| USDT            | 0x95F46c202e3816e287E849DFa025C0b070ae7210 | [link](https://kovan.etherscan.io/address/0x95F46c202e3816e287E849DFa025C0b070ae7210) |
| DForceLendingStrategy(USDT)            | 0xc42B0AC9E9e60Ef5c9B03d31DC75e50AE6140120 | [link](https://kovan.etherscan.io/address/0xc42B0AC9E9e60Ef5c9B03d31DC75e50AE6140120) |

#### LSR(DAI)
| Contract Name | Contract Address                           | Link                                                                                  |
| ------------- | ------------------------------------------ |:------------------------------------------------------------------------------------- |
| LSR(DAI)            | 0x87911d24b8b1aeaC3eE62793aF230D7a82fcEbeA | [link](https://kovan.etherscan.io/address/0x87911d24b8b1aeaC3eE62793aF230D7a82fcEbeA) |
| msd(USX)            | 0xF76eAd4da04BbeB97d29F83e2Ec3a621d0FB3c6e | [link](https://kovan.etherscan.io/address/0xF76eAd4da04BbeB97d29F83e2Ec3a621d0FB3c6e) |
| DAI            | 0x49ad4e09Ed76080d0480F4F371f8F8e64D61aB1E | [link](https://kovan.etherscan.io/address/0x49ad4e09Ed76080d0480F4F371f8F8e64D61aB1E) |
| DForceLendingStrategy(DAI)            | 0x252Ddf36616E613912e9DC8Ca3Dfa9A23F6F3ECf | [link](https://kovan.etherscan.io/address/0x252Ddf36616E613912e9DC8Ca3Dfa9A23F6F3ECf) |

#### LSR(BUSD)
| Contract Name | Contract Address                           | Link                                                                                  |
| ------------- | ------------------------------------------ |:------------------------------------------------------------------------------------- |
| LSR(BUSD)            | 0x2556BBB3225a471746E614517EAD4fc10E5Fc03E | [link](https://kovan.etherscan.io/address/0x2556BBB3225a471746E614517EAD4fc10E5Fc03E) |
| msd(USX)            | 0xF76eAd4da04BbeB97d29F83e2Ec3a621d0FB3c6e | [link](https://kovan.etherscan.io/address/0xF76eAd4da04BbeB97d29F83e2Ec3a621d0FB3c6e) |
| BUSD            | 0xfD399A4989deBD753Bfa7aDd304DfD94b8F5d708 | [link](https://kovan.etherscan.io/address/0xfD399A4989deBD753Bfa7aDd304DfD94b8F5d708) |
| DForceLendingStrategy(BUSD)            | 0xbB8a89129B02Ac3121737Ec62E6ae2e6Ff28afdE | [link](https://kovan.etherscan.io/address/0xbB8a89129B02Ac3121737Ec62E6ae2e6Ff28afdE) |


### implementation
| Contract Name           | Contract Address                               | Link                                                                            |
| ----------------------- | ---------------------------------------------- |:------------------------------------------------------------------------------- |
| LSRFactory impl           | 0x6774bE7069B4C3c1ae789d1902a865ef9091D943     | [link](https://kovan.etherscan.io/address/0x6774bE7069B4C3c1ae789d1902a865ef9091D943) |
| LSR impl           | 0xcEBCE0DF710e00EBa89C8272eD27Df4a0c7111ed     | [link](https://kovan.etherscan.io/address/0xcEBCE0DF710e00EBa89C8272eD27Df4a0c7111ed) |
| MSDControllerV2 impl           | 0xb9366dad59Ad443E3c160104bab6eadAF54E50C4     | [link](https://kovan.etherscan.io/address/0xb9366dad59Ad443E3c160104bab6eadAF54E50C4) |


### Related Contracts
| Contract Name     | Contract Address                           | Link                                                                            |
| ----------------- | ------------------------------------------ |:------------------------------------------------------------------------------- |
| ProxyAdmin                | 0xB455bfB432991CE874eb2A84e5ad552b655759c9 | [link](https://kovan.etherscan.io/address/0xB455bfB432991CE874eb2A84e5ad552b655759c9) |
| MSDController                | 0xC3d28CEDf33aaCd171601a9D7E773703Cd8CBAeA | [link](https://kovan.etherscan.io/address/0xC3d28CEDf33aaCd171601a9D7E773703Cd8CBAeA) |


## ABI

All abi can be found in https://github.com/dforce-network/LSR/tree/dev/abi

           
| Contract | ABI                        |
|:-------- |:-------------------------- |
| LSR      | LSR.json                   |
| LSR      | DForceLendingStrategy.json |


## Calculation


### Convert Decimals


```

_convertDecimals(_amount,_amountUnitIn,_amountUnitOut)  {
    return _amount.mul(_amountUnitOut).div(_amountUnitIn);
}

```
### **Buy Msd**

**buy fee**

> msdAmount = _convertDecimals(inputAmount, [mprDecimalScaler](#mprDecimalScaler), [msdDecimalScaler](#msdDecimalScaler))
> fee = msdAmount.mul([taxIn](#taxIn)).div(1e18)


**msd amount**

> msdAmount = msdAmount.sub(fee)

**input amount max**
> [strategy](#strategy).[limitOfDeposit()](#limitOfDeposit)

**buy msd max**
> [msdQuota](#msdQuota)

### **Sell Msd**

**sell fee**

fee = inputAmount.mul([taxOut](#taxOut)).div(1e18)


**msd amount**

> tokenAmount = _convertDecimals(inputAmount.sub(fee), [msdDecimalScaler](#msdDecimalScaler), [mprDecimalScaler](#mprDecimalScaler))


**buy token max**

> [mprOutstanding](#mprOutstanding)



## **Interface Document**

_**notice: In the absence of special instructions, the data is scaled by 1e18.**_

<hr>

### **LSR**


**Introduction**

Welcome to Contract LSR's Interface Documentation!

We provide some interfaces to query infomation about dForce LSR, you can get information about.

### **User Action**

<hr>

#### **buyMsd**

*When the user buys msd(USX), you can call this function*
 * Check whether the sender's Token allowance needs to approve.

> Token.allowance(sender, LSR) > input amount
> true: Not approve
> false: approve

**`Parameters`**

| type    | description       | detail                            |
| ------- | ----------------- |:--------------------------------- |
| uint256 | Token amount | decimal(scaled by Token's decimals)  |


#### **buyMsd (recipient)**

*When the user buys msd(USX), you can call this function*
 * Check whether the sender's Token allowance needs to approve.

> Token.allowance(sender, LSR) > input amount
> true: Not approve
> false: approve

**`Parameters`**

| type    | description       | detail                            |
| ------- | ----------------- |:--------------------------------- |
| address | recipient address |   |
| uint256 | Token amount | decimal(scaled by Token's decimals)  |



<hr>

#### **sellMsd**

*When the user sell msd(USX), you can call this function*
 * Check whether the sender's msd(USX) allowance needs to approve.

> msd(USX).allowance(sender, LSR) > input amount
> true: Not approve
> false: approve

**`Parameters`**

| type    | description       | detail                            |
| ------- | ----------------- |:--------------------------------- |
| uint256 | msd(USX) amount | decimal(scaled by msd(USX)'s decimals)  |


#### **sellMsd (recipient)**

*When the user buys msd(USX), you can call this function*
 * Check whether the sender's msd(USX) allowance needs to approve.

> msd(USX).allowance(sender, LSR) > input amount
> true: Not approve
> false: approve

**`Parameters`**

| type    | description       | detail                            |
| ------- | ----------------- |:--------------------------------- |
| address | recipient address |   |
| uint256 | msd(USX) amount | decimal(scaled by msd(USX)'s decimals)  |

<hr>



### **Data**

#### <a id="msdDecimalScaler"></a>**msdDecimalScaler (msdAmountUnit)**

**`Parameters`**

| type | description |
| ---- | ----------- |
| none | none        |

**`Return value`**

| type    | description | detail                  |
| ------- | ----------- | ----------------------- |
| uint256 | amount of a msd | wei |

#### <a id="mprDecimalScaler"></a>**mprDecimalScaler (tokenAmountUnit)**

**`Parameters`**

| type | description |
| ---- | ----------- |
| none | none        |

**`Return value`**

| type    | description | detail                  |
| ------- | ----------- | ----------------------- |
| uint256 | amount of a token | wei |

<hr>

#### <a id="taxIn"></a>**taxIn (buyFee)**

**`Parameters`**

| type | description |
| ---- | ----------- |
| none | none        |

**`Return value`**

| type    | description | detail                  |
| ------- | ----------- | ----------------------- |
| uint256 | buy msd fee | decimal(scaled by 1e18) |

#### <a id="taxOut"></a>**taxOut (sellFee)**

**`Parameters`**

| type | description |
| ---- | ----------- |
| none | none        |

**`Return value`**

| type    | description | detail                  |
| ------- | ----------- | ----------------------- |
| uint256 | sell msd fee | decimal(scaled by 1e18) |

<hr>

#### <a id="mintCap"></a>**mintCap**

**`Parameters`**

| type | description |
| ---- | ----------- |
| none | none        |

**`Return value`**

| type    | description | detail                  |
| ------- | ----------- | ----------------------- |
| uint256 | LSR mint cap | decimal(scaled by msd(USX)'s decimals) |

#### <a id="totalMint"></a>**totalMint**

**`Parameters`**

| type | description |
| ---- | ----------- |
| none | none        |

**`Return value`**

| type    | description | detail                  |
| ------- | ----------- | ----------------------- |
| uint256 | LSR total mint | decimal(scaled by msd(USX)'s decimals) |
<hr>

#### <a id="msdQuota"></a>**msdQuota**

**`Parameters`**

| type | description |
| ---- | ----------- |
| none | none        |

**`Return value`**

| type    | description | detail                  |
| ------- | ----------- | ----------------------- |
| uint256 | msd(USX) quota | decimal(scaled by msd(USX)'s decimals) |

#### <a id="mprQuota"></a>**mprQuota (tokenQuota)**

**`Parameters`**

| type | description |
| ---- | ----------- |
| none | none        |

**`Return value`**

| type    | description | detail                              |
| ------- | ----------- | ----------------------------------- |
| uint256 | token quota | decimal(scaled by token's decimals) |


#### <a id="mprOutstanding"></a>**mprOutstanding (tokenAvailableQuota)**

**`Parameters`**

| type | description |
| ---- | ----------- |
| none | none        |

**`Return value`**

| type    | description                      | detail                              |
| ------- | -------------------------------- | ----------------------------------- |
| uint256 | available quota for token in lsr | decimal(scaled by token's decimals) |

#### <a id="totalDeposits"></a>**totalDeposits**

**`Parameters`**

| type | description |
| ---- | ----------- |
| none | none        |

**`Return value`**

| type    | description                      | detail                              |
| ------- | -------------------------------- | ----------------------------------- |
| uint256 | quota for token in lsr | decimal(scaled by token's decimals) |

<hr>

#### <a id="getAmountToBuy"></a>**getAmountToBuy (getBuyMsdAmount)**

**`Parameters`**

| type    | description           |
| ------- | --------------------- |
| uint256 | amount of spent token |

**`Return value`**

| type    | description                           | detail                                 |
| ------- | ------------------------------------- | -------------------------------------- |
| uint256 | amount of msd(USX) that can be bought | decimal(scaled by msd(USX)'s decimals) |

#### <a id="getAmountToSell"></a>**getAmountToSell (getSellMsdAmount)**

**`Parameters`**

| type    | description         |
| ------- | ------------------- |
| uint256 | amount of spent msd |

**`Return value`**

| type    | description                        | detail                              |
| ------- | ---------------------------------- | ----------------------------------- |
| uint256 | amount of token that can be bought | decimal(scaled by token's decimals) |


#### <a id="paused"></a>**paused**

**`Parameters`**

| type | description |
| ---- | ----------- |
| none | none        |

**`Return value`**

| type    | description | detail                  |
| ------- | ----------- | ----------------------- |
| bool | Pause state of LSR | true: pause; false: unpause |


#### <a id="strategy"></a>**strategy**

**`Parameters`**

| type | description |
| ---- | ----------- |
| none | none        |

**`Return value`**

| type    | description             | detail |
| ------- | ----------------------- | ------ |
| address | Active strategy address |        |

## **LSR Factory**

<!-- > [strategy address](#strategy) -->

### **Data**

#### <a id="getAllLSRs"></a>**getAllLSRs**

**`Parameters`**

| type | description |
| ---- | ----------- |
| none | none        |

**`Return value`**

| type    | description | detail                  |
| ------- | ----------- | ----------------------- |
| address[] | lsr address list |  |
| address[] | msd address list |  |
| address[] | mpr address list |  |

## **LSR Strategy**

> [strategy address](#strategy)

### **Data**

#### <a id="limitOfDeposit"></a>**limitOfDeposit**

**`Parameters`**

| type | description |
| ---- | ----------- |
| none | none        |

**`Return value`**

| type    | description | detail                  |
| ------- | ----------- | ----------------------- |
| uint256 | limit of deposit | wei |


#### <a id="depositStatus"></a>**depositStatus**

**`Parameters`**

| type | description |
| ---- | ----------- |
| none | none        |

**`Return value`**

| type    | description | detail                  |
| ------- | ----------- | ----------------------- |
| bool | deposit status of the strategy | true: pause; false: unpause |


#### <a id="withdrawStatus"></a>**withdrawStatus**

**`Parameters`**

| type | description |
| ---- | ----------- |
| none | none        |

**`Return value`**

| type    | description | detail                  |
| ------- | ----------- | ----------------------- |
| bool | withdraw status of the strategy | true: pause; false: unpause |
