KLAYswap
English
English
  • Introduction
  • Protocol Overview
  • Core Concept
  • KLAYswap Advantages
  • Risk & Security
  • Privacy Policy
  • Audit
  • TOKENOMICS
    • KSP
      • KSP TOKENOMICS
      • Automation of KSP distribution rate
        • Voting policy on passing governance
        • KSP distribution ratio reflection policy
      • KSP Allocation
  • PRODUCT
    • SWAP
    • Single-side Deposit
      • Detailed policy of Single Deposit
    • Pair Deposit
    • V3 Pair Deposit
      • V2 to V3 Migration
        • V2 to V3 Migration Guide
        • V2 to V3 Migration Policy
      • V3 Pair Deposit
        • V3 Deposit Guide
        • V3 pair Deposit Policy
      • V3 to V3 Migration
        • V3 to V3 Migration Guide
        • V3 to V3 Migration Policy
      • V3 Pair Withdraw
        • V3 Withdraw Guide
        • V3 Withdraw Policy
    • Plus Deposit
      • Detailed policy of Plus Deposit
    • Long/Short Position Deposit
      • Open and Close Long/Short Positions
        • Open Short Positions
        • Open Long Positions
        • Remove Long Position
        • Remove Short Position
      • Position Deposit Details Policy
    • KSP Staking & Voting
      • Staking, Pool Voting Policy
    • Governance
      • Governance Voting Policy
    • Drops
    • Ecopot
    • Pool Airdrop
    • APR & APY
      • TVL
      • Pool
      • Staking
    • Interest rate
  • DEVELOPERS
    • Contract
      • Factory
      • Exchange
      • PoolVoting
      • VotingKSP
      • Treasury
      • Distribution
      • Governor
      • SinglePool
      • SinglePool Factory
      • PlusPool
      • PlusPool Factory
      • Store
      • Utils
      • Single/Plus Utils
      • Helper
      • EcoPotVoting
      • EcoPot
      • V3
        • V3Factory
        • V3Pool
        • NonfungiblePositionManager
        • NonfungibleTokenPositionDescriptor
        • V3SwapRouter
        • V3Migrator
        • V3Estimator
        • PositionMigrator
        • V3Treasury
        • V3AirdropOperator
        • UniversalRouter
    • Airdrop
      • Set Airdrop Operator
      • Start Airdrop
    • EcoPot
      • Set EcoPot
      • Start EcoPot
  • HOW-TO GUIDES
    • KLAYswap Guide
    • How to add liquidity on KLAYswap
    • [Burrito Wallet] How to deposit assets using mobile devices?
    • How to create a liquidity pool on KLAYswap
    • How to stake and vote on KLAYswap
    • How to deposit assets
      • Deposit Klaytn-based assets
      • Deposit Ethereum-based assets
      • Deposit XRP
    • FAQ
  • KLAYswap
  • Orbit Bridge
  • KLAYswap git
  • Orbit Bridge git
  • KLAYswap audit report
Powered by GitBook
On this page
  • Code
  • Address
  • Events, Read-Only Functions, and State-Changing Functions

Was this helpful?

  1. DEVELOPERS
  2. Contract

Factory

PreviousContractNextExchange

Last updated 2 years ago

Was this helpful?

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

  • Cypress :

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 Event

Approval

event Approval(address indexed holder, address indexed spender, uint amount);
  • Event for KSP token approval

  • A Event

ChangeCreateFee

event ChangeCreateFee(uint _createFee);
  • An event to change the Pool Contract Creation Fee when adding a new liquidity pool pair

ChangeTeamWallet

event ChangeTeamWallet(address _teamWallet);
  • Event to change the development team wallet

ClaimTeamAward

event ClaimTeamAward(uint award, uint totalAward);
  • Event to claim the development and stabilization commission

ChangeNextOwner

event ChangeNextOwner(address nextOwner);
  • Event to pre-register new owner

  • owner will be governance smart contract (In Intial period before KSP distributed, DEV team have owner permission)

ChangeOwner

event ChangeOwner(address owner);
  • Event that completes changing the owner

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 pair

    • amountA : A token amount in pool

    • tokenB : B token address in pair

    • amountB : B token amount in pool

    • fee : pool fee rate

    • exchange : exchange contract address of this pool

    • exid : exchange id

ExchangePos

event ExchangePos(address tokenA, uint amountA, address tokenB, uint amountB);
  • Positive exchange Event

  • parameters

    • tokenA : User input tokenA address

    • amountA : User input tokenA amount

    • tokenB : User get tokenB address

    • amountB : User get tokenB amount

ExchangeNeg

event ExchangeNeg(address tokenA, uint amountA, address tokenB, uint amountB);
  • Negative exchange Event

  • parameters

    • tokenA : User input tokenA address

    • amountA : User input tokenA amount

    • tokenB : User get tokenB address

    • amountB : User get tokenB amountB

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

nextOwner

  • The next Governance Contract Address set in advance.

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

  • The contract address corresponding to the tokenA, tokenB pair

  • 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 payment

    • inAmount : amount of tokens for payment

    • outToken : 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 payment

    • outToken : token address for receiving

    • outAmount : 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

changeNextOwner

function changeNextOwner(address _nextOwner) public
  • Method to set the next Owner in advance before changing Owner

  • only owner

changeOwner

function changeOwner() public
  • Method for the next Owner to change the actual Owner

  • only nextOwner

changeCreateFee

function changeCreateFee(uint _createFee) public
  • Method that changes KSP fees when liquidity pairs are added

  • only Owner

changeTeamWallet

function changeTeamWallet(address _teamWallet) public
  • Method to change the developer wallet

  • only owner

changePoolFee

function changePoolFee(address tokenA, address tokenB, uint fee) public
  • Method to change transaction fees for each liquidity pair

  • only owner

changeMiningRate

function changeMiningRate(address[] memory tokenA, address[] memory tokenB, uint[] memory rate) public
  • Method 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 pair

    • tokenB : list of addresses of the second token pair

    • rate : list of mining rate for a pair

claimTeamAward

function claimTeamAward() public
  • Method to claim the accrued quantity that the developer has

  • only teamWallet

createKlayPool

function createKlayPool(address token, uint amount, uint fee) public payable
  • A 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 liquidity

    • amount : the amount of tokens (KIP7) to be provided for the initial liquidity

    • fee : Sets the initial fee value for liquidity pairs

      • A value between 0 and 100

      • Meaning: 0 -> 0%, 100 -> 1%

    • msg.value : KLAY quantity to initially supply liquidity

      • Delivers the transaction value without specifying otherwise

createKctPool

function createKctPool(address tokenA, uint amountA, address tokenB, uint amountB, uint fee) public
  • Method called to add liquidity pair in case of KIP7 token pair

  • The wallet calling the KSP above createFee must have it.

  • parameter

    • tokenA : The address of the first token

    • amountA : The quantity of the first token that supplies the initial liquidity

    • tokenB : The address of the second token

    • amountB : The quantity of the second token that supplies the initial liquidity

    • fee : Sets the initial fee value for liquidity pairs

exchangeKlayPos

function exchangeKlayPos(address token, uint amount, address[] memory path) public payable
  • Method to call when token to be paid is KLAY and a POS transaction is desired

  • Parameters

    • token : Address of the KIP7 to be recieved

    • amount : the minimum amount tokens that you want to receive

      • If 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 transactions

      • If 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) public
  • Method called when the token to be paid is KIP7 and a POS transaction is desired

  • Parameters

    • tokenA : address of token to be paid

    • amountA : the amount of tokens to be paid

    • tokenB : address of token to be received

      • When KLAY, it is 0x0

    • amountB : the minimum amount of tokens that you want to receive

      • If 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 transactions

      • If routing transaction is not needed, submit empty list

exchangeKlayNeg

function exchangeKlayNeg(address token, uint amount, address[] memory path) public payable
  • Method for executing a NEG transaction by paying KLAY

  • Parameters

    • token : address of tokens to be received

    • amount : quantity of tokens to be received

    • path : list of token addresses to go through for routing transactions

      • If routing transaction is not needed, submit empty list

    • msg.value : maximum amount of payable KLAY

      • If 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) public
  • Method for executing NEG transaction by paying KIP7

  • Parameters

    • tokenA : address of token to be paid

    • amountA : the maximum amount of tokenA that can be paid

      • If more tokenA than the corresponding amount is needed, the Tx will fail.

    • tokenB : address of the token to be received

      • For KLAY: 0x0

    • amountB : the amount of tokens to be received

    • path : list of token addresses to go through for routing transactions

      • If routing transaction is not needed, submit empty list

0xc6a2ad8cc6e4a7e08fc37cc5954be07d499e7654
KIP7 Standard
KIP7 Standard