Resumen general (Swap)
Comprender las operaciones de swap en el protocolo Omniston: ejecuta swaps de tokens eficientes a través de DEX de la blockchain TON
💡 Enfoque recomendado: Para la mayoría de las integraciones, recomendamos usar nuestros SDK de Node.js o SDK de React. Los SDK gestionan automáticamente las conexiones WebSocket, el streaming de cotizaciones, la construcción de transacciones y el manejo de errores. La documentación a continuación es para desarrolladores que necesitan acceso al protocolo de bajo nivel o que están implementando en otros lenguajes.
Puntos finales base de WebSocket (JSON-RPC)
Producción: wss://omni-ws.ston.fi Sandbox: wss://omni-ws-sandbox.ston.fi
Use el sandbox solo para desarrollo/pruebas.
Método de liquidación de swap
Liquidación de la operación mediante swap directo usando contratos de terceros.
Actores
Trader
Un usuario del protocolo que realiza el intercambio de tokens.
Resolver
Servicio que proporciona una tasa de intercambio de tokens, también conocido como Creador de mercado.
API de WebSocket
Nota: Los detalles de la API WebSocket a continuación se proporcionan como referencia. Si está implementando una integración de bajo nivel, consulte nuestra Guía rápida de Python para un ejemplo completo y funcional. También puede explorar el repositorio SDK de código abierto para estudiar el código real de implementación de bajo nivel.
Tipos de datos usados:
BlockchainNúmero. Código de blockchain según lo definido por SLIP-044. (https://github.com/satoshilabs/slips/blob/master/slip-0044.md) ParaTON, es607.AddressObjeto. Consta de dos campos:blockchain- blockchain del activo,dirección- dirección de los activos, monederos en elBlockchain.
Por ejemplo:
CantidadCadena. Cantidad de activos en unidades.SettlementMethodNúmero. El método de liquidación de la operación. Valor del enum de métodos de liquidación. Actualmente, solo admiteSwapmétodo de liquidación, que es0.Protocolo\API de WebSocket usa un código numérico:
StonFiV1= 1StonFiV2= 2DeDust= 3TonCo= 4
Para uso de gRPC, consulte la Guía de integración del Resolver.
GaslessSettlement\API de WebSocket usa un código numérico:
GASLESS_SETTLEMENT_PROHIBITED= 0 — La liquidación sin gas no está soportada o está prohibida por el trader.GASLESS_SETTLEMENT_POSSIBLE= 1 — La liquidación sin gas está permitida si el resolver la soporta.GASLESS_SETTLEMENT_REQUIRED= 2 — La liquidación sin gas es obligatoria.
NúmeroNúmero entero.RequestSettlementParamsObjeto. Parámetros adicionales para la solicitud de cotización (RFQ):max_price_slippage_bps: Deslizamiento máximo de precio, en puntos básicos (0,01%). Por ejemplo, 100 = 1% de deslizamiento.max_outgoing_messages: Número máximo de mensajes salientes admitidos por el monedero. Para la blockchain TON, esto es 4 por defecto si se omite.gasless_settlement: Valor del enum GaslessSettlement que especifica la preferencia del trader para la liquidación sin gas (consulte GaslessSettlement arriba).flexible_referrer_fee: Marca booleana que permite a los resolvers reducir la comisión efectiva del referidor por debajo dereferrer_fee_bpscuando eso genera una mejor tasa de swap. El valor predeterminado esfalse. Consulte Comisión flexible del referidor para más detalles.
Nota: Estos parámetros son ajustes generales de RFQ y pueden usarse en distintos métodos de liquidación. No son específicos de ningún método de liquidación en particular.
SwapSettlementParamsObjeto. Parámetros de liquidación específicos del método de liquidación swap. Este tipo se usa en el campoparamsde Quote cuando el método de liquidación es swap. Contiene:routes: Matriz deSwapRouteobjetos que definen los posibles caminos para el swap.
Cada
SwapRouteconsta de:steps: Matriz deSwapStepobjetos que describen cada paso en la ruta de swapgas_budget: Cadena que indica el presupuesto de gas para completar la transferencia
Cada
SwapStepcontiene:bid_asset_address: Objeto Address del activo ofertadoask_asset_address: Objeto Address del activo solicitadochunks: Matriz deSwapChunkobjetos que describen cada paso en la ruta de swap.
Nota sobre Steps vs. Chunks:
Un "step" transforma un activo en otro (por ejemplo, TON → USDC).
Cada paso puede contener uno o más "chunks", y cada uno representa una operación de swap individual para ese paso.
En la blockchain TON, normalmente verá exactamente una chunk por paso. Mantenemos la capacidad de especificar varios chunks en un solo paso para otras blockchains si es necesario.
Cada
SwapChunkrepresenta una sola operación de swap:protocol: Protocolo usado para esta operación de swap. En este documento, se usan códigos numéricos para la API WebSocket. Para uso de gRPC, consulte Guía de integración del Resolver.bid_amount: Cantidad del activo ofertadoask_amount: Cantidad esperada del activo solicitadoextra_version: Actualmente, solo1es compatible.extra: Matriz de bytes usada por el protocolo subyacente para coordinar el swap (codificada en base64 en JSON). Consulte Documento de extras de Swap
quote_idCadena. Un identificador de 32 bytes de la cotización.
Métodos de la API
Cada nombre de método contiene la versión de la API. La versión más reciente es v1beta7. Las versiones anteriores pueden ser compatibles por retrocompatibilidad.
Método de suscripción quote
quoteLe permite crear una nueva solicitud de cotización (RFQ).
Cuando envía una solicitud de cotización, el servidor hará lo siguiente:
Primero, enviará inmediatamente un mensaje
QuoteRequestAckque contiene elrfq_id(una cadena hex SHA-256) que identifica de forma única su solicitud de cotizaciónLuego, comenzará a enviar eventos
quote_updatedde los resolvers a medida que las cotizaciones estén disponibles
Acepta los siguientes parámetros como entrada:
bid_asset_address
Address
Dirección específica de la blockchain del activo ofertado.
ask_asset_address
Address
Dirección específica de la blockchain del activo solicitado.
amount
Cantidad
Ya sea la cantidad del activo ofertado o del activo solicitado:
bid_units - La cantidad del activo ofertado que el trader quiere pagar, incluidas todas las comisiones.
ask_units - La cantidad del activo solicitado que el trader quiere recibir después de todas las comisiones.
referrer_address
Address
La dirección del referidor que recibirá las comisiones o una cadena vacía si no se especifica referidor.
referrer_fee_bps
Número
La cantidad de comisiones requerida por el referidor en puntos básicos (1/10000 o 0,01%)
settlement_methods
Array(SettlementMethod)
Métodos admitidos de liquidación del swap. El protocolo limita los métodos de liquidación en las cotizaciones a los métodos especificados. Diferentes combinaciones de cadenas de bid y ask pueden admitir distintos métodos.
Ejemplo:
📘 Ejemplo práctico: Consulte el Guía rápida de Python para una implementación completa que muestra cómo solicitar cotizaciones, manejar respuestas, construir transacciones y ejecutar swaps. El código de Python puede adaptarse a cualquier lenguaje de programación.
Acuse de recibo de la solicitud de cotización
Al recibir su RFQ, el servidor responde inmediatamente con:
rfq_id
Cadena
Cadena hex SHA-256 que identifica de forma única la RFQ
Este acuse confirma que su solicitud fue recibida y está siendo procesada.
Actualizaciones de cotización
Después del acuse, el canal comenzará a recibir eventos quote_updated de los resolvers, que consisten en un quote. Un Quote en el canal se actualiza si llega un acuerdo más rentable para el trader. El Quote incluye los siguientes campos:
quote_id
Cadena
ID de la cotización generado por la plataforma (32 bytes)
resolver_id
Cadena
ID del Resolver
resolver_name
Cadena
Nombre del Resolver
bid_asset_address
Address
Dirección específica de la blockchain del activo ofertado.
ask_asset_address
Address
Dirección específica de la blockchain del activo solicitado.
bid_units
Cantidad
La cantidad del activo ofertado que el trader debe pagar, incluidas todas las comisiones.
ask_units
Cantidad
La cantidad del activo solicitado que el trader recibirá después de todas las comisiones.
referrer_address
Address
La dirección del referidor que recibirá las comisiones o una cadena vacía si no se especifica referidor.
referrer_fee_asset
Address
El activo de las comisiones que recibirá el referidor
referrer_fee_units
Número
La cantidad de comisiones que recibirá el referidor (en unidades de referrer_fee_asset)
protocol_fee_asset
Address
El activo de las comisiones cobradas por el protocolo (siempre jetton ASK)
protocol_fee_units
Número
La cantidad de comisiones cobradas por el protocolo (en unidades de protocol_fee_asset, que es jetton ASK).
quote_timestamp
Número
La marca de tiempo (segundos UTC) de la cotización enviada por el resolver.
trade_start_deadline
Número
Marca de tiempo máxima (segundos UTC) del inicio de la operación. El inicio de la operación se define como la recepción del activo ofertado por el contrato inteligente correspondiente. El resolver aún puede liquidar las operaciones iniciadas después de que venza este plazo, a su propia discreción.
estimated_gas_consumption
Número
Cantidad estimada de unidades de gas que se gastarán para realizar la operación
params
Objeto
Parámetros adicionales específicos del método de liquidación. Los detalles se ven a continuación
Para Swap método de liquidación el params es:
routes
Array(SwapRoute)
Matriz de rutas de swap
min_ask_amount
Cantidad
Cantidad mínima a recibir (rellenada por el servicio Omniston)
recommended_min_ask_amount
Cantidad
Cantidad mínima recomendada (rellenada por el servicio Omniston)
recommended_slippage_bps
Número
Deslizamiento recomendado en puntos básicos
Objeto SwapRoute:
steps
Array(SwapStep)
Matriz de pasos de swap
gas_budget
Cantidad
Cantidad de presupuesto de gas para completar la transferencia
Objeto SwapStep:
bid_asset_address
Address
Dirección específica de la blockchain del activo ofertado.
ask_asset_address
Address
Dirección específica de la blockchain del activo solicitado.
chunks
Array(SwapChunk)
Matriz de chunks de swap
Objeto SwapChunk:
protocol
Protocolo
Protocolo usado para esta operación de swap. En este documento, se usan códigos numéricos para la API WebSocket. Para uso de gRPC, consulte Guía de integración del Resolver.
bid_amount
Cantidad
La cantidad del activo ofertado que el trader debe pagar, incluidas todas las comisiones.
ask_amount
Cantidad
La cantidad esperada del activo solicitado que el trader recibirá después de todas las comisiones.
extra_version
Número
Actualmente, solo 1 es compatible. Los intentos de usar cualquier otra versión serán rechazados.
extra
bytes
Matriz de bytes usada por el protocolo subyacente para coordinar el swap (codificada en base64 en JSON). Consulte Documento de extras de Swap
Para más detalles sobre cómo completar o interpretar el campo extra para estos protocolos, consulte el (Documento de extras de Swap).
Ejemplo:
Método de suscripción trade.track
trade.trackMétodo que le permite seguir el estado de un intercambio de tokens.
Acepta los siguientes parámetros como entrada:
quote_id
Cadena
ID de la cotización (32 bytes)
trader_wallet_address
Address
La dirección de la cartera del trader que inició la transacción
outgoing_tx_hash
Cadena
Hash de la transacción que inició la operación
Ejemplo:
El canal comenzará a recibir registros sobre el estado actual de la transferencia. Los siguientes estados están disponibles:
awaiting_transfer
Esperando a que el trader inicie la operación.
transferring
Transacción inicial encontrada, esperando a que se complete la transferencia de fondos.
swapping
(solo método SWAP) Esperando transacciones de swap en los pools.
routes- Información sobre el llenado parcial de la operación. Matriz deRouteStatus.
awaiting_fill
(solo ESCROW / HTLC) Esperando a que se complete la operación.
claim_available
(solo HTLC) El depósito del resolver puede reclamarse.
refund_available
(ESCROW / HTLC) El tiempo de espera del depósito ha expirado, es necesario reembolsarlo.
receiving_funds
Se encontró la transacción con fondos entrantes, esperando a que se mine.
routes- Información sobre el llenado parcial de la operación.
trade_settled
La operación se ha completado (llenada total o parcialmente o abortada por completo)
result - Resultado de la operación:
- 0 - Desconocido
- 1 - llenado total
- 2 - llenado parcial
- 3 - abortado
routes - Información sobre el llenado parcial de la operación. Matriz de RouteStatus
Descripciones de objetos
RouteStatus
steps- Matriz deStepStatusobjetos.
StepStatus
chunks- Matriz deChunkStatusobjetos.
ChunkStatus
target_address
Address
Dirección del contrato que procesa este chunk. Generalmente, esta dirección recibe tokens ofertados. Más específicamente, puede ser la dirección de un protocolo o de un pool de liquidez.
bid_units
Cantidad
La cantidad del activo ofertado transferida desde la billetera del trader
expected_ask_units
Cantidad
La cantidad esperada del activo solicitado que se transferirá a la billetera del trader
actual_ask_units
Cantidad
La cantidad real del activo solicitado transferida a la billetera del trader
result
Número
Resultado del chunk:
- 0 - Procesando
- 1 - Completado
- 2 - Abortado
protocol
Protocolo
Protocolo de esta operación de swap
tx_hash
Cadena
Hash de la transacción que ejecutó este chunk
Ejemplos:
Método transaction.build_transfer
transaction.build_transferUna solicitud para generar una transferencia sin firmar para iniciar la operación.
Acepta los siguientes parámetros como entrada:
source_address
Address
La dirección en bid_blockchain que enviará la transacción inicial para iniciar la operación
destination_address
Address
La dirección en ask_blockchain que recibirá el resultado de la operación
gas_excess_address
Address
La dirección que recibirá el gas no gastado por la operación
refund_address
Address
(Opcional) La dirección a la que deben devolverse los fondos si la transacción falla. Si no se especifica, los fondos se devuelven a la billetera del remitente. Actualmente solo funciona para swaps a través de STON.fi
quote
Quote
La cotización válida recibida de quote subscription
use_recommended_slippage
Booleano
Usar el deslizamiento recomendado por Omniston en lugar del deslizamiento proporcionado por el trader
Ejemplo:
La respuesta contiene un ton objeto con los datos de transacción específicos de la blockchain:
ton
Objeto
Contiene datos de transacción específicos de TON
ton.messages
Array(Message)
Matriz de mensajes a enviar
Cada Message objeto contiene:
target_address
Cadena
La dirección del destinatario
send_amount
Cadena
Cantidad en nanotons a enviar como valor adjunto
payload
Cadena
Datos de transacción codificados en hex o en base64
Próximos pasos
Elija su ruta de integración según sus necesidades:
Crear una aplicación frontend rápidamente
SDK de React - Hooks listos para usar
Crear una servicio backend o bot
SDK de Node.js - Soporte completo de TypeScript
Implementar en Python o en otro lenguaje
Inicio rápido de Python - Adáptelo a su lenguaje
Estudiar la implementación de bajo nivel
Código fuente del SDK - Referencia de código abierto
Comprender el protocolo en profundidad
Continúe leyendo arriba y Funciones avanzadas
Usar gRPC de alto rendimiento
Inicio rápido del SDK
Consulta la documentación del SDK para ejemplos completos y referencia de la API.
💡 Código abierto: Nuestros SDK son totalmente de código abierto en github.com/ston-fi/omniston-sdk. Puede estudiar la implementación, contribuir con mejoras o usarlo como referencia para crear integraciones en otros lenguajes.
Última actualización