STON.fi
Search
K
Comment on page

Pool

This section contains op codes of the pool contract as well as corresponding SDK methods

Off-chain get methods

get_pool_data

Returns the current state of the pool: Jetton token reserves, Jetton wallet addresses and fee parameters.
FunC
TypeScript
(int, int, slice, slice, int, int, int, slice, int, int) get_pool_data() method_id;
async getData(): Promise<PoolData>

Arguments

None

Result

Returns PoolData structure containing current state of the pool.
PoolData structure
Key
Type
Index
Description
reserve0
BN
0
Amount of the first token (in basic token units)
reserve1
BN
1
Amount of the second token (in basic token units)
token0WalletAddress
Address
2
Address of the first Jetton token
token1WalletAddress
Address
3
Address of the second Jetton token
lpFee
BN
4
Liquidity pool fee value
protocolFee
BN
5
Protocol fee
refFee
BN
6
Referral fee
protocolFeeAddress
Address
7
Address for receiving protocol fees
collectedToken0ProtocolFee
BN
8
Amount of collected protocol fees of the first token (in basic token units)
collectedToken1ProtocolFee
BN
9
Amount of collected protocol fees of the second token (in basic token units)
Notes:
  • fee ratio is the value of fee divided by FEE_DIVIDER (10000); so a fee of 1% has a value of 100

get_expected_outputs

Estimate expected result of the amount of jettonWallet tokens swapped to the other type of tokens of the pool.
FunC
TypeScript
(int, int, int) get_expected_outputs(int amount, slice token_wallet) method_id;
async getExpectedOutputs(params: {
amount: AmountType;
jettonWallet: AddressType;
}): Promise<ExpectedOutputsData>

Arguments

Name
Type
Description
amount
AmountType
Amount of tokens to swap (in basic token units)
jettonWallet
AddressType
Token Jetton address (must be equal to one of the Jetton addresses of the pool)

Result

Returns ExpectedOutputsData structure with expected result of a token swap
ExpectedOutputsData structure
Key
Type
Index
Description
jettonToReceive
BN
0
Amount of tokens received (in basic token units)
protocolFeePaid
BN
1
Amount tokens paid for protocol fees (in basic token units)
refFeePaid
BN
2
Amount tokens paid for referral fees (in basic token units)

get_expected_tokens

Estimate an expected amount of lp tokens minted when providing liquidity.
FunC
TypeScript
(int) get_expected_tokens(int amount0, int amount1) method_id;
async getExpectedTokens(params: {
amount0: AmountType;
amount1: AmountType;
}): Promise<BN>

Arguments

Key
Type
Description
amount0
AmountType
Amount of tokens for the first Jetton (in basic token units)
amount1
AmountType
Amount of tokens for the second Jetton (in basic token units)

Result

Returns an estimated amount of liquidity tokens to be minted

get_expected_liquidity

Estimate expected liquidity freed upon burning liquidity tokens.
FunC
TypeScript
(int, int) get_expected_liquidity(int jetton_amount) method_id;
async getExpectedLiquidity(params: {
jettonAmount: AmountType;
}): Promise<PoolAmountsData>

Arguments

Key
Type
Description
jettonAmount
AmountType
Amount of liquidity tokens (in basic token units)

Result

Returns PoolAmountsData structure with expected freed liquidity
PoolAmountsData structure
Key
Type
Index
Description
amount0
BN
0
Amount of tokens for the first Jetton (in basic token units)
amount1
BN
1
Amount of tokens for the second Jetton (in basic token units)

get_lp_account_address

Get the lp account address of a user
FunC
TypeScript
slice get_lp_account_address(slice owner_address) method_id;
async getLpAccountAddress(params: {
ownerAddress: AddressType
}): Promise<Address | null>

Arguments

Key
Type
Description
ownerAddress
AddressType
Address of a user

Result

Function getLpAccountAddress returns the lp account address of a user

Additional functions

TypeScript
async getLpAccount(params: {
ownerAddress: AddressType
}): Promise<LpAccount | null>

Arguments

Key
Type
Description
ownerAddress
AddressType
Address of a user

Result

Function getLpAccount returns an LpAccount object for address returned by getLpAccountAddress

get_jetton_data

Standard jetton 'get' methods from TonWeb JettonMinter.
FunC
TypeScript
(int, int, slice, cell, cell) get_jetton_data() method_id;
async JettonMinter.getJettonData(): Promise<{
totalSupply: BN,
isMutable: boolean,
adminAddress: Address|null,
jettonContentUri: string|null,
jettonWalletCode: Cell
}>
This method is implemented in TonWeb

Arguments

None

Result

Returns a structure with Jetton data
Return structure
Key
Type
Index
Description
totalSupply
BN
0
Total token supply (in basic token units)
isMutable
boolean
1
If mutable
adminAddress
Address
2
Admin address
jettonContentUri
string
3
Offchain uri with Jetton data
jettonWalletCode
Cell
4
Code of the lp Jetton wallet

get_wallet_address

Get lp wallet address of a user.
FunC
TypeScript
slice get_wallet_address(slice owner_address) method_id;
async JettonMinter.getJettonWalletAddress(
ownerAddress: AddressType
): Promise<Address>
This method is implemented in TonWeb

Arguments

Name
Type
Description
ownerAddress
AddressType
Address of a user

Result

Function getJettonWalletAddress returns a calculated lp wallet address of a user

Additional functions

TypeScript
async getJettonWallet(params: {
ownerAddress: AddressType;
}): Promise<JettonWallet>
JettonWallet is implemented TonWeb.

Arguments

Key
Type
Description
ownerAddress
AddressType
Address of a user

Result

Function getJettonWallet returns a JettonWallet object for an address returned by getJettonWalletAddress

On-chain queries

On-chain counterparts of getter methods.

Operations table

Name
Value
Description
getter_pool_data
0x43c034e6
Sends a message with the current state of the pool
getter_expected_outputs
0xed4d8b67
Sends a message with an estimated result of the token swap
getter_lp_account_address
0x9163a98a
Sends a message with the lp account address of a user
getter_expected_tokens
0x9ce632c5
Sends a message with an estimated amount of lp tokens minted when providing liquidity
getter_expected_liquidity
0x8751801f
Sends a message with estimated liquidity freed upon burning of liquidity tokens
provide_wallet_address
0x2c76b973
Sends a message with the lp wallet address of a user

getter_pool_data (0x43c034e6)

Sends a message with the current state of the pool. On-chain equivalent of get_pool_data.

TL-B

getter_pool_data#43c034e6 query_id:uint64 = InternalMsgBody;

Message body

None

Outgoing messages

Sends a message with current pool data to the sender_address

Response message body

Name
Type
Description
op
uint32
Operation code is equal to getter_pool_data
query_id
uint64
Query id
storage::reserve0
coins
Amount of the first token (in basic token units)
storage::reserve1
coins
Amount of the second token (in basic token units)
storage::token0_address
address
Address of the first Jetton token
storage::token1_address
address
Address of the second Jetton token
ref_fee_data
cell
Cell with fee data

ref_fee_data body

Name
Type
Description
storage::lp_fee
uint8
Liquidity pool fee value
storage::protocol_fee
uint8
Protocol fee
storage::ref_fee
uint8
Referral fee
storage::protocol_fee_address
address
Address for receiving protocol fees
storage::collected_token0_protocol_fee
coins
Amount of collected protocol fees of the first token (in basic token units)
storage::collected_token1_protocol_fee
coins
Amount of collected protocol fees of the second token (in basic token units)

getter_expected_outputs (0xed4d8b67)

Sends a message with an estimated result of the token swap. On-chain equivalent of get_expected_outputs.

TL-B

getter_expected_outputs#ed4d8b67 query_id:uint64 amount:Grams token_wallet:MsgAddress = InternalMsgBody;

Message body

Name
Type
Description
amount
coins
Amount of tokens (in basic token units)
token_wallet
address
Token Jetton address

Outgoing messages

Sends a message with an estimated result of the token swap to sender_address

Response message body

Name
Type
Description
op
uint32
Operation code is equal to getter_expected_outputs
query_id
uint64
Query id
out
coins
Amount of tokens to be received (in basic token units)
protocol_fee_out
coins
Amount tokens paid for protocol fees (in basic token units)
ref_fee_out
coins
Amount tokens paid for referral fees (in basic token units)

getter_lp_account_address (0x9163a98a)

Sends a message with the lp account address of a user. On-chain equivalent of get_lp_account_address.

TL-B

getter_lp_account_address#9163a98a query_id:uint64 user_address:MsgAddress = InternalMsgBody;

Message body

Name
Type
Description
user_address
address
Address of a user

Outgoing messages

Sends a message with the lp account address of a user to sender_address

Response message body

Name
Type
Description
op
uint32
Operation code is equal to getter_expected_outputs
query_id
uint64
Query id
lp_account_address
address
lp account address of a user
Notes:
  • the current version of the contract returns a message with getter_expected_outputs op code instead of getter_lp_account_address so the user must differentiate those messages with some other means

getter_expected_tokens (0x9ce632c5)

Sends a message with an estimated amount of lp tokens minted when providing liquidity. On-chain equivalent of get_expected_tokens

TL-B

getter_expected_tokens#9ce632c5 query_id:uint64 user_address:MsgAddress amount0:Grams amount1:Grams = InternalMsgBody;

Message body

Name
Type
Description
user_address
address
User address (unused)
amount0
coins
Amount of tokens for the first Jetton (in basic token units)
amount1
coins
Amount of tokens for the second Jetton (in basic token units)

Outgoing messages

Sends a message with an estimated amount of liquidity tokens to be minted to sender_address

Response message body

Name
Type
Description
op
uint32
Operation code is equal to getter_expected_tokens
query_id
uint64
Query id
liquidity
coins
Expected amount of liquidity tokens (in basic token units)

getter_expected_liquidity (0x8751801f)

Sends a message with estimated liquidity freed upon burning liquidity tokens. On-chain equivalent of get_expected_liquidity.

TL-B

getter_expected_liquidity#8751801f query_id:uint64 jetton_amount:Grams = InternalMsgBody;

Message body

Name
Type
Description
jetton_amount
coins
Amount of liquidity tokens to burn (in basic token units)

Outgoing messages

Sends a message with estimated liquidity to sender_address

Response message body

Name
Type
Description
op
uint32
Operation code is equal to getter_expected_tokens
query_id
uint64
Query id
amount0_out
coins
Amount of tokens for the first Jetton (in basic token units)
amount1_out
coins
Amount of tokens for the second Jetton (in basic token units)

provide_wallet_address (0x2c76b973)

Sends a message with the lp wallet address of a user. On-chain equivalent of get_wallet_address.

TL-B

provide_wallet_address#2c76b973 query_id:uint64 owner_address:MsgAddress include_address?:Bool = InternalMsgBody;

Message body

Name
Type
Description
owner_address
address
Address of a user
include_address?
uint1
Include user address in the response message

Outgoing messages

Sends a message back to sender with the calculated lp wallet address of a user

Response message body

Name
Type
Description
op
uint32
Operation code is equal to take_wallet_address (0xd1735400)
query_id
uint64
Query id
lp_wallet_address
address
Calculated lp wallet address
ref_address
cell | null
Cell with data if include_address? evaluates to true

ref_address body

Name
Type
Description
included_address
address
Address of a user

Jetton handlers

Handles operations sent from a Jetton wallet.

Operations table

Name
Value
Description
burn_notification
0x7bdd97de
Sent by LP wallet after burning LP jettons to release liquidity

burn_notification (0x7bdd97de)

Sent by LP wallet after burning LP jettons to release liquidity.

TL-B

burn_notification#7bdd97de query_id:uint64 jetton_amount:Grams from_address:MsgAddress response_address:MsgAddress = InternalMsgBody;

Message body

Name
Type
Description
jetton_amount
coins
Amount of liquidity tokens to burn (in basic token units)
from_address
address
User address
response_address
address
Address for a response message

Outgoing messages

Sends a message with op excesses (0xd53276db) to response_address
Sends a message with a released amount of both tokens to be received by a user as a result of the burn operation to the router, which initiates pay_to operation to from_address

Router internal message handlers

Handles messages from the router.

Operations table

Name
Value
Description
swap
0x25938561
Swap tokens
provide_lp
0xfcf9e58f
Provide liquidity
reset_gas
0x42a0fb43
Reset gas
collect_fees
0x1fcb7d3d
Collect fees
set_fees
0x355423e5
Set new fee parameters

swap (0x25938561)

Swap tokens. This message is received from the router when the user initiates a token swap.

TL-B

ref_bodycell$_ from_real_user:MsgAddress ref_address:MsgAddress = RefBodyCell;
swap#25938561 query_id:uint64 from_user:MsgAddress token_wallet:MsgAddress amount:Grams min_out:Grams ref_bodycell:(Either RefBodyCell ^RefBodyCell) = InternalMsgBody;

Message body

Name
Type
Description
from_user_address
address
User address
token_wallet
address
Incoming Jetton wallet address
amount
coins
Amount of incoming tokens (in basic token units)
min_out
coins
Minimum amount of received tokens (in basic token units)
has_ref
uint1
If referral is present
ref_bodycell
cell
Cell with data
Notes:
  • swap will fail if a user should receive less than min_out of tokens as a result

ref_bodycell body

Name
Type
Description
from_real_user
address
Who initialized the swap
ref_address
address
Referral address; present only if has_ref is 1

Outgoing messages

Sends a message with an amount of the other tokens to be received by a user as a result of the swap to the router, which initiates pay_to operation
Additionally may send a message with referral fees to the router, which initiates pay_to operation to ref_address

provide_lp (0xfcf9e58f)

Provide liquidity for the pool. A user must submit an amount of both tokens to receive lp tokens and add new liquidity to a pool. This message is routed to liquidity pool account with add_liquidity operation code.