Guía de Omniston (React)
Guía rápida de integración para Omniston: empieza a construir funciones de agregación entre DEX en minutos
Esta guía te guiará a través de la creación de una aplicación básica de intercambio de tokens usando el Omniston protocolo para intercambiar activos entre diferentes DEXes (STON.fi V1, STON.fi V2, DeDust, etc.). Integraremos la conectividad de billetera con TonConnect (a través de @tonconnect/ui-react) para permitir que los usuarios conecten su billetera TON y realicen un intercambio. La guía está pensada para principiantes y asume una experiencia mínima con React.
Nota: En esta demo, aprovecharemos Tailwind CSS para el estilo en lugar de usar CSS personalizado. La configuración de Tailwind CSS ya está incluida en las instrucciones de abajo, así que no necesitas configurarlo por separado.
Nota: Puedes usar cualquier gestor de paquetes (npm, yarn, pnpm o bun) para configurar tu proyecto React. En este tutorial, lo mostraremos con pnpm.
Índice
1. Introducción
En este inicio rápido, construiremos una aplicación React mínima para:
Conectarse a una billetera TON (a través de TonConnect UI).
Obtener los tokens disponibles de STON.fi y mostrarlos en menús desplegables.
Solicitar una cotización (RFQ) a Omniston para obtener la mejor ruta de intercambio (no se necesita un paso separado de "Simular"; Omniston obtiene las cotizaciones automáticamente).
Construir y ejecutar una transacción de intercambio a través de múltiples DEXes.
Rastrear el estado de la operación hasta su finalización.
Usaremos:
@ston-fi/omniston-sdk-react– Hooks de React para interactuar con Omniston (solicitar cotizaciones, rastrear operaciones, etc.).@ston-fi/api– Obtener listas de tokens desde STON.fi (y potencialmente otros datos).@tonconnect/ui-react– Proporciona un botón de conexión a billetera TON basado en React y utilidades.@ton/core– Biblioteca de bajo nivel de TON utilizada para funcionalidades avanzadas.
2. Configuración del proyecto
2.1 Crear una aplicación React
Primero, comprobemos si pnpm está instalado en tu sistema:
Si ves un número de versión (como 10.4.0), pnpm está instalado. Si obtienes un error, primero tendrás que instalar pnpm:
Ahora crearemos un nuevo proyecto de React usando Vite. Sin embargo, puedes usar cualquier configuración de React que prefieras (Next.js, CRA, etc.).
Ejecuta el siguiente comando para crear un nuevo proyecto de React basado en Vite:
Cuando se te pregunte, escribe el nombre de proyecto que desees (por ejemplo, omniston-swap-app):
Luego entra en la carpeta:
2.2 Instalación de los paquetes necesarios
Dentro del directorio de tu nuevo proyecto de React, instala el SDK de Omniston, TonConnect UI, la biblioteca TON core y la biblioteca API de STON.fi:
A continuación, instala Tailwind CSS y su plugin para Vite:
Además, instala el plugin de polyfills de Node.js para Vite, que es necesario para proporcionar Buffer y otras APIs de Node.js en el entorno del navegador (requerido por las bibliotecas de TON):
Configura el plugin de Vite actualizando el archivo vite.config.js . Solo se requieren el buffer shim y el global Buffer para las bibliotecas de TON, así que la configuración se mantiene reducida:
Luego, importa Tailwind CSS en tu archivo CSS principal. Abre src/index.css y reemplaza cualquier código existente con:
También puedes eliminar src/App.css (no lo necesitamos), y eliminar la instrucción de importación import './App.css' de src/App.tsx.
Después de hacer estos cambios, puedes verificar que tu aplicación sigue funcionando correctamente iniciando el servidor de desarrollo:
Esto debería iniciar tu aplicación en modo desarrollo, normalmente en http://localhost:5173. Deberías ver el logotipo y el texto de Vite + React sobre un fondo blanco simple. Como hemos eliminado el estilo predeterminado (App.css), la página se verá más sencilla que la plantilla por defecto.
Si ves el logotipo y el texto, significa que tu configuración de Vite + React está funcionando correctamente. Asegúrate de que todo cargue sin errores antes de continuar con el siguiente paso.
3. Conectar la billetera
3.1 Añadir los proveedores necesarios
Abre src/main.tsx (punto de entrada predeterminado de Vite) y envuelve tu aplicación con ambos TonConnectUIProvider y OmnistonProvider. El TonConnectUIProvider hace que el contexto de TonConnect esté disponible para tu app para la conectividad con la billetera, mientras que el OmnistonProvider habilita la funcionalidad de Omniston en toda tu aplicación. Además, apunta el proveedor de TonConnect a un archivo manifest (que crearemos a continuación) que describa tu aplicación para las billeteras.
3.2 Crear el manifiesto de TonConnect
En la public carpeta de tu proyecto, crea un archivo llamado tonconnect-manifest.json. Este manifest proporciona a las apps de billetera información sobre tu aplicación (como el nombre y el icono). Debes personalizar este manifest para tu propia aplicación. Aquí tienes un ejemplo:
Asegúrate de actualizar estos campos para tu aplicación:
url: La URL base desde la que se sirve tu aplicación
name: El nombre visible de tu aplicación (esto es lo que las billeteras mostrarán a los usuarios)
iconUrl: Un enlace al icono de tu aplicación (debe ser una imagen PNG de 180×180)
Asegúrate de que este archivo sea accesible. Cuando se ejecute el servidor de desarrollo, deberías poder obtenerlo en tu navegador en http://localhost:5173/tonconnect-manifest.json.
3.3 Agregar el botón de conectar billetera
En tu App principal, componente (por ejemplo, src/App.tsx), importa e incluye el TonConnectButton. Por ejemplo:
4. Obtener los activos disponibles
A continuación, recuperemos dinámicamente la lista de tokens (activos) que se pueden intercambiar en STON.fi. Usamos el cliente de la API de STON.fi (@ston-fi/api) para esto. Aquí tienes un ejemplo simplificado que filtra los activos por liquidez (de alta a media). Los almacenaremos en el estado y los presentaremos en los menús desplegables From/To.
Primero, añade las importaciones necesarias a lo que tenemos en src/App.tsx:
Inicializa las variables de estado en tu componente App:
Añade la lógica de obtención de activos con useEffect:
Crea la estructura principal de la interfaz:
Añade los menús desplegables de selección de tokens:
Añade el estado de carga y cierra el componente:
5. Solicitar una cotización
Usaremos el useRfq hook de @ston-fi/omniston-sdk-react para solicitar una cotización. Obtendrá cotizaciones automáticamente según los parámetros proporcionados.
Añade importaciones adicionales en la parte superior del archivo:
Añade funciones de utilidad para convertir cantidades de tokens:
Configura el useRfq hook para obtener cotizaciones automáticamente:
Añade la sección de visualización de la cotización a tu tsx (inserta después del campo de entrada de cantidad):
Cada vez que el usuario cambie el token o la cantidad, useRfq se actualiza automáticamente la cotización.
6. Construir una transacción y enviarla
Una vez que tengamos una cotización, podemos construir la transacción que ejecutará el intercambio. Usaremos el useOmniston hook para acceder a la instancia de Omniston y construir la transacción.
Reemplaza las importaciones de @tonconnect/ui-react y @ston-fi/omniston-sdk-react con:
Añade los hooks de conexión de la billetera y la instancia de omniston:
Crea la función de construcción de la transacción:
Añade la función de ejecución del intercambio:
Añade el botón Ejecutar intercambio (insertar después en la sección de cotización):
7. Rastrear tu operación
7.1 Instalar el paquete TON
Rastrearemos las operaciones usando el useTrackTrade hook de @ston-fi/omniston-sdk-react. Primero, asegúrate de tener el @ton/ton paquete instalado si aún no lo has hecho:
7.2 Uso del hook useTrackTrade
Después de haber construido y enviado la transacción de intercambio, puedes rastrear su estado con useTrackTrade. Este hook toma el quoteId de la operación, la dirección de tu billetera y el hash de la transacción saliente. Comprueba periódicamente el estado on-chain de la operación, permitiéndote saber si está pendiente, liquidada o parcialmente ejecutada.
Reemplaza las importaciones de @ton/ton y @ston-fi/omniston-sdk-react para el seguimiento de la operación:
Añade variables de estado para el seguimiento:
Restablece el estado de seguimiento cuando cambien las entradas:
Actualiza el hook useRfq para dejar de obtener cotizaciones durante la ejecución de la operación:
Configura el hook de seguimiento de la operación:
Añade una función auxiliar para traducir los resultados de la operación:
Añade funciones de utilidad para la extracción del hash de la transacción:
Actualiza la función handleSwap para capturar los detalles de la transacción:
Añade la visualización del estado de la operación (insertar después de la línea divisoria):
Actualiza la visualización de errores en la sección de cotización
8. Probar tu intercambio
Inicia el servidor de desarrollo:
Abre tu aplicación en el navegador en
http://localhost:5173.Conecta tu billetera TON mediante el botón "Connect Wallet".
Selecciona tokens en los menús desplegables e introduce una cantidad.
Omniston obtiene y muestra automáticamente una cotización. Confirma que sea válida.
Haz clic en "Execute Swap" para finalizar la transacción. Apruébala en tu billetera.
Una vez que el intercambio se complete on-chain, los saldos de tu billetera deberían actualizarse en consecuencia.
9. Conclusión
¡Felicidades! Has creado una aplicación mínima de React + Vite con Tailwind CSS que:
Se conecta a una billetera TON usando TonConnect.
Obtiene dinámicamente los tokens disponibles desde STON.fi.
Solicita cotizaciones en tiempo real (RFQs) desde Omniston automáticamente.
Construye y envía transacciones de intercambio.
Siéntete libre de ampliar esta demo con:
Ajustes personalizados de deslizamiento.
Mejor manejo de errores y notificaciones de éxito.
Métodos de liquidación adicionales o lógica entre cadenas.
Aprende cómo añadir comisiones de referencia a tus intercambios de Omniston leyendo el guía de comisiones por referidos.
¡Feliz desarrollo con Omniston!
10. Demostración en vivo
Con esta demo de Replit, puedes:
Abrir el proyecto directamente en tu navegador
Hacer un fork del Replit para crear tu propia copia
Ejecutar la aplicación para verla en acción
Explorar y modificar el código para aprender cómo funciona
Experimentar con diferentes funciones y cambios en la interfaz
Como alternativa, puedes ejecutar este ejemplo localmente clonando el repositorio de GitHub:
Esto iniciará el servidor de desarrollo y podrás acceder a la app en http://localhost:5173.
11. Aplicación de ejemplo avanzada
Para quienes buscan un enfoque más avanzado y rico en funciones, también tenemos una aplicación de demostración de Omniston en Next.js que:
Usa Next.js para un framework escalable
Utiliza hooks y providers para una arquitectura elegante
Demuestra un mejor manejo de errores, una gestión de estado robusta y funciones adicionales de STON.fi y Omniston
Puedes explorar el código en nuestro repositorio:
Aplicación de demostración del SDK de Omniston en Next.js
O verla en acción en nuestra demo en vivo:
Aplicación de demostración de Omniston
12. Uso de agentes de IA para la implementación automatizada
Para los desarrolladores que buscan acelerar su proceso de desarrollo, pueden aprovechar agentes de programación de IA para implementar automáticamente la funcionalidad de intercambio de Omniston descrita en esta guía. Aunque mostramos Gemini CLI en nuestro ejemplo (debido a su generoso plan gratuito), puedes usar cualquier asistente de programación de IA como Claude Code, GitHub Copilot, Cursor Agent, o herramientas similares.
También puedes seguir una guía grabada:
12.1 ¿Por qué agentes de IA?
Los modernos agentes de programación de IA pueden:
Entender documentación compleja e implementar funciones completas
Configurar automáticamente la estructura del proyecto y las dependencias
Gestionar errores comunes de configuración y puesta en marcha
Proporcionar implementaciones funcionales en minutos en lugar de horas
12.2 Configuración con Gemini CLI (ejemplo)
Haremos la demostración con Gemini CLI, pero el enfoque funciona con cualquier agente de IA que pueda leer documentación y ejecutar comandos.
12.2.1 Instalación de Gemini CLI
Instala Gemini CLI siguiendo las instrucciones en: https://github.com/google-gemini/gemini-cli
Autentícate con tu cuenta de Google cuando se te solicite. El nivel gratuito incluye:
60 solicitudes al modelo por minuto
1.000 solicitudes al modelo por día
12.2.2 Configuración de la guía de implementación
Descarga el
GEMINI.mdarchivo desde el gist: https://gist.github.com/mrruby/311a9d96f12bc7303bb1046dc92092b3Renombra el archivo según tu agente de IA:
Para Gemini CLI: Usa
GEMINI.mdtal cual (no es necesario renombrarlo)Para Claude Code: Renombra
GEMINI.mdtoCLAUDE.mdPara otros agentes de IA (GitHub Copilot, Cursor, etc.): Renombra
GEMINI.mdtoAGENTS.md
Crea un nuevo directorio para tu proyecto y coloca el archivo de guía dentro de él:
12.2.3 Ejecutar la implementación automatizada
Desde el directorio de tu proyecto, ejecuta Gemini CLI:
Cuando se abra la interfaz de la CLI, escribe:
El agente de IA:
Pedirá permiso para usar comandos como
pnpm,npm, etc.Creará automáticamente la estructura del proyecto
Instalará todas las dependencias necesarias
Implementa la funcionalidad completa de intercambio
Configurará los componentes de la interfaz y el estilo
Si ocurre algún error durante el proceso:
Simplemente vuelve a pegar el mensaje de error al agente de IA
Analizará y corregirá el problema automáticamente
En la mayoría de los casos, la implementación se completa correctamente de una sola vez
12.3 Uso de otros agentes de IA
El mismo enfoque funciona con otros asistentes de programación de IA:
Gemini CLI: Descarga
GEMINI.mddesde el gist y úsalo tal cualClaude Code: Descarga
GEMINI.mddesde el gist y renómbralo aCLAUDE.md, luego colócalo en tu proyecto y pide a Claude Code que implemente la guíaGitHub Copilot: Descarga
GEMINI.mddesde el gist y renómbralo aAGENTS.md, abre la guía en tu editor y usa Copilot Chat para implementar paso a pasoCursor Agent: Descarga
GEMINI.mddesde el gist y renómbralo aAGENTS.md, carga la documentación y solicita la implementación completa mediante el modo agente de CursorOtras herramientas de IA: Descarga
GEMINI.mdy renómbralo aAGENTS.mdpara compatibilidad con la mayoría de los asistentes de IA
Nota: El gist contiene
GEMINI.mdque funciona directamente con Gemini CLI. Para Claude Code, renómbralo aCLAUDE.md. Para otros agentes de IA (GitHub Copilot, Cursor, etc.), renómbralo aAGENTS.mdpara una mejor compatibilidad.
12.4 Beneficios de usar agentes de IA
Velocidad: Obtén una implementación funcional en minutos en lugar de horas
Precisión: Los agentes de IA siguen la guía rápida con exactitud
Gestión de errores: Resuelven automáticamente la mayoría de los problemas comunes de configuración
Herramienta de aprendizaje: Observa cómo se desarrolla la implementación paso a paso
Personalización: Después de la configuración inicial, puedes modificar el código generado para adaptarlo a tus necesidades específicas
Rentable: Muchas herramientas de programación con IA ofrecen niveles gratuitos (como Gemini CLI) o están incluidas en suscripciones existentes
12.5 Mejores prácticas
Revisar el código: Revisa siempre el código generado por IA antes de usarlo en producción
Entender el flujo: Usa el código generado como una herramienta de aprendizaje para comprender el protocolo de Omniston
Personalizar: Adapta el código generado a tus requisitos específicos
Probar a fondo: Prueba la implementación con cantidades pequeñas antes de procesar transacciones más grandes
Seguridad: Nunca confirmes claves de API ni mnemónicos en el control de versiones
Este enfoque es especialmente útil para:
Desarrolladores nuevos en el ecosistema TON
Prototipado rápido y pruebas de concepto
Aprender con un ejemplo de una implementación funcional
Evitar errores comunes de configuración y problemas de puesta en marcha
Explorar rápidamente diferentes enfoques de implementación
Última actualización