Router (v1)

Contrato inteligente Router v1 de STON.fi: punto de entrada para swaps y operaciones de liquidez en la cadena

Métodos get fuera de la cadena

get_pool_address

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

Es necesario especificar las direcciones de los monederos Jetton del router como argumentos de este método. Estas direcciones pueden recuperarse con get_wallet_address del minter Jetton.

(slice) get_pool_address(slice token0, slice token1) method_id;

Argumentos

Clave
Tipo
Índice
Descripción

token0

dirección

0

La dirección de la billetera del router del primer Jetton

token1

dirección

1

La dirección de la billetera del router del segundo Jetton

Resultado

Devuelve un único slice con la dirección del pool de liquidez para el par de Jettons especificado.

get_router_data

Devuelve el estado actual del router: si el router está bloqueado, la dirección del administrador, el código pendiente o actualizaciones del administrador, el código del contrato del pool, el código del monedero lp, el código de la cuenta lp.

(int, slice, cell, cell, cell, cell) get_router_data() method_id;

Argumentos

Ninguno

Resultado

Devuelve el estado actual de la Enrutador

Estructura de resultado

Clave
Tipo
Índice
Descripción

is_locked

bool

0

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

admin_address

dirección

1

Dirección de la cuenta administradora del contrato

temp_upgrade

cell

2

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

3

Código del contrato del pool de liquidez del router

jetton_lp_wallet_code

cell

4

Código del contrato de la billetera LP

lp_account_code

cell

5

Código del contrato de la cuenta LP


operaciones transfer_notification

transfer_notification (0x7362d09c)

Mensajes recibidos de los monederos Jetton pertenecientes al router al recibir una transferencia de tokens de un usuario. El usuario debe incluir una carga útil personalizada con un 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

ref_msg_data

cell

Celda con datos

ref_msg_data body

Nombre
Tipo
Descripción

transferred_op

uint32

Código de operación adicional

token_wallet1

dirección

La dirección de la billetera del router del segundo Jetton

Notas:

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

Tabla de operaciones de transferencia

Nombre
Valor
Descripción

swap

0x25938561

Intercambiar un tipo de tokens Jetton por otro

provide_lp

0xfcf9e58f

Proporcionar liquidez; enrutar la llamada al pool correcto

swap (0x25938561)

Intercambia tokens. Este mensaje se recibe cuando el monedero de tokens Jetton del Router envía un mensaje tras la confirmación de la transferencia de tokens de un usuario con una carga útil personalizada. Luego, el router envía un swap mensaje a la dirección del contrato del pool correspondiente.

TL-B

ref_msg_data body

Nombre
Tipo
Descripción

transferred_op

uint32

Código de operación adicional; igual a swap

token_wallet1

dirección

La dirección de la billetera del router del segundo Jetton

min_out

coins

Cantidad mínima de salida (en unidades básicas del token)

to_address

dirección

Dirección del usuario

has_ref

uint1

Si hay referencia

ref_address

dirección

Dirección del referente; presente solo si has_ref es 1

Mensajes salientes

Envía un mensaje con op swap a un pool de liquidez

provide_lp (0xfcf9e58f)

Proporciona liquidez para un pool. Este mensaje se recibe cuando el monedero 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. Luego, el router envía un provide_lp mensaje a la dirección del contrato del pool correspondiente.

TL-B

ref_msg_data body

Nombre
Tipo
Descripción

transferred_op

uint32

Código de operación adicional; igual a provide_lp

token_wallet1

dirección

La dirección de la billetera del router del segundo Jetton

min_lp_out

coins

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

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

0xd1db969b

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

getter_pool_address (0xd1db969b)

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 de la billetera del router del primer Jetton

token1

dirección

La dirección de la billetera del router del segundo Jetton

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 la negociación en todos los pools, cambiar las comisiones de un determinado pool, actualizar el código del router, etc.

Tabla de operaciones

Nombre
Valor
Descripción

set_fees

0x355423e5

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

collect_fees

0x1fcb7d3d

Recauda las comisiones del protocolo de un pool

lock

0x878f9b0e

Bloquea el router (bloquea todos los swaps y la provisión de liquidez)

unlock

0x6ae4b0ef

Desbloquea el router

init_code_upgrade

0xdf1e233d

Inicia la actualización de código para el router

init_admin_upgrade

0x2fb94384

Inicia el cambio de administrador para el router

cancel_admin_upgrade

0xa4ed9981

Cancela un cambio de administrador

cancel_code_upgrade

0x357ccc67

Cancela una actualización de código

finalize_upgrades

0x6378509f

Finaliza las actualizaciones del código del router y el cambio de administrador

reset_gas

0x42a0fb43

Actualiza la cantidad de $TON (en nanoTons) en el router a REQUIRED_TON_RESERVE del router

reset_pool_gas

0xf6aa9737

Actualiza la cantidad de $TON (en nanoTons) en un pool a REQUIRED_TON_RESERVE de un pool

Notas:

  • REQUIRED_TON_RESERVE para el router es 100000

set_fees (0x355423e5)

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

uint8

Nuevo ratio de comisión del pool de liquidez (multiplicado por FEE_DIVIDER)

new_protocol_fee

uint8

Nuevo ratio de comisión del protocolo (multiplicado por FEE_DIVIDER)

new_ref_fee

uint8

Nuevo ratio de comisión de referencia (multiplicado por FEE_DIVIDER)

new_protocol_fee_address

dirección

Dirección para recibir las comisiones del protocolo

ref_wallets

cell

Celda con direcciones de monedero

ref_wallets body

Nombre
Tipo
Descripción

jetton_wallet0

dirección

La dirección de la billetera del router del primer Jetton

jetton_wallet1

dirección

La dirección de la billetera del router del segundo Jetton

Notas:

  • la proporción de la comisión es el valor de la comisión dividido por 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.

collect_fees (0x1fcb7d3d)

Recauda las comisiones del protocolo de un pool. Deben proporcionarse las direcciones de monedero Jetton apropiadas.

TL-B

Argumentos

Nombre
Tipo
Descripción

jetton_wallet0

dirección

La dirección de la billetera del router del primer Jetton

jetton_wallet1

dirección

La dirección de la billetera del router del segundo Jetton

Mensajes salientes

Envía un mensaje a un pool de liquidez con collect_fees código de operación.

lock (0x878f9b0e)

Detiene el paso de todos los transfer_notification mensajes. Bloquea efectivamente swap y provide_lp las transacciones a través de este router.

TL-B

Argumentos

Ninguno.

Mensajes salientes

Ninguno.

unlock (0x6ae4b0ef)

Permite el paso de todos los transfer_notification mensajes. Habilita swap y provide_lp las transacciones a través de este router.

TL-B

Argumentos

Ninguno

Mensajes salientes

Ninguno.

init_code_upgrade (0xdf1e233d)

Inicia la actualización de código para el router. Deben proporcionarse los datos apropiados con el nuevo código del router. Los cambios no surtirán efecto hasta que finalize_upgrades sea recibido por el router. 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

code

cell

Código del nuevo contrato del router

Mensajes salientes

Ninguno

init_admin_upgrade (0x2fb94384)

Inicia el cambio de administrador para el router. Debe proporcionarse una dirección apropiada para el nuevo administrador del router. Los cambios no surtirán efecto hasta que finalize_upgrades sea recibido por el router. 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

admin

dirección

Nueva dirección del administrador

Mensajes salientes

Ninguno

cancel_admin_upgrade (0xa4ed9981)

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

TL-B

Argumentos

Ninguno

Mensajes salientes

Ninguno

cancel_code_upgrade (0x357ccc67)

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

TL-B

Argumentos

Ninguno

Mensajes salientes

Ninguno

finalize_upgrades (0x6378509f)

Finaliza las actualizaciones del código del router y el cambio de administrador. Para que los cambios surtan efecto debe transcurrir el tiempo apropiado desde la inicialización de la actualización. 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 (0x42a0fb43)

Actualiza la cantidad de $TON (en nanoTons) en el router a REQUIRED_TON_RESERVE (100000) del router. El $TON restante se enviará al administrador del router.

TL-B

Argumentos

Ninguno

Mensajes salientes

Envía un mensaje vacío de vuelta al administrador con el $TON restante

reset_pool_gas (0xf6aa9737)

Actualiza la cantidad de $TON (en nanoTons) en un pool a REQUIRED_TON_RESERVE 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 de la billetera del router del primer Jetton

jetton_wallet1

dirección

La dirección de la billetera del router del segundo Jetton

Mensajes salientes

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


Manejadores de mensajes internos

pay_to (0xf93bb43f)

Inicia una transferencia de tokens Jetton desde monederos pertenecientes a este router, llamada desde los pools (en swap, 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

owner

dirección

Dirección de un receptor

exit_code

uint32

Código de salida

ref_coins_data

cell

Celda con direcciones de monedero Jetton y cantidades de tokens

ref_coins_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 monedero del router del primer Jetton

amount1_out

coins

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

token1_address

dirección

La dirección del monedero del router del segundo Jetton

Mensajes salientes

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

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


Constantes

Nombre
Valor
Descripción

WORKCHAIN

0

Id de workchain

REQUIRED_TON_RESERVE

100000

Cantidad de $TON (en nanoTons) que debe permanecer en el contrato del router como gas

TWODAYS

172800

Dos días en segundos

SEVENDAYS

604800

Siete días en segundos

Última actualización