Pool (v2)

Contrato inteligente Pool v2 de STON.fi: pools AMM mejorados con mecánica de vault y optimización

Métodos get fuera de la cadena

get_pool_data

Devuelve el estado actual de la Pool

_ get_pool_data() method_id;

Argumentos

Ninguno

Resultado (común)

Devuelve PoolData estructura que contiene el estado actual del pool. Los pools tipados pueden devolver argumentos adicionales si están presentes

PoolData estructura

Clave
Tipo
Índice
Descripción

is_locked

bool

0

true si transfer_notification las operaciones están bloqueadas (swap, provide_lp)

router_address

dirección

1

Dirección de la Enrutador

total_supply

coins

2

Suministro total de tokens LP

reserve0

coins

3

Cantidad del primer token (en unidades básicas del token)

reserve1

coins

4

Cantidad del segundo token (en unidades básicas del token)

token0_wallet_address

dirección

5

Dirección del primer token Jetton

token1_wallet_address

dirección

6

Dirección del segundo token Jetton

lp_fee

uint16

7

Valor de la comisión del pool de liquidez

protocol_fee

uint16

8

Comisión del protocolo

protocol_fee_address

dirección

9

Dirección para recibir las comisiones del protocolo

collected_token0_protocol_fee

coins

10

Cantidad de comisiones de protocolo acumuladas del primer token (en unidades básicas del token)

collected_token1_protocol_fee

coins

11

Cantidad de comisiones de protocolo acumuladas del segundo token (en unidades básicas del token)

Notas:

  • la proporción de la comisión es el valor de la comisión dividido por params::fee_divider (10000); por lo tanto, una comisión del 1% tiene un valor de 100

Resultado (stableswap)

Datos adicionales en PoolData estructura específica para pools stableswap

PoolData estructura de parámetros adicionales

Clave
Tipo
Índice
Descripción

amp

uint32

12

Parámetro de amplificación de Stableswap

Resultado (weighted_stableswap)

Datos adicionales en PoolData estructura específica para pools weighted stableswap

PoolData estructura de parámetros adicionales

Clave
Tipo
Índice
Descripción

amp

uint128

12

Parámetro de amplificación de weighted stableswap

rate

uint128

13

Parámetro de relación de tokens estables

w0

uint128

14

Parámetro de peso del token 0

rate_setter

dirección

15

Dirección con derechos para cambiar rate

Resultado (weighted_const_product)

Datos adicionales en PoolData estructura específica para pools weighted constant product

PoolData estructura de parámetros adicionales

Clave
Tipo
Índice
Descripción

w0

uint128

12

Parámetro de peso del token 0

get_lp_account_address

Obtiene la dirección de la cuenta LP de un usuario

Argumentos

Clave
Tipo
Descripción

owner_address

dirección

Dirección de un usuario

Resultado

Devuelve la dirección de la cuenta LP de un usuario

get_jetton_data

Métodos estándar 'get' de jetton de TonWeb JettonMinter.

Argumentos

Ninguno

Resultado

Devuelve una estructura con los datos de Jetton

JettonData estructura

Clave
Tipo
Índice
Descripción

total_supply

coins

0

Suministro total de tokens del LP (en unidades básicas del token)

mintable

bool

1

siempre true

admin_address

dirección

2

Enrutador dirección

jetton_content_uri

string

3

URI fuera de la cadena con datos de Jetton

jetton_wallet_code

cell

4

Código de la billetera Jetton LP

get_wallet_address

Obtiene la dirección de la wallet LP de un usuario.

Argumentos

Nombre
Tipo
Descripción

owner_address

dirección

Dirección de un usuario

Resultado

Devuelve la dirección calculada de la wallet LP de un usuario

get_pool_type

Obtiene Pool tipo, igual a dex_type parámetro en get_router_data

Argumentos

Ninguno

Resultado

Devuelve el tipo de pool de este pool como cadena:

  • constant_product

  • stableswap

  • weighted_stableswap

  • weighted_const_product

Consultas en la cadena

Contrapartes en la cadena de los métodos getter.

Tabla de operaciones

Nombre
Valor
Descripción

getter_pool_data

0x26df39fc

Envía un mensaje con el estado actual del pool

getter_lp_account_address

0x15fbca95

Envía un mensaje con la dirección de la cuenta LP de un usuario

provide_wallet_address

0x2c76b973

Envía un mensaje con la dirección de la wallet LP de un usuario

getter_pool_data (0x26df39fc)

Envía un mensaje con el estado actual del pool. Equivalente en cadena de get_pool_data.

TL-B

Cuerpo del mensaje

Ninguno

Mensajes salientes

Envía un mensaje con los datos actuales del pool a la sender_address

Cuerpo del mensaje de respuesta

Nombre
Tipo
Descripción

op

uint32

El código de operación es igual a getter_pool_data

query_id

uint64

ID de consulta

is_locked

uint1

Si este Pool está bloqueado

reserve0

coins

Cantidad del primer token (en unidades básicas del token)

reserve1

coins

Cantidad del segundo token (en unidades básicas del token)

token0_address

dirección

Dirección del primer token Jetton

token1_address

dirección

Dirección del segundo token Jetton

additional_data

cell

Celda con datos adicionales

additional_data body

Nombre
Tipo
Descripción

lp_fee

uint16

Valor de la comisión del pool de liquidez

protocol_fee

uint16

Comisión del protocolo

router_address

dirección

Dirección de la Enrutador

protocol_fee_address

dirección

Dirección para recibir las comisiones del protocolo

total_supply

coins

Cantidad total de tokens LP acuñados

collected_token0_protocol_fee

coins

Cantidad de comisiones de protocolo acumuladas del primer token (en unidades básicas del token)

collected_token1_protocol_fee

coins

Cantidad de comisiones de protocolo acumuladas del segundo token (en unidades básicas del token)

getter_lp_account_address (0x15fbca95)

Envía un mensaje con la dirección de la cuenta LP de un usuario. Equivalente en cadena de get_lp_account_address.

TL-B

Cuerpo del mensaje

Nombre
Tipo
Descripción

user_address

dirección

Dirección de un usuario

Mensajes salientes

Envía un mensaje con la dirección de la cuenta LP de un usuario a sender_address

Cuerpo del mensaje de respuesta

Nombre
Tipo
Descripción

op

uint32

El código de operación es igual a getter_expected_outputs

query_id

uint64

ID de consulta

lp_account_address

dirección

dirección de la cuenta LP de un usuario

provide_wallet_address (0x2c76b973)

Envía un mensaje con la dirección de la wallet LP de un usuario. Equivalente en cadena de get_wallet_address.

TL-B

Cuerpo del mensaje

Nombre
Tipo
Descripción

owner_address

dirección

Dirección de un usuario

include_address?

uint1

Incluye la dirección del usuario en el mensaje de respuesta

Mensajes salientes

Envía un mensaje de vuelta al remitente con la dirección calculada de la wallet LP de un usuario

Cuerpo del mensaje de respuesta

Nombre
Tipo
Descripción

op

uint32

El código de operación es igual a take_wallet_address (0xd1735400)

query_id

uint64

ID de consulta

lp_wallet_address

dirección

Dirección calculada de la wallet LP

additional_data

maybe_ref

Celda con datos si include_address? se evalúa a true

additional_data body

Nombre
Tipo
Descripción

included_address

dirección

Dirección de un usuario

Manejadores de Jetton

Gestiona las operaciones enviadas desde una wallet Jetton.

Tabla de operaciones

Nombre
Valor
Descripción

burn_notification_ext

0x297437cf

Enviado por la wallet LP después de quemar jettons LP para liberar liquidez

burn_notification_ext (0x297437cf)

Enviado por LpWallet después de quemar jettons LP para liberar liquidez.

TL-B

Cuerpo del mensaje

Nombre
Tipo
Descripción

jetton_amount

coins

Cantidad de tokens de liquidez a quemar (en unidades básicas del token)

from_address

dirección

Dirección del usuario

response_address

dirección

Dirección para un mensaje de respuesta

custom_payloads

maybe_ref

Cargas útiles para token0 y token1

custom_payloads

Nombre
Tipo
Descripción

payload_1

maybe_ref

Carga útil usada para amount0; puede ser cross_swap

payload_2

maybe_ref

Carga útil usada para amount1; puede ser cross_swap

Mensajes salientes

Envía un mensaje con op excesses (0xd53276db) a response_address

Envía un mensaje con una cantidad liberada de ambos tokens para que el usuario la reciba como resultado de la operación de quema al router, que inicia pay_to operación a from_address

Manejadores de mensajes internos del router

Gestiona mensajes del router.

Tabla de operaciones

Nombre
Valor
Descripción

swap

0x6664de2a

Intercambiar tokens

provide_lp

0x37c096df

Proporcionar liquidez

reset_gas

0x29d22935

Reiniciar gas

set_fees

0x58274069

Establecer nuevos parámetros de comisión

swap (0x6664de2a)

Intercambia tokens. Este mensaje se recibe del router cuando el usuario inicia un intercambio de tokens.

TL-B

Cuerpo del mensaje

Nombre
Tipo
Descripción

from_user

dirección

Dirección del usuario

amount0

coins

Cantidad del primer token entrante

amount1

coins

Cantidad del segundo token entrante

payload

cell

Celda con el payload del DEX

payload body

Nombre
Tipo
Descripción

op

uint32

Op de intercambio

other_token_wallet

dirección

Dirección de la otra Enrutadorwallet del token

refund_address

dirección

Dirección a la que se enviará el reembolso si el intercambio falla

excesses_address

dirección

Dirección a la que se enviarán los excesos de TON

additional_data

cell

Celda con datos adicionales

additional_data body

Nombre
Tipo
Descripción

min_out

coins

Cantidad mínima requerida de tokens a recibir

receiver_address

dirección

Dirección a la que se enviarán los tokens después del intercambio

fwd_gas

coins

Gas usado para reenviar un mensaje en transfer_notification después del intercambio si custom_payload está presente

custom_payload

maybe_ref

Payload enviado en transfer_notification después del intercambio

refund_fwd_gas

coins

Gas usado para reenviar un mensaje en transfer_notification si el intercambio falla si refund_payload está presente

refund_payload

maybe_ref

Payload enviado en transfer_notification si el intercambio falla

ref_fee

uint16

Comisión de referencia

referral_address

dirección

Dirección de referencia

Notas:

  • el intercambio fallará si un usuario debe recibir menos de min_out de tokens como resultado

  • el valor máximo permitido de ref_fee es 100 (1%)

Mensajes salientes

Envía un mensaje con una cantidad de los otros tokens a recibir por un usuario como resultado del intercambio al router, que inicia pay_to operación

Además, puede enviar un mensaje con las comisiones de referido al router, que inicia pay_vault operación a Bóveda de referral_address

provide_lp (0x37c096df)

Proporciona liquidez al pool. Un usuario debe enviar una cantidad de ambos tokens para recibir tokens LP y agregar nueva liquidez a un pool. Este mensaje se enruta a la cuenta del pool de liquidez con add_liquidity código de operación.

TL-B

Cuerpo del mensaje

Nombre
Tipo
Descripción

from_user

dirección

Dirección del usuario

amount0

coins

Cantidad del primer token entrante

amount1

coins

Cantidad del segundo token entrante

payload

cell

Celda con el payload del DEX

payload body

Nombre
Tipo
Descripción

op

uint32

Op de provide LP

other_token_wallet

dirección

Dirección de la otra Enrutador wallet del token

refund_address

dirección

Dirección a la que se enviará el reembolso si el intercambio falla

excesses_address

dirección

Dirección a la que se enviarán los excesos de TON

additional_data

cell

Celda con datos adicionales

additional_data body

Nombre
Tipo
Descripción

min_lp_out

coins

Cantidad mínima requerida de tokens LP a recibir

receiver_address

dirección

Dirección a la que se enviarán los tokens LP

both_positive

uint1

Disparar el depósito de liquidez solo si ambas cantidades de tokens no son cero

fwd_gas

coins

Gas usado para reenviar un mensaje en transfer_notification después de acuñar si custom_payload está presente

custom_payload

maybe_ref

Payload enviado en transfer_notification después de acuñar LP

Mensajes salientes

Envía un mensaje a la cuenta del pool de liquidez con add_liquidity código de operación.

reset_gas (0x29d22935)

Actualiza la cantidad de TON (en nanoTONs) en el pool a storage_fee::pool (10000000) del pool. La cantidad restante de TON se enviará a excesses_address.

TL-B

Cuerpo del mensaje

Nombre
Tipo
Descripción

excesses_address

dirección

Dirección a la que se enviará el TON excedente

Mensajes salientes

Envía un mensaje a excesses_address con el TON restante

internal_set_fees (0x75930d63)

Establece nuevos valores de comisión, incluidas las comisiones del pool de liquidez, las comisiones del protocolo y las comisiones de referido, así como una dirección para recibir las comisiones del protocolo cobradas.

TL-B

Cuerpo del mensaje

Nombre
Tipo
Descripción

new_lp_fee

uint16

Nuevo ratio de comisión del pool de liquidez (multiplicado por params::fee_divider)

new_protocol_fee

uint16

Nuevo ratio de comisión del protocolo (multiplicado por params::fee_divider)

new_protocol_fee_address

dirección

Dirección para recibir las comisiones del protocolo

excesses_address

dirección

Dirección a la que se enviarán los excesos de TON

Notas:

  • la proporción de la comisión es el valor de la comisión dividido por params::fee_divider (10000); así que para fijar una comisión del 1% el valor debe ser 100

  • las comisiones deben estar entre params::min_fee (0) y params::max_fee (100)

Mensajes salientes

Envía un mensaje a excesses_address con el TON restante


Manejadores de mensajes internos de la dirección del protocolo

Gestiona mensajes del protocol_fee_address.

Tabla de operaciones

Nombre
Valor
Descripción

collect_fees

0x1ee4911e

Cobrar comisiones

collect_fees (0x1ee4911e)

Cobrar comisiones del protocolo. La cantidad de comisiones en ambos tokens se enviará a protocol_fee_address dirección.

TL-B

Cuerpo del mensaje

Nombre
Tipo
Descripción

payload_0

maybe_ref

Carga útil usada para amount0; puede ser cross_swap

payload_1

maybe_ref

Carga útil usada para amount1; puede ser cross_swap

Mensajes salientes

Envía un mensaje con las comisiones cobradas en ambos tokens al router, que inicia pay_to operación a protocol_fee_address.

Manejadores de mensajes internos de la cuenta LP

Gestiona mensajes de una cuenta LP.

Tabla de operaciones

Nombre
Valor
Descripción

cb_add_liquidity

0x06ecd527

Enviado por la cuenta LP del usuario después de agregar liquidez

cb_refund_me

0x0f98e2b8

Enviado por la cuenta LP del usuario después de agregar liquidez

cb_add_liquidity (0x06ecd527)

Añade nueva liquidez al pool. Enviado por la cuenta LP del usuario después de que se envíen al usuario cantidades de uno o ambos tokens. La liquidez añadida resultante debe ser mayor que min_lp_out para que la operación tenga éxito.

TL-B

Cuerpo del mensaje

Nombre
Tipo
Descripción

amount0

coins

Cantidad de los primeros tokens Jetton añadidos (en unidades básicas del token)

amount1

coins

Cantidad de los segundos tokens Jetton añadidos (en unidades básicas del token)

user_address

dirección

Dirección del propietario

min_lp_out

coins

Cantidad mínima de tokens de liquidez recibidos (en unidades básicas del token)

fwd_amount

coins

Cantidad de reenvío usada para enviar custom_payload (si está presente) en transfer_notification

custom_payload

maybe_ref

Payload enviado en transfer_notification al recibir tokens

additional_data

ref

Consulta la tabla a continuación

additional_data

Nombre
Tipo
Descripción

to_address

dirección

Propietario de los nuevos tokens de liquidez

refund_address

dirección

Dirección del propietario de LpAccount donde se reembolsarán los tokens si el acuñado de liquidez no tuvo éxito

excess_address

dirección

Dirección a la que se enviarán todos los excesos de TON

Notas:

  • la adición de liquidez fallará si un usuario debe recibir menos de min_lp_out tokens LP como resultado

  • no se puede agregar liquidez si el suministro de cualquiera de los tokens llega a ser mayor que MAX_COINS (2^120 - 1)

Mensajes salientes

Envía un mensaje con internal_transfer código de operación (0x178d4519) a la wallet LP de to_address con tokens de liquidez acuñados

cb_refund_me (0x0f98e2b8)

Enviado por la cuenta LP del usuario después de que un usuario inicia refund_me operación para cancelar la adición de nueva liquidez. La cantidad de tokens almacenados previamente se enviará de vuelta al usuario.

TL-B

Cuerpo del mensaje

Nombre
Tipo
Descripción

amount0

coins

Cantidad de tokens Jetton del primer token (en unidades básicas del token)

amount1

coins

Cantidad de tokens Jetton del segundo token (en unidades básicas del token)

user_address

dirección

Dirección del propietario

payload_0

maybe_ref

Carga útil usada para amount0; puede ser cross_swap

payload_1

maybe_ref

Carga útil usada para amount1; puede ser cross_swap

Mensajes salientes

Envía un mensaje con amount0 del primer token y amount1 del segundo token al router, que inicia pay_to operación


Constantes

Nombre
Valor
Descripción

storage_fee::pool

10000000

Cantidad de TON (en nanoTONs) que se dejará en el contrato del pool como gas

params::required_min_liquidity

1001

Cantidad mínima de liquidez requerida

MAX_COINS

2^120 - 1

Cantidad máxima de tokens (en unidades básicas del token) almacenados como liquidez

gas::pool::provide_wallet_address

20000000

Gas adicional (en nanoTONs) para proporcionar una wallet

params::fee_divider

10000

Los valores de las comisiones se dividen por este valor

params::min_fee

0

Comisión mínima permitida (0%)

params::max_fee

100

Comisión máxima permitida (1%)

Última actualización