bemo liquid staking
  • 👋Welcome to bemo
    • Introduction
    • What is liquid staking?
      • TON staking
      • Staking limitations
      • Liquid staking
      • bemo benefits
    • How bemo works
      • Staking
      • Validation
      • Unstaking
    • bmTON
      • bmTON explained
      • bmTON pricing
    • stTON
      • stTON explained
      • stTON pricing
  • 💻DEVELOPERS
    • bemo v1 (deprecated)
      • Stake
      • Unstake
      • Tracking unstake requests
      • How to get TON-stTON rate
    • bemo v2
      • Stake
      • Unstake
      • Tracking unstake requests
      • How to get TON-bmTON rate
  • 🚀Get Started
    • How to stake TON
    • FAQ
    • Ambassador Program
  • 🏦Tokenomics
    • Incentive Rewards Program
    • stXP
      • stXP FAQ
    • BMO Token
  • Legal
    • Disclaimer
    • Terms of Use
    • Privacy policy
  • 🆘Support
Powered by GitBook
On this page
  1. DEVELOPERS
  2. bemo v2

How to get TON-bmTON rate

There are two ways to obtain TON-bmTON rate: on-chain and off-chain

The fundamental TON-bmTON rate is calculated using the formula:

bmTON rate = ton_total_supply / jetton_total_supply

On-chain:

To fetch ton_total_supply and jetton_total_supply on-chain, send a message to the Financial contract with the following TL-B layout:

// TL-B:
provide_current_quote#ad83913f 
query_id:uint64 
custom_payload:(Maybe ^Cell) 
= InternalMsgBody;

The Financial contract will respond with:

// TL-B
take_current_quote#0a420458 
query_id:uint64 
ton_total_supply:uint128 
jetton_total_supply:uint128 
custom_payload:(Maybe ^Cell) 
= InternalMsgBody;

Off-chain:

To retrieve ton_total_supply and jetton_total_supply you need to invoke 'get_full_data' method in Financial contract:

// TL-B:
get_full_data#_ = (
    jetton_total_supply:Coins 
    ton_total_supply:Coins 
    commission_total_supply:Coins
    commission_factor:uint16
    commission_address:MsgAddressInt
    admin_address:MsgAddressInt
    transaction_address:MsgAddressInt
    content:^Cell
    jetton_wallet_code:^Cell
    unstake_request_code:^Cell
    last_lockup_epoch:uint32
    lockup_supply:Coins
    next_lockup_supply:Coins
    later_lockup_supply:Coins
    next_unstake_request_index:uint64
)

See the screenshot:

These two values 0x2524443fb29fa1 and 0x275f0f797cee6d are hexadecimal representations of jetton_total_supply and ton_total_supply . To convert them to decimal and compute the bmTON price, you can use the following code in Python:

jetton_total_supply = int("0x2524443fb29fa1", 16)
ton_total_supply = int("0x275f0f797cee6d", 16)

Here is an example in Python:

from pytoniq import LiteClient

async with LiteClient.from_mainnet_config(trust_level=2) as client:
   result = await client.run_get_method(
       address="EQCSxGZPHqa3TtnODgMan8CEM0jf6HpY-uon_NMeFgjKqkEY",
       method="get_full_data",
       stack=[],
   )
bmton_price_in_ton = result[1]/result[0]                                     
PreviousTracking unstake requestsNextHow to stake TON

Last updated 22 days ago

💻
https://tonviewer.com/EQCSxGZPHqa3TtnODgMan8CEM0jf6HpY-uon_NMeFgjKqkEY?section=method