Passer au contenu principal
Démarrez un abonnement à Preconfirmations — les transactions sont livrées avant d’être regroupées dans des entrées et converties en shreds. Il s’agit du signal de transaction à la latence la plus faible proposé par Helius. Un même abonnement diffuse à la fois les préconfirmations Helius, émises dès que le leader exécute la transaction et contenant son statut d’exécution, et les préconfirmations BAM, émises lorsque le validateur s’engage à l’exécuter. Utilisez includeSource pour sélectionner l’une ou l’autre source.

Points de terminaison

preconfSubscribe est servi depuis le point de terminaison Helius Gatekeeper :
  • wss://beta.helius-rpc.com/?api-key=<API_KEY>
Le nom d’hôte beta se réfère au déploiement de Gatekeeper, non à la maturité des Préconfirmations — il deviendra le point de terminaison standard à mesure que le trafic migrera vers Gatekeeper.
Le flux n’est pas continu. La couverture s’adapte avec la part de participation réseau transmise à Helius ou exécutant BAM, donc attendez-vous à des créneaux sans messages — gérez ces lacunes avec précaution. Voir Couverture.

Autorisations

string
requis
Votre clé API Helius, transmise en tant que paramètre de requête api-key. Les préconfirmations sont disponibles avec tous les forfaits payants.

Corps

array
Optionnel. Omettez params pour recevoir chaque transaction à la fois de Helius et de BAM. Pour restreindre le flux, passez un objet filtre en premier élément — le filtrage se fait côté serveur, vous ne payez donc que pour les transactions qui vous intéressent et que vous recevez.
Une source, une clé publique, une signature, un filtre d’instruction ou un code de région non valide renvoie l’erreur JSON-RPC -32602 (paramètres non valides). La combinaison de includeSource avec le champ obsolète includeBam renvoie également -32602. Les filtres d’instruction examinent uniquement les instructions de niveau supérieur. Ils ne correspondent pas aux instructions invoquées par un appel interprogramme (CPI). Un décalage de fin memcmp et dataSize ne doivent pas dépasser 4 096 octets. Les filtres de compte ne correspondent pas uniquement aux clés de compte statiques de la transaction — Helius résout les tables de recherche d’adresses v0 côté serveur. Ainsi, accountInclude, accountExclude et accountRequired correspondent également aux comptes chargés par une transaction via une ALT.

Codes de région

Pour les préconfirmations Helius, la région correspond à l’endroit où Helius a reçu la transaction. Pour les préconfirmations BAM, elle correspond au point de terminaison BAM régional qui a émis la préconfirmation, et non à l’endroit où Helius l’a reçue. Les points de terminaison BAM de Singapour et de Dallas correspondent à sgp et dal.

Réponse

integer
Identifiant de l’abonnement (nécessaire pour se désabonner)

Notifications

Après l’accusé de réception JSON, les notifications sont livrées sous forme de trames WebSocket binaires (et non au format JSON). Les préconfirmations Helius et BAM utilisent la même structure. Chaque trame est une structure d’octets compacte contenant une seule transaction : La charge utile ne contient aucun champ de source. Ne déduisez pas une origine BAM à partir de tx_index = 0, car les autres sources peuvent également indiquer 0.
Lisez et vérifiez toujours l’octet version en premier. Il vaut actuellement 1. Si Helius doit mettre à jour le format de la charge utile, la version sera incrémentée — créez une branche selon cette valeur afin que votre décodeur continue de fonctionner malgré les changements de schéma.
Une préconfirmation est un signal précoce, et non une garantie. La transaction n’a pas encore été enregistrée on-chain et peut toujours échouer ou être abandonnée. Confirmez son enregistrement à l’aide des vérifications de commitment standard avant de la considérer comme définitive.

Décodage de la transaction

Les octets de la transaction sont transmis exactement tels que le validateur les a sérialisés, dans l’encodage filaire standard de la version de la transaction. Les transactions héritées et v0 utilisent la structure où les signatures apparaissent en premier, produite par bincode. La transaction v1 (SIMD-0385) utilise une structure où le message apparaît en premier et les signatures à la fin. bincode échoue donc avec les charges utiles v1. Utilisez un décodeur qui prend en charge toutes les versions. En Rust, agave-transaction-view analyse sur place les transactions héritées, v0 et v1. Il s’agit de l’option recommandée ; wincode avec une version actuelle de VersionedTransaction du SDK Solana fonctionne également. En JavaScript, vérifiez que la version de votre bibliothèque prend en charge les transactions v1. Consultez le guide pour voir un exemple en Rust.

Notifications en double

Les préconfirmations Helius et BAM sont dédupliquées par source, mais pas entre les sources. Une petite proportion des transactions parvient à Helius par les deux sources. Vous pouvez donc recevoir deux fois la même signature, et les deux copies peuvent indiquer des slots différents. Dédupliquez les transactions par signature côté client et rendez idempotentes les actions déclenchées par une transaction. Consultez le guide.

Tarification

Les Preconfirmations sont disponibles avec tous les forfaits payants : Developer, Business, Professional et Enterprise. Les forfaits gratuits ne sont pas éligibles. Consultez la page Crédits pour plus de détails. Les slots pour lesquels aucun message n’est livré ne coûtent aucun crédit, même lorsqu’ils bénéficient de la couverture des préconfirmations. Lorsqu’un slot livre au moins un message, chaque abonnement preconfSubscribe ouvert est facturé selon le montant le plus élevé entre 300 crédits et 10 crédits par message livré. Les slots non couverts ne coûtent aucun crédit. Consultez la page Tarification pour connaître les conditions de facturation selon la source et la région. Chaque abonnement simultané est facturé indépendamment lorsqu’il reçoit au moins un message. Fermez les abonnements dont vous n’avez plus besoin avec preconfUnsubscribe. Avec includeSource: ["helius"], les slots couverts uniquement par BAM sont exclus de la facturation. Lorsque regionInclude est défini, les slots couverts situés en dehors des régions sélectionnées ne coûtent aucun crédit pour cet abonnement ; les slots correspondants sont facturés uniquement lorsque l’abonnement reçoit au moins un message. La facturation s’effectue par message, et non par signature unique. Une transaction livrée à la fois par Helius et BAM est comptabilisée deux fois. Définissez includeSource: ["helius"] si vous souhaitez uniquement les préconfirmations Helius.
Pour maîtriser les coûts, regroupez si possible les filtres de comptes dans un seul abonnement, utilisez regionInclude pour limiter la facturation aux régions dont vous avez besoin, définissez includeSource: ["helius"] lorsque vous n’avez pas besoin de BAM et surveillez vos crédits dans le tableau de bord Helius.

Ressources associées

Preconfirmations Overview

Présentation des Preconfirmations et de leur emplacement dans le pipeline du validateur.

preconfUnsubscribe

Arrêtez un abonnement à l’aide de son identifiant.