KLAYswap
Search…
Exchange
This is a smart contract to expand KIP7 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 adress after production is deployed (scope link)

Events, Read-Only Functions, and State-Changing Functions

Events
Read-Only Functions
State-Changing Functions

Events

Transfer

1
event Transfer(address indexed from, address indexed to, uint amount);
Copied!
    KIP7 Standard
    Event log of Transfer/Mint/Burn

Approval

1
event Approval(address indexed holder, address indexed spender, uint amount);
Copied!
    KIP7 Standard
    Event log of Approvals

ChangeMiningRate

1
event ChangeMiningRate(uint _mining);
Copied!
    Event log of mining rate change

ChangeFee

1
event ChangeFee(uint _fee);
Copied!
    Event log of trading fee rate changes

UpdateMiningIndex

1
event UpdateMiningIndex(uint lastMined, uint miningIndex);
Copied!
    Event log of pairs’ mining index changes
    lastMined : Factory.mined() value at the time index is updated
    miningIndex : pairs’ miningIndex value at the time

GiveReward

1
event GiveReward(address user, uint amount, uint lastIndex, uint rewardSum);
Copied!
    Event log of when mined KSP is claimed and distributed
    user : address of the user who claimed
    amount : the amount of KSP claimed
    lastIndex : index result of the pair of the wallet after claiming
    rewardSum : The amount of KSP that has been accrued so far

ExchangePos

1
event ExchangePos(address tokenA, uint amountA, address tokenB, uint amountB);
Copied!
    Event log of POS transactions
    tokenA : Token address delivered by the user
    amountA : the amount of tokens delivered by the user
    tokenB : token address received by user
    amountB : the amount of tokens received by the user

ExchangeNeg

1
event ExchangeNeg(address tokenA, uint amountA, address tokenB, uint amountB);
Copied!
    Event log of NEG transactions
    tokenA : token address delivered by the user
    amountA : the amount of tokens delivered by the user
    tokenB : token address received by the user
    amountB : the amount of tokens received by the user

AddLiquidity

1
event AddLiquidity(address user, address tokenA, uint amountA, address tokenB, uint amountB, uint liquidity);
Copied!
    Event log of liquidity additions
    liquidity : the amount of LP tokens minted due to additional liquidity

RemoveLiquidity

1
event RemoveLiquidity(address user, address tokenA, uint amountA, address tokenB, uint amountB, uint liquidity);
Copied!
    Event log of liquidity removals
    liquidity : the amount of LP tokens burned due to liquidity removal

Read-Only Functions

name

    KlaySwap LP

symbol

    "KSLP" + " " + symbolA + "-" + symbolB

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

tokenA

    The first token address composed of the pair
    When KLAY is one part of the pair, tokenA == 0x0

tokenB

    The second token address composed of the pair

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 KSP quantity value for each user

getCurrentPool

1
function getCurrentPool() public view returns (uint, uint)
Copied!
    Returns the liquidity quantity of the two assets in the current pool

estimatePos

1
function estimatePos(address token, uint amount) public view returns (uint)
Copied!
    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

1
function estimateNeg(address token, uint amount) public view returns (uint)
Copied!
    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

1
function transfer(address _to, uint _value) public returns (bool)
Copied!
    KIP7 표준
    Method for KSP token transfer

transferFrom

1
function transferFrom(address _from, address _to, uint _value) public returns (bool)
Copied!
    KIP7 Standard
    Method to transfer tokens on behalf of the approved wallet

approve

1
function approve(address _spender, uint _value) public returns (bool)
Copied!
    KIP7 Standard
    Method to approve transfer as much as value to the spender

updateMiningIndex

1
function updateMiningIndex() public
Copied!
    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

1
function claimReward() public
Copied!
    Method that a user calls to claim the claimable KSP that has accumulated for the pair
    When called, KSP 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
      When LP tokens are sent
      When LP tokens are received

addKlayLiquidity

1
function addKlayLiquidity(uint amount) public payable
Copied!
    Method used to provide liquidity when tokenA is KLAY
    Liquidity of the KLAY msg.value and tokenB amount is provided.
    After liquidity is provided, the LP token corresponding to the pool share is minted in the msg.sender wallet.
    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 KSP when called, the claim proceeds to msg.sender.
addKlayLiquidityWithLimit
1
function addKlayLiquidityWithLimit(uint amount, uint minAmountA, uint minAmountB) public payable
Copied!
    Method used to provide liquidity when tokenA is KLAY
    Liquidity of the KLAY msg.value and tokenB amount is provided.
    Set the minimum amount of tokenA and tokenB to be used for liquidity supply using minAmountA, minAmountB.
    After liquidity is provided, the LP token corresponding to the pool share is minted in the msg.sender wallet.
    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 KSP when called, the claim proceeds to msg.sender.

addKctLiquidity

1
function addKctLiquidity(uint amountA, uint amountB) public
Copied!
    Method used to provide liquidity when tokenA is KIP7 standard token
    Liquidity of the number of tokenA amountA and tokenB amountB is provided.
    After liquidity is provided, the LP token corresponding to the pool share is minted in the msg.sender wallet.
    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 KSP when called, the claim proceeds to msg.sender.
addKctLiquidityWithLimit
1
function addKctLiquidityWithLimit(uint amountA, uint amountB, uint minAmountA, uint minAmountB) public
Copied!
    Method used to provide liquidity when tokenA is KIP7 standard token
    Liquidity of the number of tokenA amountA and tokenB amountB is provided.
    Set the minimum amount of tokenA and tokenB to be used for liquidity supply using minAmountA, minAmountB.
    After liquidity is provided, the LP token corresponding to the pool share is minted in the msg.sender wallet.
    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 KSP when called, the claim proceeds to msg.sender.

removeLiquidity

1
function removeLiquidity(uint amount) public
Copied!
    Returns the amount of LP tokens, and distributes the corresponding tokenA and tokenB to the msg.sender wallet
    The returned LP token amount is burned
    If there is claimable KSP when called, the claim proceeds to msg.sender.
removeLiquidityWithLimit
1
function removeLiquidityWithLimit(uint amount, uint minAmountA, uint minAmountB) public
Copied!
    Returns the amount of LP tokens, and distributes the corresponding tokenA and tokenB to the msg.sender wallet
    Set the minimum amount for the returned tokenA and tokenB amounts by using minAmountA, minAmountB.
    The returned LP token amount is burned
    If there is claimable KSP when called, the claim proceeds to msg.sender.
Last modified 4mo ago