Exchange
This is a smart contract to expand ERC-20 that is created with every liquidity pair. The Factory deploys this as new pool creation is requested. Although the Factory actually stores the two tokens of a pair and swapping takes place through it, the Exchange Contract must be called for liquidity to be provided or taken.
Code
Github Link: (Will be updated after official launch)
Address
Contract address after production is deployed
Events, Read-Only Functions, and State-Changing Functions
Events
Transfer
event Transfer(address indexed from, address indexed to, uint amount);ERC-20 Standard
Event log of Transfer/Mint/Burn
Approval
event Approval(address indexed holder, address indexed spender, uint amount);ERC-20 Standard
Event log of Approvals
ChangeMiningRate
event ChangeMiningRate(uint _mining);Event log of mining rate change
ChangeFee
event ChangeFee(uint _fee);Event log of trading fee rate changes
ChangeRateNumerator
Event log of rateNumerator changes
UpdateMiningIndex
Event log of pairs’ mining index changes
lastMined: Factory.mined() value at the time index is updatedminingIndex: pairs’ miningIndex value at the time
GiveReward
Event log of when mined MESH is claimed and distributed
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
ExchangePos
Event log of POS transactions
token0: Token address delivered by the useramount0: the amount of tokens delivered by the usertoken1: token address received by useramount1: the amount of tokens received by the user
ExchangeNeg
Event log of NEG transactions
token0: token address delivered by the useramount0: the amount of tokens delivered by the usertoken1: token address received by the useramount1: the amount of tokens received by the user
AddLiquidity
Event log of liquidity additions
liquidity: the amount of LP tokens minted due to additional liquidity
RemoveLiquidity
Event log of liquidity removals
liquidity: the amount of LP tokens burned due to liquidity removal
Sync
Emitted each time reserves are updated.
Parameters
pool : Pool contract address of target pool
reserveA : Token0 liquidity amount
reserveB : Token1 liquidity amount
Read-Only Functions
name
Meshswap LP
symbol
MSLP
decimals
18
totalSupply
mint/burn depending on liquidity addition/removal
balanceOf
Number of LP tokens held by each address
allowance
Status of approval to spender for each address
factory
The factory address where the LP smart contract is deployed
token0
The first token address composed of the pair
token1
The second token address composed of the pair
reserve0
Returns the liquidity quantity of the token0 asset in the current pool
reserve1
Returns the liquidity quantity of the token1 asset in the current pool
fee
Transaction fee for the pair
It is a value between 0 and 100, in units of 0.01%
1 == 0.01%, 100 == 1%
mining
The mining rate of the pair
It is a value between 0 and 100, in units of 1%
e.g. If mining is 10, the pair has claim authority for 10% of the quantity mined per block in the factory.
lastMined
Factory.mined() value at the last time the pair updated the index
miningIndex
Index value of the last recorded pair
userLastIndex
mapping(address => uint)
Stores the index value at the time of last reward for each user
userRewardSum
mapping(address => uint )
Stores the cumulatively claimed MESH quantity value for each user
getCurrentPool
Returns the liquidity quantity of the two assets in the current pool
estimatePos
When a request is made to sell the amount of the corresponding token through a POS transaction, the expected receiving amount of the opposite token is returned.
estimateNeg
When a request is made to purchase the amount of the corresponding token through a NEG transaction, the expected payment amount of the opposite token is returned.
State-Changing Functions
transfer
ERC-20 Standard
transferFrom
ERC-20 Standard
Method to transfer tokens on behalf of the approved wallet
approve
ERC-20 Standard
Method to approve transfer as much as value to the spender
updateMiningIndex
Method to update the value of the pair contract based on the current Factory.mined() value
Anyone can call in real time. Even if no one calls it, it calls itself if necessary.
claimReward
Method 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.senderEven 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
When LP tokens are sent
When LP tokens are received
addETHLiquidityWithLimit
Method used to provide liquidity when token0 is MATIC
Liquidity of the MATIC
msg.valueand token1amountis provided.After liquidity is provided, the LP token corresponding to the pool share is minted in the
msg.senderwallet.If the pair ratio is wrong, as much liquidity as possible is supplied at the current pair ratio, and the remaining tokens are returned to
msg.sender.If there is claimable MESH when called, the claim proceeds to
msg.sender.
addTokenLiquidityWithLimit
Method used to provide liquidity when token0 is MATIC
Liquidity of the MATIC
msg.valueand token1amountis provided.Set the minimum amount of token0 and token1 to be used for liquidity supply using minAmount0, minAmount1.
After liquidity is provided, the LP token corresponding to the pool share is minted in the
msg.senderwallet.If the pair ratio is wrong, as much liquidity as possible is supplied at the current pair ratio, and the remaining tokens are returned to
msg.sender.If there is claimable MESH when called, the claim proceeds to
msg.sender.
removeLiquidityWithLimitETH
Returns the amount of LP tokens, and distributes the corresponding token0 and token1 to the msg.sender wallet
The returned LP token amount is burned
If there is claimable MESH when called, the claim proceeds to msg.sender.
removeLiquidityWithLimit
Returns the amount of LP tokens, and distributes the corresponding token0 and token1 to the msg.sender wallet
Set the minimum amount for the returned token0 and token1 amounts by using minAmount0, minAmount1.
The returned LP token amount is burned
If there is claimable MESH when called, the claim proceeds to
msg.sender.
Last updated