Megaton Finance
한국어
한국어
  • GETTING STARTED
    • 메가톤 파이낸스
    • TON 네트워크
    • 참여자
    • FAQ
  • products
    • WTON 게이트웨이
    • 스왑
    • 페어 예치
    • MEGA 스테이킹
      • 개요
      • 스테이킹
      • 멤버십 혜택
      • 언스테이킹
      • 중도 해지
      • NFT 거래
  • TOKENOMICS
    • MEGA
      • 토크노믹스(~2023년 8월 31일 12:00 KST)
      • 토크노믹스(현재)
      • 분배(2023년 8월 31일 12:00 KST)
      • 분배(현재)
  • Guides
    • 지갑 생성
    • 활용할 자산 입금하기
    • WTON 게이트웨이 사용하기
    • 오르빗 브릿지 기반 크로스체인 자산 전환하기
    • 자산 예치하기(페어 예치)
  • DEVELOPERS
    • Contract
      • MEGA
      • Router/Factory
      • Exchange
  • MORE
    • 리스크 & 보안
    • 컨트랙트 & 보안 감사
    • 지원 & 팀
  • OFFICIAL LINKS
    • Megaton Finance
    • WTON Gateway
    • Orbit Bridge
    • Discord
Powered by GitBook
On this page
  • Code
  • Read-Only Functions
  • Exchange Minter
  • Exchange Wallet
  1. DEVELOPERS
  2. Contract

Exchange

This is a smart contract to expand Jetton that is created with every liquidity pair. The Router deploys this as new pool creation is requested. Although the Router 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)

Read-Only Functions

Exchange Minter

get_jetton_data

(int, int, slice, cell, cell) get_jetton_data() method_id
  • int totalSupply

  • int mintable

  • slice admin_address

  • cell exchange_content

  • cell exchange_wallet_code

get_lp_swap_data

(int, int, slice, slice, slice, int, int, slice, slice, int, int) get_lp_swap_data() method_id
  • int swap_fee

  • int min_amount

  • slice router_address

  • slice jettonA_address

  • slice jettonA_wallet_address

  • int jettonA_balance

  • int jettonA_pending_balance

  • slice jettonB_address

  • slice jettonB_wallet_address

  • int jettonB_balance

  • int jettonB_pending_balance

get_lp_mining_data

(int, int, int, int, int, int, cell) get_lp_mining_data() method_id
  • int mining_amount

  • int datetime_amount

  • int minable_time

  • int half_life

  • int last_index

  • int last_mined

  • cell mining_rate_cell

get_lp_user_info_dict

(cell) get_lp_user_info_dict() method_id
  • cell ( dict ) total_user_info_dict

get_lp_user_info

(int, int, int, int) get_lp_user_info(slice user_address) method_id
  • int find

  • int balance

  • int user_reward_sum

  • int last_user_index

get_wallet_address

slice get_wallet_address(slice owner_address) method_id
  • slice user_wallet_address

How to build transaction

  • Add Liquidity

// 1. add liquidity tokenA
await sendInternalMessageWithWallet({
    walletContract,
    secretKey,
    to: userJettonAWalletAddress,
    value: toNano(0.7),
    body: beginCell()
        .storeUint(0xf8a7ea5, 32)
        .storeUint(query_id, 64)
        .storeCoins(jettonAAmount)
        .storeAddress(lpAddress)
        .storeAddress(responseAddress)
        .storeDict(beginCell().endCell())
        .storeCoins(toNano(0.5))
        .storeDict(beginCell()
            .storeCoins(minAmountForJettonA)
            .storeCoins(minAmountForJettonB)
        .endCell())
    .endCell()
});

// 2. add liquidity tokenB
await sendInternalMessageWithWallet({
    walletContract,
    secretKey,
    to: userJettonBWalletAddress,
    value: toNano(0.7),
    body: beginCell()
        .storeUint(0xf8a7ea5, 32)
        .storeUint(query_id, 64)
        .storeCoins(jettonBAmount)
        .storeAddress(lpAddress)
        .storeAddress(responseAddress)
        .storeDict(beginCell().endCell())
        .storeCoins(toNano(0.5))
        .storeDict(beginCell()
            .storeCoins(minAmountForJettonA)
            .storeCoins(minAmountForJettonB)
        .endCell())
    .endCell()
});
  • Remove Liquidity

await sendInternalMessageWithWallet({
    walletContract,
    secretKey,
    to: lpAddress,
    value: toNano(0.35),
    body: beginCell()
        .storeUint(0x595f07bc, 32)
        .storeUint(query_id, 64)
        .storeCoins(lpAmount)
        .storeDict(beginCell()
            .storeCoins(minAmountForJettonA)
            .storeCoins(minAmountForJettonB)
        .endCell())
    .endCell()
});
  • Claim

await sendInternalMessageWithWallet({
    walletContract,
    secretKey,
    to: lpAddress,
    value: toNano(0.15),
    body: beginCell()
        .storeUint(0x6b14cfe1, 32)
        .storeUint(query_id, 64)
    .endCell()
});

Exchange Wallet

get_wallet_data

(int, slice, slice, cell) get_wallet_data() method_id
  • int balance

  • slice owner_address

  • slice lp_minter_address

  • cell lp_wallet_code

get_wallet_extra_data

(int, int, slice, slice) get_wallet_extra_data() method_id
  • int jettonA_pending_balance

  • int jettonB_pending_balance

  • slice jettonA_address

  • slice jettonB_address

PreviousRouter/FactoryNext리스크 & 보안

Last updated 1 year ago