Factory
The Factory smart contract oversees the full functionality of token pair registration and transactions in KLAYswap. It is also a token contract for KLAYswap's KSP governance token that complies with the KIP7 standard, and a smart contract that implements all functions related to KSP mining.
Code
Github Link: (Will be updated after official launch)
Address
Events, Read-Only Functions, and State-Changing Functions
Events
Transfer
event Transfer(address indexed from, address indexed to, uint amount);Event for the movement and burning of KSP tokens
A KIP7 Standard Event
Approval
event Approval(address indexed holder, address indexed spender, uint amount);Event for KSP token approval
A KIP7 Standard Event
ChangeCreateFee
event ChangeCreateFee(uint _createFee);An event to change the Pool Contract Creation Fee when adding a new liquidity pool pair
CreatePool
event CreatePool(address tokenA, uint amountA, address tokenB, uint amountB, uint fee, address exchange, uint exid);Event to create new liquidity pool
parameters
tokenA: A token address in pairamountA: A token amount in pooltokenB: B token address in pairamountB: B token amount in poolfee: pool fee rate exchange :exchange: contract address of this poolexid: exchange id
ExchangePos
event ExchangePos(address tokenA, uint amountA, address tokenB, uint amountB);Positive exchange Event
parameters
tokenA: User input tokenA addressamountA: User input tokenA amounttokenB: User get tokenB addressamountB: User get tokenB amount
ExchangeNeg
event ExchangePos(address tokenA, uint amountA, address tokenB, uint amountB);Positive exchange Event
parameters
tokenA: User input tokenA addressamountA: User input tokenA amounttokenB: User get tokenB addressamountB: User get tokenB amount
Read-Only Functions
name
KlaySwap Protocol
symbol
KSP
decimals
18
totalSupply
126144000000000000000000000 = 126144000 KSP
There is only one case in which the total supply can be changed:
A decrease due to fee payments for adding new liquidity pairs
balanceOf
The amount of KSP held in each address
allowance
Status of approval to spender for each address
owner
Governance Contract Address
miningAmount
The total mining amount
This cannot be changed after a contract is deployed
halfLife
The block unit that proceeds with halving
This cannot be changed after a contract is deployed
minableBlock
The block number that starts mining
unfreezeBlock
The block number that makes KSP token transfers possible
teamRatio
The ratio of the mined amount given to the developement team for the first two years.
pools
List of liquidity pool pairings
Each item saves the smart contract address of the liquidity pool
poolExist
Returns if the contract for the given liquidiy pool pair exists
tokenToPool
When the addresses of tokenA and tokenB are inputted, this returns the contract address of the corresponding pairing
Returns the same contract address regardless of the order of the liquidity pool pairing tokens:
tokenToPool[tokenA][tokenB] == tokenToPool[tokenB][tokenA]
createFee
The amount of KSP that must be paired to create a new liquidity pool pair
teamWallet
The address to which the development team can claim their reward
teamAward
The team reward amount that has already been claimed
mined
function mined() public view returns (uint) Returns the KSP amount mined so far
This amount includes the quantity already claimed and the quantity to be claimed
The teamAward quantity is exempted from this amount
estimatePos
function estimatePos(address inToken, uint inAmount, address outToken) private view returns (uint)Returns the possible quantity received for a POS transaction.
Parameters
inToken: token address for paymentinAmount: amount of tokens for paymentoutToken: token address for receiving
estimateNeg
function estimateNeg(address inToken, address outToken, uint outAmount) private view returns (uint)Function to return the amount of tokens that need to be paid for a NEG transaction.
Parameters
inToken: token address for paymentoutToken: token address for receivingoutAmount: amount of tokens to receive
getPoolCount
function getPoolCount() public view returns (uint)Returns the current number of registered liquidity pools.
getPoolAddress
function getPoolAddress(uint idx) public view returns (address)Returns the liquidity pair contract address of the pair's index.
State-Changing Functions
transfer
function transfer(address _to, uint _value) public returns (bool)KIP7 Standard
Method to transfer KSP tokens
transferFrom
function transferFrom(address _from, address _to, uint _value) public returns (bool)KIP7 Standard
Method to transfer tokens on behalf of the approved wallet
approve
function approve(address _spender, uint _value) public returns (bool)KIP7 Standard
Method to approve a transfer as much as value to spender
burn
function burn(uint amount) publicKIP7 Standard
Method to burn as much as value to spender
changePoolFee
function changePoolFee(address tokenA, address tokenB, uint fee) publicMethod to change transaction fees for each liquidity pair
only owner
changeMiningRate
function changeMiningRate(address[] memory tokenA, address[] memory tokenB, uint[] memory rate) publicMethod to change the mining weight per liquidity pair
All pairs for mining must be changed at once
The rate of each pair is between 1 and 100
The sum of rates for all pairs is 100
only owner
Parameters
tokenA: list of addresses of the first token pairtokenB: list of addresses of the second token pairrate: list of mining rate for a pair
createKlayPool
function createKlayPool(address token, uint amount, uint fee) public payableA method called to add a liquidity pair with one side as KLAY
The wallet that calls this must have KSP greater than or equal to createFee
Token for when the KLAY-KIP7 pair to be registered has never been registered before
Parameters
token: KIP7 token address to add liquidityamount: the amount of tokens (KIP7) to be provided for the initial liquidityfee: Sets the initial fee value for liquidity pairsA value between 30 and 100
Meaning: 30 -> 0.3%, 100 -> 1%
msg.value: KLAY quantity to initially supply liquidityDelivers the transaction value without specifying otherwise
createKctPool
function createKctPool(address tokenA, uint amountA, address tokenB, uint amountB, uint fee) public양쪽 다 KIP7인 경우의 유동성 페어 추가를 위해 호출하는 method
createFee 이상의 KSP를 호출하는 지갑이 보유하고 있어야 함
등록하려는 KIP7-KIP7 페어가 한번도 등록되지 않은 토큰 페어여야 함
parameter
tokenA: The address of the first tokenamountA: The quantity of the first token that supplies the initial liquiditytokenB: The address of the second tokenamountB: The quantity of the second token that supplies the initial liquidityfee: Sets the initial fee value for liquidity pairs
exchangeKlayPos
function exchangeKlayPos(address token, uint amount, address[] memory path) public payableMethod to call when token to be paid is KLAY and a POS transaction is desired
Parameters
token: Address of the KIP7 to be recievedamount: the minimum amount tokens that you want to receiveIf the amount of tokens to be received is lower than this amount, the Tx will fail.
path: list of token addresses to go through for routing transactionsIf routing transaction is not needed, submit empty list
msg.value: KLAY quantity to be paid
exchangeKctPos
function exchangeKctPos(address tokenA, uint amountA, address tokenB, uint amountB, address[] memory path) publicMethod called when the token to be paid is KIP7 and a POS transaction is desired
Parameters
tokenA: address of token to be paidamountA: the amount of tokens to be paidtokenB: address of token to be receivedWhen KLAY, it is 0x0
amountB: the minimum amount of tokens that you want to receiveIf the amount of tokens to be received is lower than this amount, the Tx will fail.
path:list of token addresses to go through for routing transactionsIf routing transaction is not needed, submit empty list
exchangeKlayNeg
function exchangeKlayNeg(address token, uint amount, address[] memory path) public payableMethod for executing a NEG transaction by paying KLAY
Parameters
token: address of tokens to be receivedamount: quantity of tokens to be receivedpath: list of token addresses to go through for routing transactionsIf routing transaction is not needed, submit empty list
msg.value: maximum amount of payable KLAYIf more KLAY than the corresponding quantity needs to be paid, theTx will fail
the difference with KLAY used in the actual transaction is returned to msg.sender
exchangeKctNeg
function exchangeKctNeg(address tokenA, uint amountA, address tokenB, uint amountB, address[] memory path) publicMethod for executing NEG transaction by paying KIP7
Parameters
tokenA: address of token to be paidamountA: the maximum amount of tokenA that can be paidIf more tokenA than the corresponding amount is needed, the Tx will fail.
tokenB: address of the token to be receivedFor KLAY: 0x0
amountB: the amount of tokens to be receivedpath: list of token addresses to go through for routing transactionsIf routing transaction is not needed, submit empty list
Last updated