
Cómo escuchar eventos en cadena en Solana
Introducción
Una de las tareas más fundamentales para cualquier desarrollador de cripto es configurar sistemas que escuchen la blockchain. Quizá necesites detectar confirmaciones de pagos, ventas de NFT o transferencias de fondos. También podrías monitorear cuentas por motivos de seguridad. Sin importar tu caso de uso, es crucial que los sistemas que construyas para observar la cadena sean tolerantes a fallos, confiables y estén optimizados para reducir la latencia.
En este artículo, veremos varias formas de construir estos sistemas en Solana, algunos casos de uso y cómo puedes crear mejores sistemas con Helius.
Cómo escuchar la blockchain
Hay dos formas principales de escuchar eventos en cadena:
- Sondeo
- Streaming
El sondeo es un método en el que el cliente o la aplicación consulta repetidamente un servidor o una fuente para comprobar si hay datos nuevos. Puede hacerse a intervalos definidos o bajo demanda. Cuando se envía una solicitud al servidor, este responde con los datos más recientes, hayan cambiado o no. Esto significa que el cliente o la aplicación puede recibir los mismos datos varias veces, aunque no haya actualizaciones.
El streaming, por otro lado, es una técnica en la que el servidor envía datos al cliente o a la aplicación cuando hay una actualización. Así, el cliente no necesita solicitar datos repetidamente y el servidor solo los envía cuando hay un cambio. Esto permite transferir datos de forma más eficiente y en tiempo real, ya que el servidor solo envía información relevante.
Aunque el sondeo es una técnica sencilla y muy utilizada, puede generar mucho tráfico de red y consumir una gran cantidad de recursos, especialmente cuando las solicitudes son frecuentes. El streaming es más eficiente porque el servidor solo envía actualizaciones, lo que reduce la cantidad de datos transferidos y el tráfico de red.
El streaming suele usarse en aplicaciones donde las actualizaciones de datos en tiempo real son cruciales, como las fuentes del mercado bursátil, las actualizaciones de redes sociales y los videojuegos en línea. El sondeo es más común en aplicaciones donde las actualizaciones son menos frecuentes o críticas, como los clientes de correo electrónico o los sitios web de noticias.
Aunque ambas técnicas tienen ventajas y desventajas, el streaming suele ser el método preferido y más eficiente para actualizar datos en tiempo real. El sondeo sigue siendo útil para ciertas aplicaciones donde los datos se actualizan con menos frecuencia.
Para la mayoría de los flujos de trabajo en blockchains, especialmente en Solana, es mejor usar streaming. Hay varias razones, pero el streaming será mucho más sencillo de implementar y permitirá gestionar mejor los casos de uso con mucho tráfico, en los que Solana se especializa.
Cómo escuchar eventos en cadena en Solana
Solana es una blockchain muy rápida. Emite bloques nuevos cada 400 ms, y estos bloques suelen contener miles de transacciones. Lo increíble es que este será su rendimiento más lento. A medida que los ingenieros principales sigan trabajando en el sistema, la velocidad con la que la cadena procesa datos nuevos no hará más que aumentar. Por eso, es crucial que diseñes tus sistemas para que sean escalables.
Por suerte, tienes varios métodos para escuchar datos en cadena en Solana:
- Sondeo
- WebSockets
- Geyser
- Webhooks de Helius
Sondeo
Esta es la forma menos recomendable de escuchar eventos en Solana, aunque quizá sea la más sencilla a nivel conceptual.
Según los datos que quieras obtener, solo tendrías que configurar un bucle que llame repetidamente a un método JSON-RPC en un nodo RPC de Solana. Algunos casos de uso comunes serían consultar el método getBlock para detectar bloques nuevos o consultar `getSignaturesForAddress` para comprobar si hay transacciones nuevas asociadas a una dirección determinada.
Curiosamente, este también podría ser el mejor método para casos de uso muy avanzados donde tengas una lógica altamente personalizada para activar nuevas actualizaciones.
WebSockets
Los RPC de Solana también ofrecen WebSockets PubSub a los que los desarrolladores pueden conectarse. Los tipos de eventos disponibles son:
- accountUnsubscribe
- accountSubscribe
- logsSubscribe
- logsUnsubscribe
- programSubscribe
- programUnsubscribe
- signatureSubscribe
- signatureUnsubscribe
- slotSubscribe
- slotUnsubscribe
Este es un pequeño ejemplo de código en JavaScript para escuchar cambios en una cuenta mediante un RPC de Helius, que admite WebSockets:
const solanaWeb3 = require(‘@solana/web3.js’)
const connection = new solanaWeb3.Connection(“https://rpc.helius.xyz?api-key=“);
(async () => {
connection.onAccountChange(
new solanaWeb3.PublicKey(“5yv6Vh8FNx93TXeSS94xy8VLZMbTqx4vXp7Zg5bDLZtE”),
(updatedAccountInfo, context) => console.log(“Updated account info: “, updatedAccountInfo),“confirmed” );
})();Una advertencia muy importante sobre los WebSockets: aunque son muy útiles para crear prototipos, en la práctica hemos comprobado que son bastante frágiles y poco confiables. Recomendamos firmemente que no los uses en flujos de trabajo críticos, ya que perderás eventos.
Geyser
En resumen: puedes hacer que los nodos de Solana te transmitan datos directamente mediante una interfaz de plugins que personaliza cómo los recibes. Esta es la forma más rápida y con menor latencia de transmitir datos en Solana. Es imprescindible para tareas como las liquidaciones DeFi y las aplicaciones sensibles a la latencia.
Los validadores y RPC de Solana tienen una forma nativa y exclusiva de Solana para transmitir datos: los plugins de Geyser.
Los validadores se han mejorado para admitir un mecanismo de plugins llamado plugin de "Geyser", mediante el cual se puede transmitir información sobre cuentas, slots, bloques y transacciones a almacenes de datos externos, como bases de datos relacionales, bases de datos NoSQL o Kafka. Después, se pueden desarrollar servicios RPC que consuman datos de estos almacenes externos y permitan optimizaciones más flexibles y específicas, como el almacenamiento en caché y la indexación.
Por desgracia, configurar Geyser puede ser bastante complejo y costoso. Incluso después de configurarlo, necesitarás una cantidad considerable de trabajo de DevOps para garantizar que funcione correctamente. Por suerte, en Helius desarrollamos GeyserVM, que te permite subir tus plugins y ejecutarlos en cuestión de segundos. Nuestros clústeres redundantes y de alta disponibilidad evitan que tengas que preocuparte por cualquier problema con los datos. Además, como los recursos son compartidos, puedes ahorrar más de un 200 % en tus costos mensuales.
Si quieres Geyser-as-a-Service dedicado, por supuesto que también lo ofrecemos. Haz clic aquí para obtener más información.
Webhooks
Los webhooks son un concepto sencillo. En pocas palabras, escuchan eventos y, cuando ocurren, los envían a un servidor que hayas configurado. Por ejemplo, podrías querer enviar una notificación a tu servidor de Discord cada vez que se venda un NFT. Un webhook puede hacerlo sin complicaciones.
Para la mayoría de los flujos de trabajo que escuchan eventos en Solana, los webhooks serán el método más sencillo, flexible y rentable. Solo deberías dudar en usarlos para casos que exijan una latencia extremadamente baja, donde una diferencia de 5 ms podría determinar el éxito o el fracaso de tu aplicación, como en el trading de alta frecuencia.
En Helius, creamos la solución de webhooks más robusta de todo el sector cripto.
Puedes escuchar hasta 100 000 direcciones con un solo webhook, configurar los tipos de eventos que quieres escuchar —nosotros los analizamos por ti— y simplemente introducir la URL de tu servidor. Eso es todo lo que necesitas para comenzar gratis.
Una de las muchas ventajas de un servicio como este es que no solo ahorras semanas o meses de tiempo y esfuerzo de desarrollo, sino que también obtienes un backend elástico que escala contigo a medida que creces.
Haz clic aquí para obtener más información sobre los webhooks.
Casos de uso
Bien, ahora que sabes cómo escuchar eventos en cadena en Solana, ¿qué deberías hacer? Estos son algunos casos de uso que podrían interesarte:
Bots
- Cuando un NFT se publique en el marketplace X, activa una acción de "compra de NFT".
- Cuando una posición de margen no sea saludable, activa una acción de "liquidación".
Monitoreo y alertas
- Cuando un programa emita un registro determinado, activa la integración con PagerDuty.
- Cuando el saldo de una cuenta de tokens cambie más de un X %, usa Dialect para comunicar una alerta.
Indexación basada en eventos
- Cuando ocurra cualquier transacción en un programa determinado, envíala directamente a tu base de datos o backend.
Notificaciones y seguimiento de actividad
- Cuando se produzca una transferencia de la billetera X a la billetera Y, envía una notificación de Slack o un correo electrónico.
Analítica y registros
- Cuando ocurra el evento X, envíalo a un pipeline de ETL o guárdalo directamente en Helius para consultar las tendencias a lo largo del tiempo.
Automatización de flujos de trabajo
- Cuando ocurra el evento X, activa cualquier conjunto de acciones.
Conclusión
En este artículo, explicamos las diferencias entre el sondeo y el streaming, las distintas formas de escuchar la blockchain de Solana y algunos casos de uso de ejemplo.
En conclusión, puedes escuchar eventos en cadena en Solana mediante sondeo, WebSockets, Geyser o webhooks de Helius. Cada opción tiene sus ventajas y desventajas. Es importante que consideres los requisitos de tus sistemas antes de decidir qué enfoque implementar. ¡Gracias por leer!
Artículos relacionados
Suscríbete a Helius
Mantente al día con las novedades del desarrollo en Solana y recibe actualizaciones cuando publiquemos


