Skip to main content
Inicia una suscripción a Preconfirmations: transacciones entregadas antes de agruparse en entradas y convertirse en shreds. Esta es la señal de transacción con menor latencia que ofrece Helius. Una suscripción transmite tanto las preconfirmaciones de Helius, emitidas en el instante en que el líder ejecuta la transacción e incluyen su estado de ejecución, como las preconfirmaciones de BAM, emitidas cuando el validador se compromete a ejecutarla; configura includeBam: false para recibir solo preconfirmaciones de Helius.

Endpoints

preconfSubscribe se proporciona desde el endpoint de Gatekeeper de Helius:
  • wss://beta.helius-rpc.com/?api-key=<API_KEY>
El nombre de host beta hace referencia al despliegue de Gatekeeper, no al nivel de madurez de Preconfirmations. Se convertirá en el endpoint estándar a medida que el tráfico migre a Gatekeeper.
El flujo no es continuo. La cobertura aumenta según la proporción del stake de la red que reenvía datos a Helius o ejecuta BAM, así que habrá slots sin mensajes. Gestiona estas interrupciones correctamente. Consulta Cobertura.

Autorizaciones

string
requerido
Tu clave de API de Helius, enviada como parámetro de consulta api-key. Requiere un plan Professional o superior.

Cuerpo

array
Opcional. Omite params para recibir todas las transacciones de Helius y BAM. Para limitar el flujo, pasa un objeto de filtro como primer elemento. El filtrado ocurre en el servidor, por lo que solo pagas y recibes las transacciones que te interesan.
Un valor de cuenta no válido o un código de región no reconocido devuelve el error JSON-RPC -32602 (parámetros no válidos). Los filtros de cuenta no solo coinciden con las claves de cuenta estáticas de la transacción. Helius resuelve las tablas de consulta de direcciones v0 en el servidor, por lo que accountInclude, accountExclude e accountRequired también coinciden con las cuentas que una transacción carga mediante una ALT.

Códigos de región

En las preconfirmaciones de Helius, la región indica dónde Helius recibió la transacción. En las preconfirmaciones de BAM, indica el endpoint regional de BAM que emitió la preconfirmación, no dónde Helius la recibió. Los endpoints de BAM de Singapur y Dallas se asignan a sgp e dal.

Respuesta

integer
Id. de la suscripción (necesario para cancelarla)

Notificaciones

Después de la confirmación JSON, las notificaciones se entregan como tramas WebSocket binarias (no JSON). Las preconfirmaciones de Helius y BAM comparten la misma estructura. Cada trama es una estructura compacta de bytes que contiene una sola transacción: La carga útil no tiene un campo de origen. No deduzcas que el origen es BAM a partir de tx_index = 0, ya que las preconfirmaciones de Helius pueden contener los mismos valores.
Lee y comprueba siempre primero el byte version. Actualmente es 1. Si Helius necesita actualizar el formato de la carga útil, la versión aumentará. Crea una rama basada en ella para que tu decodificador siga funcionando tras los cambios de esquema.
Una preconfirmación es una señal anticipada, no una garantía. La transacción aún no se ha registrado en la cadena y todavía podría fallar o descartarse. Confirma que se haya registrado mediante las comprobaciones de compromiso estándar antes de considerarla definitiva.

Decodificar la transacción

Los bytes de la transacción se reenvían exactamente como los serializó el validador, con la codificación de transmisión estándar correspondiente a la versión de la transacción. Las transacciones heredadas y v0 usan la estructura con las firmas primero que produce bincode. Las transacciones v1 (SIMD-0385) usan una estructura con el mensaje primero y las firmas al final, por lo que bincode falla con las cargas útiles v1. Usa un decodificador que admita todas las versiones. En Rust, agave-transaction-view analiza las transacciones heredadas, v0 y v1 directamente y es la opción recomendada; wincode con un VersionedTransaction actual del SDK de Solana también funciona. En JavaScript, asegúrate de que la versión de tu biblioteca admita transacciones v1. Consulta la guía para ver un ejemplo en Rust.

Notificaciones duplicadas

Las preconfirmaciones de Helius y BAM se deduplican por fuente, no entre fuentes. Una pequeña proporción de transacciones llega a Helius por ambas fuentes, por lo que puedes recibir la misma firma dos veces y las dos copias pueden indicar slots diferentes. Deduplica por firma en el cliente y haz que las acciones activadas por transacciones sean idempotentes. Consulta la guía.

Precios

Preconfirmations requiere un plan Professional o superior y cuesta 10 créditos por mensaje: un mensaje por cada transacción transmitida. Consulta Créditos para obtener más información. La facturación se calcula por mensaje, no por firma única. Una transacción entregada tanto por Helius como por BAM cuenta dos veces. Configura includeBam: false si solo quieres preconfirmaciones de Helius.

Contenido relacionado

Preconfirmations Overview

Qué son las Preconfirmations y dónde se ubican en el flujo de procesamiento del validador.

preconfUnsubscribe

Detén una suscripción mediante su id.