PlusPool
This contract manages the leveraged assets of Meshswap's plus pool liquidity providers. Liquidity providers can maximize their returns with positive assets (deposited assets + utilized assets) by using positive deposits according to their deposited assets. However, a high asset utilization ratio can result in automatic returns, which can result in losses.
Code
Github Link: (Will be updated after official launch)
Address
Contract adress after production is deployed
Events, Read-Only Functions, and State-Changing Functions
Events
ChangeBorrowFactor
event ChangeBorrowFactor(uint newBorrowFactor);Event log of borrow factor change
ChangeLiquidationFactor
event ChangeLiquidationFactor(uint newLiquidationFactor);Event log of liquidation factor change
ChangeBorrowable
event ChangeBorrowable(address token, bool b);Event that occurs when availability is changed
GiveReward
event GiveReward(address user, uint amount, uint lastIndex, uint rewardSum);Event log of when mined MESH is claimed and distributed
Parameters
user: address of the user who claimedamount: the amount of MESH claimedlastIndex: index result of the pair of the wallet after claimingrewardSum: The amount of MESH that has been accrued so far
GiveAirdropReward
event GiveAirdropReward(address user, address dist, uint amount, uint currentIndex, uint userAirdropSum);Event log of when airdrop token is claimed and distributed
Parameters
user: address of the user who claimeddist: Airdrop contract addressamount: the amount of token claimedlastIndex: index result of the pair of the wallet after claimingrewardSum: The amount of token that has been accrued so far
OpenPosition
event OpenPosition(address user, uint amount0, uint amount1, uint borrow0, uint borrow1, uint amountLP, uint userLP);Events that occur when depositing to PlusPool
If the token to deposit is MESH,
msg.valueis provided.Parameters
user: address of the useramount0: The deposit amount of token0amount1: The deposit amount of token1borrow0: The utilization amount of token0borrow1: The utilization amount of token1amountLP: The amount of LP tokens minted due to additional liquidityuserLP: the total amount of LP tokens minted due to additional liquidity
ClosePosition
event ClosePosition(address user, uint amountLP, uint amount0, uint amount1, uint userLP);Events that occur when withdraw liquidity
Parameters
user: address of the useramountLP: The amount of LP tokens burned due to liquidity removalamount0: The withdraw amount of token0amount1: The withdraw amount of token1userLP: the total amount of LP tokens minted due to additional liquidity
Liquidate
event Liquidate(address user, uint idx, uint debt0, uint debt1, uint lp, uint debtRatio, uint time);Event that occur when the automatic return system activates
Parameters
user: address of the useridx: Number of auto-return countdept0: Number of token0 returned automaticallydept1: Number of token1 returned automaticallylp: the total amount of LP tokensdebtRatio: Asset utilization ratio in case of automatic returntime: Automatic return time
Read-Only Functions
totalLP
mint/burn depending on liquidity addition/removal
lpToken
target liquidity pool address
token0
The first token address composed of the pair
token1
The second token address composed of the pair
borrowable0
Whether token0 can be borrowable
borrowable1
Whether token1 can be borrowable
liquidationFactor
automatic return factor
It is a value between 1 and 1e18, in units of 1/1e16%
Default - 0.85e18
borrowFactor
Utilization cost interest rate of utilized assets
It is a value between 1 and 1e18, in units of 1/1e16%
Default - 0.67e18
userLP
Number of PlusPool tokens held by each address
liquidationBonusRate
Ratio of resources to be used for MESH buyback & incineration in case of automatic return
liquidationCount
function liquidationCount(address user) public view returns (uint)Returns the user's cumulative automatic return count
State-Changing Functions
claimReward
function claimReward() publicMethod that a user calls to claim the claimable MESH that has accumulated for the pair
When called, MESH is claimed from the Factory and paid to msg.sender
Even if the method is not called directly, it is automatically called when the LP token balance of the user’s wallet changes.
When liquidity is added
When liquidity is removed
openPositionETH
function openPositionETH(uint amount1, uint borrow0, uint borrow1, uint minAmountLP) public payableMethod that depositing MATIC to PlusPool
After liquidity is provided, the LP token corresponding to the pool share is minted in the
msg.senderwallet.If there is claimable MESH when called, the claim proceeds to
msg.sender.Parameter
amount1: The deposit amount of token1borrow0: The utilization amount of WMATICborrow1: The utilization amount of token1minAmountLP: Minimum Guaranteed LP amount
openPositionToken
function openPositionToken(uint amount0, uint amount1, uint borrow0, uint borrow1, uint minAmountLP) public payableMethod that depositing to PlusPool
After liquidity is provided, the LP token corresponding to the pool share is minted in the
msg.senderwallet.If there is claimable MESH when called, the claim proceeds to
msg.sender.Parameter
amount0: The deposit amount of token0amount1: The deposit amount of token1borrow0: The utilization amount of token0borrow1: The utilization amount of token1minAmountLP: Minimum Guaranteed LP amount
closePositionETH
function closePositionETH(uint amountLP, uint minAmount0, uint minAmount1) publicReturns the amount of LP tokens, and distributes the corresponding MATIC and token1 to the
msg.senderwalletThe returned LP token amount is burned
If there is claimable MESH and Airdrop when called, the claim proceeds to
msg.sender.Parameters
amountLP: The amount of LP tokens burned due to liquidity removalminAmount0: The withdraw amount of token0minAmount1: The withdraw amount of token1
closePositionToken
function closePositionToken(uint amountLP, uint minAmount0, uint minAmount1) publicReturns the amount of LP tokens, and distributes the corresponding token0 and token1 to the
msg.senderwalletThe returned LP token amount is burned
If there is claimable MESH and Airdrop when called, the claim proceeds to
msg.sender.Parameters
amountLP: The amount of LP tokens burned due to liquidity removalminAmount0: The withdraw amount of token0minAmount1: The withdraw amount of token1
Last updated