Router (v2)

Contrato inteligente Router v2 de STON.fi: enrutamiento avanzado con integración de vault para swaps

Métodos get fuera de la cadena

get_vault_address

Devuelve una dirección de una bóveda para un activo y usuario especificados.

(slice) get_vault_address(slice user, slice token_wallet) method_id;

Argumentos

Clave
Tipo
Índice
Descripción

usuario

dirección

0

La dirección del Bóvedapropietario de

token

dirección

1

La dirección del Enrutadorla billetera jetton de

Resultado

Devuelve VaultV2 objeto para Bóvedala dirección de

get_pool_address

Devuelve la dirección de un pool para un par específico de activos.

Es necesario especificar las direcciones de las billeteras Jetton de los Enrutador como argumentos de este método. Estas direcciones se pueden obtener con get_wallet_address del minter Jetton.

(slice) get_pool_address(slice token_wallet0, slice token_wallet1) method_id;

Argumentos

Clave
Tipo
Índice
Descripción

token0

dirección

0

La dirección del Enrutadorbilletera de el primer Jetton de

token1

dirección

1

La dirección del Enrutadorbilletera de el segundo Jetton de

Resultado

Devuelve Pool dirección.

get_router_data

Devuelve el estado actual de la Enrutador

Argumentos

Ninguno

Resultado

Devuelve RouterData estructura que contiene el estado actual de la Enrutador.

RouterData estructura

Clave
Tipo
Índice
Descripción

id

uint32

0

Enrutador id

dex_type

string

1

Enrutador tipo

is_locked

bool

2

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

admin_address

dirección

3

Dirección de la cuenta administradora del contrato

temp_upgrade

cell

4

Una estructura que describe el estado del código del contrato y la actualización de administrador; los valores cero indican que no hay ninguna actualización pendiente

pool_code

cell

5

Código del Enrutadorcontrato de pool de liquidez de

jetton_lp_wallet_code

cell

6

Código del contrato de la billetera LP

lp_account_code

cell

7

Código del contrato de la cuenta LP

vault_code

cell

8

Código del contrato de la cuenta LP

Notas:

  • posibles dex_type valores:

    • constant_product

    • stableswap

    • weighted_stableswap

    • weighted_const_product

get_router_version

Devuelve la Enrutador versión actual

Argumentos

Ninguno

Resultado

Devuelve VersionData estructura que contiene Enrutador versión.

RouterData estructura

Clave
Tipo
Índice
Descripción

mayor

uint

0

Versión mayor

menor

uint

1

Versión menor

desarrollo

string

2

Contiene información adicional de la versión


operaciones transfer_notification

transfer_notification (0x7362d09c)

Mensajes recibidos de billeteras Jetton pertenecientes al Enrutador al recibir una transferencia de token de un usuario. El usuario debe incluir una carga útil personalizada con código de operación adicional (ya sea swap o provide_lp) y los datos apropiados para que esos mensajes se procesen correctamente.

TL-B

Cuerpo del mensaje

Nombre
Tipo
Descripción

op

uint32

Código de operación; igual a transfer_notification

query_id

uint64

ID de consulta

jetton_amount

coins

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

from_user

dirección

Dirección del usuario

payload

cell

Celda con datos

payload body

Nombre
Tipo
Descripción

transferred_op

uint32

Código de operación adicional

token_wallet1

dirección

La dirección del Enrutadorbilletera de el segundo Jetton de

Notas:

  • payload contiene otros campos según el código de operación invocado

Tabla de operaciones de transferencia

Nombre
Valor
Descripción

swap

0x6664de2a

Intercambiar un tipo de tokens Jetton por otro

provide_lp

0x37c096df

Proporcionar liquidez; enrutar la llamada al pool correcto

swap (0x6664de2a)

Intercambia tokens. Este mensaje se recibe cuando la billetera Jetton del Router envía un mensaje tras la confirmación de la transferencia de tokens de un usuario con una carga útil personalizada. El Enrutador entonces envía un swap mensaje a la dirección del contrato del pool correspondiente.

Comprobar ejemplos para ver el flujo detallado de mensajes.

TL-B

payload body

Nombre
Tipo
Descripción

op

uint32

Op de intercambio

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

plazo

uint64

Marca de tiempo del plazo de ejecución para esta tx

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 del referidor

referral_address

dirección

Dirección del referidor

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 op swap to Pool

provide_lp (0x37c096df)

Proporciona liquidez para un pool. Este mensaje se recibe cuando la billetera de tokens del Router envía un mensaje tras la confirmación de la transferencia de tokens de un usuario con una carga útil personalizada. El Enrutador entonces envía un provide_lp mensaje a la dirección del contrato del pool correspondiente.

Comprobar ejemplos para ver el flujo detallado de mensajes.

TL-B

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

plazo

uint64

Marca de tiempo del plazo de ejecución para esta tx

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 con op provide_lp a un pool de liquidez


Consultas en la cadena

Contrapartes en cadena de los métodos getter

Tabla de operaciones

Nombre
Valor
Descripción

getter_pool_address

0x2993ade0

Envía un mensaje con una dirección de pool para un par de tokens solicitado; contraparte de get_pool_address

getter_pool_address (0x2993ade0)

Envía un mensaje con la dirección de un pool para un par de activos especificado; contraparte de get_pool_address

TL-B

Cuerpo del mensaje

Nombre
Tipo
Descripción

token0

dirección

La dirección del Enrutadorbilletera de el primer Jetton de

token1

dirección

La dirección del Enrutadorbilletera de el segundo Jetton de

Mensajes salientes

Envía un mensaje de vuelta al remitente con la dirección del pool

Cuerpo del mensaje de respuesta

Nombre
Tipo
Descripción

op

uint32

Código de operación igual a getter_pool_address

query_id

uint64

ID de consulta

pool_address

dirección

Dirección de un pool


Operaciones de administrador en cadena

Gestiona el mensaje de gobernanza del administrador para cambiar los parámetros del pool.

El administrador puede bloquear/desbloquear el comercio en todos los pools, cambiar las comisiones en un pool determinado, actualizar el Enrutador código, etc.

Tabla de operaciones comunes

Nombre
Valor
Descripción

set_fees

0x58274069

Cambia los parámetros de comisión de un pool

reset_pool_gas

0x66d0dff2

Actualizar la cantidad de TON (en nanoTons) en un pool a storage_fee::router de un pool

update_pool_status

0x2af4607c

Cambiar Pool estado

update_status

0x38a6022f

Cambiar Enrutador estado

init_code_upgrade

0x03601fc8

Iniciar actualización de código para el Enrutador

init_admin_upgrade

0x0b02fd5b

Iniciar cambio de administrador para el Enrutador

cancel_admin_upgrade

0x72d6b3b4

Cancela un cambio de administrador

cancel_code_upgrade

0x1f72111a

Cancela una actualización de código

finalize_upgrades

0x4e6707b7

Finalizar las actualizaciones del Enrutador código y cambio de administrador

reset_gas

0x29d22935

Actualizar la cantidad de TON (en nanoTons) en el Enrutador to storage_fee::router de el Enrutador

set_params

0x2b8b3b62

Cambiar parámetros específicos del pool

set_fees (0x58274069)

Cambia las comisiones de un pool, incluidas las comisiones del pool de liquidez, las comisiones del protocolo y las comisiones de referencia. Es necesario proporcionar las direcciones correctas de los tokens Jetton para un pool de liquidez objetivo.

TL-B

Argumentos

Nombre
Tipo
Descripción

new_lp_fee

uint16

Nuevo ratio de comisión de liquidez del pool

new_protocol_fee

uint16

Nuevo ratio de comisión del protocolo

new_protocol_fee_address

dirección

Dirección para recibir las comisiones del protocolo

additional_data

cell

Celda con direcciones de monedero

additional_data body

Nombre
Tipo
Descripción

jetton_wallet0

dirección

La dirección del Enrutadorbilletera de el primer Jetton de

jetton_wallet1

dirección

La dirección del Enrutadorbilletera de el segundo Jetton de

excesses_address

dirección

La dirección a la que se enviarán los excedentes 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 MIN_FEE (0) y MAX_FEE (100)

Mensajes salientes

Envía un mensaje con op set_fees a un pool de liquidez.

update_status (0x38a6022f)

Cambia Enrutador is_locked var al valor opuesto. Si is_locked == 1 bloquea transfer_notification mensajes. Bloquea efectivamente swap y provide_lp las transacciones a través de este Enrutador.

TL-B

Argumentos

Ninguno.

Mensajes salientes

Ninguno.

init_code_upgrade (0x03601fc8)

Inicia la actualización de código para el Enrutador. Se debe proporcionar un dato apropiado con el nuevo Enrutador código. Los cambios no tendrán efecto hasta que finalize_upgrades se reciba por el Enrutador. El retraso mínimo entre iniciar la actualización de código y finalizar los cambios es de siete días.

TL-B

Argumentos

Nombre
Tipo
Descripción

new_code

cell

Código del nuevo Enrutador contrato

Mensajes salientes

Los excedentes se enviarán a admin_address

init_admin_upgrade (0x0b02fd5b)

Inicia el cambio de administrador para el Enrutador. Se debe proporcionar una dirección adecuada para un nuevo Enrutador administrador. Los cambios no tendrán efecto hasta que finalize_upgrades se reciba por el Enrutador. El retraso mínimo entre iniciar el cambio de administrador y finalizar los cambios es de dos días.

TL-B

Argumentos

Nombre
Tipo
Descripción

nuevo_admin

dirección

Nueva dirección del administrador

Mensajes salientes

Los excedentes se enviarán a admin_address

cancel_admin_upgrade (0x72d6b3b4)

Cancela un cambio de administrador si hay un cambio de administrador pendiente.

TL-B

Argumentos

Ninguno

Mensajes salientes

Los excedentes se enviarán a admin_address

cancel_code_upgrade (0x1f72111a)

Cancela una actualización de código si hay un cambio de código pendiente.

TL-B

Argumentos

Ninguno

Mensajes salientes

Los excedentes se enviarán a admin_address

finalize_upgrades (0x4e6707b7)

Finaliza las actualizaciones del Enrutador código y los cambios de administrador. Para que los cambios surtan efecto debe pasar el tiempo apropiado desde su inicio. Para la actualización de código, el retraso es de siete días; para un cambio de administrador, el retraso es de dos días.

TL-B

Argumentos

Ninguno

Mensajes salientes

Ninguno

reset_gas (0x29d22935)

Actualiza la cantidad de TON (en nanoTons) en el Enrutador to storage_fee::router (100000) del Enrutador. El TON restante se enviará al Enrutador administrador.

TL-B

Argumentos

Ninguno

Mensajes salientes

Los excedentes se enviarán a admin_address

reset_pool_gas (0x66d0dff2)

Actualiza la cantidad de TON (en nanoTons) en un pool a storage_fee::router de un pool. Reenvía este mensaje a un contrato de pool para el par de tokens Jetton proporcionado.

TL-B

Argumentos

Nombre
Tipo
Descripción

jetton_wallet0

dirección

La dirección del Enrutadorbilletera de el primer Jetton de

jetton_wallet1

dirección

La dirección del Enrutadorbilletera de el segundo Jetton de

excesses_address

dirección

La dirección a la que se enviarán los excedentes de TON

Mensajes salientes

Envía un mensaje a un pool de liquidez con reset_gas código de operación que transporta el gas restante

update_pool_status (0x2af4607c)

Cambia Pool is_locked var al valor opuesto. Si is_locked == 1 bloquea los intercambios y las retiradas de liquidez de este Pool

TL-B

Argumentos

Nombre
Tipo
Descripción

jetton_wallet0

dirección

La dirección del Enrutadorbilletera de el primer Jetton de

jetton_wallet1

dirección

La dirección del Enrutadorbilletera de el segundo Jetton de

excesses_address

dirección

La dirección a la que se enviarán los excedentes de TON

Mensajes salientes

Los excedentes se enviarán a excesses_address


Manejadores de mensajes internos

pay_to (0x657b54f5)

Inicia una transferencia de tokens Jetton desde billeteras pertenecientes a este Enrutador, llamada desde pools (en intercambio, provisión de liquidez, reembolso, etc.).

TL-B

Cuerpo del mensaje

Nombre
Tipo
Descripción

op

uint32

Código de operación; igual a pay_to

query_id

uint64

ID de consulta

to_address

dirección

Dirección de un receptor

excesses_address

dirección

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

original_caller

dirección

Dirección del remitente original de la tx

exit_code

uint32

Código de salida

custom_payload

maybe_ref

Payload enviado en transfer_notification

additional_data

cell

Celda con datos adicionales

additional_data body

Nombre
Tipo
Descripción

fwd_gas

coins

Gas usado para reenviar custom_payload si está presente

amount0_out

coins

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

token0_address

dirección

La dirección del Enrutadorbilletera del primer Jetton de

amount1_out

coins

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

token1_address

dirección

La dirección del Enrutadorbilletera del segundo Jetton de

Mensajes salientes

Envía la transferencia de amount0_out tokens a owner mensaje a token0_address monedero si amount0_out > 0

o

Envía la transferencia de amount1_out tokens a owner mensaje a token1_address monedero si amount1_out > 0

o

Envía swap a algún Pool si custom_payload es cross_swap

pay_vault (0x63381632)

Deposita una cantidad de tokens en un Bóveda contrato; se usa si swap se hizo con referido

TL-B

Cuerpo del mensaje

Nombre
Tipo
Descripción

op

uint32

Código de operación; igual a pay_vault

query_id

uint64

ID de consulta

to_address

dirección

Dirección de un receptor

excesses_address

dirección

La dirección a la que se enviarán los excedentes de TON

additional_data

cell

Celda con datos adicionales

additional_data body

Nombre
Tipo
Descripción

amount0_out

coins

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

token0_address

dirección

La dirección del Enrutadorbilletera del primer Jetton de

amount1_out

coins

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

token1_address

dirección

La dirección del Enrutadorbilletera del segundo Jetton de

Mensajes salientes

Envía deposit_ref_fee a un token correspondiente Bóveda de to_address

vault_pay_to (0x2100c922)

Inicia una transferencia de tokens Jetton desde billeteras pertenecientes a este Enrutador, llamada desde una Bóveda cuando un propietario retira sus comisiones de referido acumuladas.

TL-B

Cuerpo del mensaje

Nombre
Tipo
Descripción

op

uint32

Código de operación; igual a vault_pay_to

query_id

uint64

ID de consulta

amount_out

coins

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

token_address

dirección

La dirección del Enrutadorbilletera del Jetton de

to_address

dirección

Dirección de un receptor

Mensajes salientes

Envía la transferencia de amount_out tokens a to_address mensaje a token_address billetera


Cargas útiles personalizadas de intercambio

Reenviar intercambio a otro router

Usa una carga útil de intercambio normal como custom_payload en el intercambio inicial con el otro Enrutador dirección como el receiver_address. El valor de fwd_gas debe ser distinto de cero y suficiente para realizar el siguiente intercambio.

Carga útil de cross-swap

Esta carga útil permite encadenar operaciones de intercambio en el mismo Enrutador; fwd_gas se ignora.

TL-B

custom_payload body

Nombre
Tipo
Descripción

op

uint32

Op de cross-swap (0x69cf1a5b)

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

plazo

uint64

Marca de tiempo del plazo de ejecución para esta tx

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 del referidor

referral_address

dirección

Dirección del referidor


Constantes

Nombre
Valor
Descripción

storage_fee::router

10000000

Cantidad de TON (en nanoTons) que debe quedar en el Enrutador contrato como gas

params::twodays

172800

Dos días en segundos

params::sevendays

604800

Siete días en segundos

Última actualización