Pool
This section contains api reference of the pool contract
Off-chain get methods
get_pool_data
get_pool_data
Returns the current state of the pool: Jetton token reserves, Jetton wallet addresses and fee parameters.
Arguments
None
Result
Returns current state of the Pool
Result structure
Key | Type | Index | Description |
---|---|---|---|
|
| 0 | Amount of the first token (in basic token units) |
|
| 1 | Amount of the second token (in basic token units) |
|
| 2 | Address of the first Jetton token |
|
| 3 | Address of the second Jetton token |
|
| 4 | Liquidity pool fee value |
|
| 5 | Protocol fee |
|
| 6 | Referral fee |
|
| 7 | Address for receiving protocol fees |
|
| 8 | Amount of collected protocol fees of the first token (in basic token units) |
|
| 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
get_expected_outputs
Estimate expected result of the amount
of jettonWallet
tokens swapped to the other type of tokens of the pool.
Arguments
Name | Type | Description |
---|---|---|
|
| Amount of tokens to swap (in basic token units) |
|
| Token Jetton address (must be equal to one of the Jetton addresses of the pool) |
Result
Returns expected result of a token swap
Result structure
Key | Type | Index | Description |
---|---|---|---|
|
| 0 | Amount of tokens received (in basic token units) |
|
| 1 | Amount tokens paid for protocol fees (in basic token units) |
|
| 2 | Amount tokens paid for referral fees (in basic token units) |
get_expected_tokens
get_expected_tokens
Estimate an expected amount of lp tokens minted when providing liquidity.
Arguments
Key | Type | Description |
---|---|---|
|
| Amount of tokens for the first Jetton (in basic token units) |
|
| 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
get_expected_liquidity
Estimate expected liquidity freed upon burning liquidity tokens.
Arguments
Key | Type | Description |
---|---|---|
|
| Amount of liquidity tokens (in basic token units) |
Result
Returns expected freed liquidity
Return structure
Key | Type | Index | Description |
---|---|---|---|
|
| 0 | Amount of tokens for the first Jetton (in basic token units) |
|
| 1 | Amount of tokens for the second Jetton (in basic token units) |
get_lp_account_address
get_lp_account_address
Get the lp account address of a user
Arguments
Key | Type | Description |
---|---|---|
|
| Address of a user |
Result
Function the lp account address of a user
get_jetton_data
get_jetton_data
Standard jetton 'get' methods from TonWeb JettonMinter.
Arguments
None
Result
Returns a structure with Jetton data
Return structure
Key | Type | Index | Description |
---|---|---|---|
|
| 0 | Total token supply (in basic token units) |
|
| 1 | If new tokens can be minted |
|
| 2 | Admin address |
|
| 3 | Offchain uri with Jetton data |
|
| 4 | Code of the lp Jetton wallet |
get_wallet_address
get_wallet_address
Get lp wallet address of a user.
Arguments
Name | Type | Description |
---|---|---|
|
| Address of a user |
Result
Returns calculated lp wallet address of a user
On-chain queries
On-chain counterparts of getter methods.
Operations table
Name | Value | Description |
---|---|---|
| 0x43c034e6 | Sends a message with the current state of the pool |
| 0xed4d8b67 | Sends a message with an estimated result of the token swap |
| 0x9163a98a | Sends a message with the lp account address of a user |
| 0x9ce632c5 | Sends a message with an estimated amount of lp tokens minted when providing liquidity |
| 0x8751801f | Sends a message with estimated liquidity freed upon burning of liquidity tokens |
| 0x2c76b973 | Sends a message with the lp wallet address of a user |
getter_pool_data
(0x43c034e6)
getter_pool_data
(0x43c034e6)Sends a message with the current state of the pool. On-chain equivalent of get_pool_data
.
TL-B
Message body
None
Outgoing messages
Sends a message with current pool data to the sender_address
Response message body
Name | Type | Description |
---|---|---|
|
| Operation code is equal to |
|
| Query id |
|
| Amount of the first token (in basic token units) |
|
| Amount of the second token (in basic token units) |
|
| Address of the first Jetton token |
|
| Address of the second Jetton token |
|
| Cell with fee data |
ref_fee_data
body
ref_fee_data
bodyName | Type | Description |
---|---|---|
|
| Liquidity pool fee value |
|
| Protocol fee |
|
| Referral fee |
|
| Address for receiving protocol fees |
|
| Amount of collected protocol fees of the first token (in basic token units) |
|
| Amount of collected protocol fees of the second token (in basic token units) |
getter_expected_outputs
(0xed4d8b67)
getter_expected_outputs
(0xed4d8b67)Sends a message with an estimated result of the token swap. On-chain equivalent of get_expected_outputs
.
TL-B
Message body
Name | Type | Description |
---|---|---|
|
| Amount of tokens (in basic token units) |
|
| 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 |
---|---|---|
|
| Operation code is equal to |
|
| Query id |
|
| Amount of tokens to be received (in basic token units) |
|
| Amount tokens paid for protocol fees (in basic token units) |
|
| Amount tokens paid for referral fees (in basic token units) |
getter_lp_account_address
(0x9163a98a)
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
Message body
Name | Type | Description |
---|---|---|
|
| 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 |
---|---|---|
|
| Operation code is equal to |
|
| Query id |
|
| lp account address of a user |
Notes:
the current version of the contract returns a message with
getter_expected_outputs
op code instead ofgetter_lp_account_address
so the user must differentiate those messages with some other means
getter_expected_tokens
(0x9ce632c5)
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
Message body
Name | Type | Description |
---|---|---|
|
| User address (unused) |
|
| Amount of tokens for the first Jetton (in basic token units) |
|
| 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 |
---|---|---|
|
| Operation code is equal to |
|
| Query id |
|
| Expected amount of liquidity tokens (in basic token units) |
getter_expected_liquidity
(0x8751801f)
getter_expected_liquidity
(0x8751801f)Sends a message with estimated liquidity freed upon burning liquidity tokens. On-chain equivalent of get_expected_liquidity
.
TL-B
Message body
Name | Type | Description |
---|---|---|
|
| 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 |
---|---|---|
|
| Operation code is equal to |
|
| Query id |
|
| Amount of tokens for the first Jetton (in basic token units) |
|
| Amount of tokens for the second Jetton (in basic token units) |
provide_wallet_address
(0x2c76b973)
provide_wallet_address
(0x2c76b973)Sends a message with the lp wallet address of a user. On-chain equivalent of get_wallet_address
.
TL-B
Message body
Name | Type | Description |
---|---|---|
|
| Address of a user |
|
| 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 |
---|---|---|
|
| Operation code is equal to |
|
| Query id |
|
| Calculated lp wallet address |
|
| Cell with data if |
ref_address
body
ref_address
bodyName | Type | Description |
---|---|---|
|
| Address of a user |
Jetton handlers
Handles operations sent from a Jetton wallet.
Operations table
Name | Value | Description |
---|---|---|
| 0x7bdd97de | Sent by LP wallet after burning LP jettons to release liquidity |
burn_notification
(0x7bdd97de)
burn_notification
(0x7bdd97de)Sent by LP wallet after burning LP jettons to release liquidity.
TL-B
Message body
Name | Type | Description |
---|---|---|
|
| Amount of liquidity tokens to burn (in basic token units) |
|
| User 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 |
---|---|---|
| 0x25938561 | Swap tokens |
| 0xfcf9e58f | Provide liquidity |
| 0x42a0fb43 | Reset gas |
| 0x1fcb7d3d | Collect fees |
| 0x355423e5 | Set new fee parameters |
swap
(0x25938561)
swap
(0x25938561)Swap tokens. This message is received from the router when the user initiates a token swap.
TL-B
Message body
Name | Type | Description |
---|---|---|
|
| User address |
|
| Incoming Jetton wallet address |
|
| Amount of incoming tokens (in basic token units) |
|
| Minimum amount of received tokens (in basic token units) |
|
| If referral is present |
|
| Cell with data |
Notes:
swap will fail if a user should receive less than
min_out
of tokens as a result
ref_bodycell
body
ref_bodycell
bodyName | Type | Description |
---|---|---|
|
| Who initialized the swap |
|
| 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_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.
TL-B
Message body
Name | Type | Description |
---|---|---|
|
| User address |
|
| Minimum amount of received liquidity tokens (in basic token units) |
|
| Amount of the first Jetton token (in basic token units) |
|
| Amount of the second Jetton token (in basic token units) |
Outgoing messages
Sends a message to liquidity pool account with add_liquidity
operation code.
reset_gas
(0x42a0fb43)
reset_gas
(0x42a0fb43)Updates the amount of $TON (in nanoTons) on the pool to REQUIRED_TON_RESERVE
(10000000) of the pool. The remaining amount of $TON will be sent back to the router.
TL-B
Message body
None
Outgoing messages
Sends an empty message back to the router with the remaining $TON
collect_fees
(0x1fcb7d3d)
collect_fees
(0x1fcb7d3d)Collect protocol fees. The amount of fees in both tokens will be sent to protocol_fee_address
address.
TL-B
Message body
None
Outgoing messages
Sends a message with collected fees in both tokens to the router, which initiates pay_to
operation to protocol_fee_address
.
set_fees
(0x355423e5)
set_fees
(0x355423e5)Set new fee values including liquidity pool fees, protocol fees and referral fees as well as an address for receiving collected protocol fees.
TL-B
Message body
Name | Type | Description |
---|---|---|
|
| New liquidity pool fee ratio (multiplied by |
|
| New protocol fee ratio (multiplied by |
|
| New referral fee ratio (multiplied by |
|
| Address for receiving protocol fees |
Notes:
fee ratio is the value of fee divided by
FEE_DIVIDER
(10000); so to set a fee to 1% the value must be 100fees must be between
MIN_FEE
(0) andMAX_FEE
(100)
Outgoing messages
None
LP Account internal message handlers
Handles messages from an lp account.
Operations table
Name | Value | Description |
---|---|---|
| 0x56dfeb8a | Sent by user's lp_account after adding liquidity |
| 0x89446a42 | Sent by user's lp_account after adding liquidity |
cb_add_liquidity
(0x56dfeb8a)
cb_add_liquidity
(0x56dfeb8a)Add new liquidity to the pool. Sent by user's lp account after an appropriate amount (greater than 1000
) of both Jetton tokens is sent by a user. The resulting added liquidity must be greater than min_lp_out
for the operation to be successful.
TL-B
Message body
Name | Type | Description |
---|---|---|
|
| Amount of the first Jetton token (in basic token units) |
|
| Amount of the second Jetton token (in basic token units) |
|
| User address |
|
| Minimum amount of received liquidity tokens (in basic token units) |
Notes:
addition of liquidity will fail if a user should receive less than
min_lp_out
of lp tokens as a resultcannot add liquidity if a supply of either tokens becomes greater than
MAX_COINS
(2^120 - 1)
Outgoing messages
Sends a message with internal_transfer
(0x178d4519) op code to the lp wallet of user_address
with minted liquidity tokens; on initial liquidity addition tokens are minted to addr_none
cb_refund_me
(0x89446a42)
cb_refund_me
(0x89446a42)Sent by user's lp account after a user initiates refund_me
operation to cancel addition of new liquidity. The amount of previously stored tokens will be sent back to the user.
TL-B
Message body
Name | Type | Description |
---|---|---|
|
| Amount of the first Jetton token (in basic token units) |
|
| Amount of the second Jetton token (in basic token units) |
|
| User address |
Outgoing messages
Sends a message with tot_am0
of the first token and tot_am1
of the second token to the router, which initiates pay_to
operation
User message handlers
Handles direct messages from a user.
Operations table
Name | Value | Description |
---|---|---|
| 0x1fcb7d3d | Called by anyone; collect fees; the caller receives a bounty |
collect_fees
(0x1fcb7d3d)
collect_fees
(0x1fcb7d3d)Collect protocol fees which will be sent to protocol_fee_address
. A user which initiates this operation receives a bounty equal to 1/1000 of collected amount of both tokens.
TL-B
Message body
None
Outgoing messages
Sends a message with collected fees (minus the bounty) to protocol_fee_address
Sends a message with an amount of tokens to be received by a user as a bounty (equal to collected fees divided by 1000) to the router, which initiates pay_to
operation
Constants
Name | Value | Description |
---|---|---|
| 0 | Workchain id |
| 10000000 | Amount of $TON (in nanoTons) to be left on the pool contract as gas |
| 1000 | Minimum amount of liquidity required |
| 1000000 | Minimum amount of tokens (in basic token units) collected as fees |
| 2^120 - 1 | Maximum amount of tokens (in basic token units) stored as liquidity |
| 10000000 | Additional gas (in nanoTons) for providing a wallet |
| 10000 | Fee values are divided by this value |
| 0 | Minimum fee allowed |
| 100 | Maximum fee allowed |
Last updated