React
Primeros pasos con el SDK de Omniston en React: crea interfaces DeFi responsivas con swaps entre DEX
Primeros pasos
Este paquete proporciona enlace para omniston-sdk al ecosistema de React. Usando este paquete, puedes acceder a todos los métodos de Omniston como hooks impulsados por TanStack react query (estados de carga listos para usar, reintentos, manejo de errores y mucho más)
📦 Paquete NPM: @ston-fi/omniston-sdk-react
Echa un vistazo a nuestra app de demostración que usa NextJs y omniston-sdk-react paquete
Instalación
vía NPM
npm install @ston-fi/omniston-sdk-reactvía YARN
yarn add @ston-fi/omniston-sdk-reactvía PNPM
pnpm install @ston-fi/omniston-sdk-reactEnvuelve tu aplicación en el proveedor de Omniston
import { Omniston, OmnistonProvider } from "@ston-fi/omniston-sdk-react";
const omniston = new Omniston({ apiUrl: "wss://omni-ws.ston.fi" });
const App = () => (
<OmnistonProvider omniston={omniston}>{children}</OmnistonProvider>
);El proveedor acepta los siguientes parámetros:
omniston
Omniston
Una instancia de Omniston preinstanciada configurada con tu URL de API
Ejemplo en sandbox (pruebas)
Si está desarrollando o probando su integración, use el entorno público de sandbox en lugar de producción.
Sandbox está destinado solo para desarrollo y pruebas de integración. No use sandbox en aplicaciones de producción.
Configuración personalizada de transporte
Ahora puedes configurar un Transporte personalizado para tener un control más preciso sobre la conexión a la API de WebSocket:
Enviar una solicitud de cotización
Envía una solicitud de cotización para intercambiar un activo por otro activo.
Un QuoteRequest tiene las siguientes propiedades:
settlementMethods
SettlementMethod[]
Métodos admitidos de liquidación del swap
askAssetAddress
Address
Dirección específica de la blockchain del activo ask
bidAssetAddress
Address
Dirección específica de la blockchain del activo bid
amount
{ bidUnits: string } | { askUnits: string }
Ya sea la cantidad del activo bid o del activo ask
amount.bidUnits
string
La cantidad del activo bid que el trader desea pagar, incluidas todas las comisiones, en unidades del activo base
amount.askUnits
string
La cantidad del activo ask que el trader desea obtener después de todas las comisiones, en unidades del activo base
referrerAddress
Address | undefined
La dirección del referidor que recibirá las comisiones
referrerFeeBps
number | undefined
La cantidad de comisiones requerida por el referente en puntos básicos (1/10000 = 0.01%)
settlementParams
RequestSettlementParams | undefined
Parámetros adicionales del RFQ relacionados con la liquidación. Consulte la tabla de abajo.
RequestSettlementParams
max_price_slippage_bps
number | undefined
Deslizamiento máximo del precio, en puntos básicos (0,01%). Por ejemplo, 100 = 1% de deslizamiento. Establézcalo en 0 para usar el deslizamiento recomendado.
gasless_settlement
GaslessSettlement | undefined
Preferencia de liquidación sin gas. Opciones: GASLESS_SETTLEMENT_PROHIBITED (sin gasless), GASLESS_SETTLEMENT_POSSIBLE (permitir gasless), GASLESS_SETTLEMENT_REQUIRED (requiere gasless).
max_outgoing_messages
number | undefined
Número máximo de mensajes salientes admitidos por la cartera. Para la blockchain TON, el valor predeterminado es 4 si se omite.
flexible_referrer_fee
boolean | undefined
Establezca en true para permitir que los resolvers reduzcan la comisión efectiva del referidor por debajo de referrerFeeBps al ofrecer una mejor tasa. El valor predeterminado es false. En los SDK, páselo como flexibleReferrerFee. Consulte Comisión flexible del referidor para más detalles.
Nota: Algunos parámetros en RequestSettlementParams solo pueden ser relevantes para ciertas blockchains o ciertos métodos de liquidación. Si su método de liquidación o cartera no los requiere, puede omitarlos o establecerlos en valores predeterminados.
Opciones de liquidación sin gas:
GASLESS_SETTLEMENT_PROHIBITED: Deshabilita completamente la liquidación sin gasGASLESS_SETTLEMENT_POSSIBLE: Permite la liquidación sin gas si está disponible (recomendado)GASLESS_SETTLEMENT_REQUIRED: Fuerza la liquidación sin gas (fallará si no está disponible)
El servidor devuelve Observable<QuoteResponseEvent>, que es un flujo de actualizaciones de cotización.
Un QuoteResponseEvent puede ser uno de los siguientes:
{ type: "ack"; rfqId: string; }- Confirmación de que se recibió la solicitud de cotización{ type: "quoteUpdated"; quote: Quote; rfqId: string; }- Una actualización de la cotización (incluye rfqId después de la confirmación){ type: "noQuote"; }{ type: "unsubscribed"; rfqId: string; }- Dado de baja del flujo de cotizaciones (incluye rfqId después de la confirmación)
Un Quote tiene las siguientes propiedades:
quoteId
string
ID de la cotización generada por la plataforma (32 caracteres)
resolverId
string
ID del resolver
resolverName
string
Nombre del resolver
bidAssetAddress
Address
Dirección específica de la blockchain del activo bid
askAssetAddress
Address
Dirección específica de la blockchain del activo ask
bidUnits
string
La cantidad del activo bid que el trader debe pagar, incluidas todas las comisiones
askUnits
string
La cantidad del activo ask que el trader obtendrá después de todas las comisiones
referrerAddress
Address | undefined
La dirección del referidor que recibirá las comisiones
referrerFeeAsset
Address
El activo de las comisiones que recibirá el referidor
referrerFeeUnits
string
La cantidad de comisiones que recibirá el referidor (en unidades de referrerFeeAsset)
protocolFeeAsset
Address
El activo de las comisiones cobradas por el protocolo
protocolFeeUnits
string
La cantidad de comisiones cobradas por el protocolo (en unidades de protocolFeeAsset).
quoteTimestamp
number
La marca de tiempo (segundos UTC) de la cotización enviada por el resolver
tradeStartDeadline
number
Marca de tiempo máxima (segundos UTC) del inicio de la operación
gasBudget
string
La cantidad de presupuesto de gas para la operación
estimatedGasConsumption
string
Cantidad estimada de unidades de gas que se gastarán para realizar la operación
params
object | undefined
Varios parámetros específicos del método de liquidación. Consulte el código fuente para más detalles.
Construir una transacción
Ahora que tenemos una cotización, debemos solicitar al servidor que construya una transacción para iniciar la operación que el usuario pueda verificar y firmar.
El buildTransfer el método toma un TransactionRequest objeto como parámetro, que tiene las siguientes propiedades:
quote
Quote
La cotización válida recibida de Omniston.requestForQuote
sourceAddress
Address
La dirección en offerBlockchain que enviará la transacción inicial para iniciar la operación
destinationAddress
Address
La dirección en askBlockchain que recibirá el resultado de la operación
gasExcessAddress
Address | undefined
La dirección que recibirá el gas no gastado por la operación
refundAddress
Address | undefined
La dirección a la que se devolverán los fondos en caso de un fallo
useRecommendedSlippage
boolean | undefined
Si se debe usar el deslizamiento recomendado de la cotización. El valor predeterminado es false.
Firmar la transacción
Puedes encontrar las instrucciones sobre cómo enviar una transacción usando el @tonconnect/ui-react paquete aquí.
Obtén el hash de la transacción saliente
Consulta TON Cookbook para obtener instrucciones detalladas.
Para fines del tutorial, usaremos el @ton/core paquete para obtener el hash externo de la transacción y encontrar el hash interno con TonAPI v2.
Escuchar actualizaciones del estado de la operación
Después de que el usuario haya firmado e iniciado la transacción, podemos rastrear el estado de la operación.
El trackTrade el método tiene los siguientes parámetros:
quoteId
string
ID de la cotización recibida de Omniston.requestFromQuote
traderWalletAddress
Address
La dirección de la cartera del trader que inició la transacción
outgoingTxHash
string
Hash de la transacción que inició la operación
Devuelve Observable<TradeStatus>. Para los distintos valores del estado de la operación, consulte el código fuente. Nos interesa el enum del resultado de la operación, que puede leerse del campo status.tradeSettled?.result? . El enum tiene los siguientes valores:
TRADE_RESULT_FULLY_FILLED
La operación se ha completado y ejecutado por completo.
TRADE_RESULT_PARTIALLY_FILLED
La operación se ha ejecutado parcialmente. Algo salió mal.
TRADE_RESULT_ABORTED
La operación ha sido abortada.
TRADE_RESULT_UNKNOWN
UNRECOGNIZED
Última actualización