Skip to main content

Qu’est-ce que transactionSubscribe?

La méthode WebSocket transactionSubscribe (une extension Helius de l’API WebSocket standard Solana) permet des événements de transaction en temps réel. Pour l’utiliser, fournissez un TransactionSubscribeFilter et incluez éventuellement TransactionSubscribeOptions pour une personnalisation supplémentaire. transactionSubscribe réside sur le même wss://mainnet.helius-rpc.com et wss://devnet.helius-rpc.com unifiés endpoints que les méthodes d’abonnement standard de Solana.

INLINE_CODE_PLACEHOLDER_90586faa3b753_END

  • vote : indicateur booléen pour inclure/exclure les transactions liées au vote
  • failed : indicateur booléen pour inclure/exclure les transactions qui ont échoué
  • signature : filtre les mises à jour vers une transaction spécifique basée sur sa signature
  • accountInclude : liste de comptes pour lesquels vous souhaitez recevoir des mises à jour de transaction. Un seul des comptes doit être inclus dans les mises à jour de transaction (par exemple, Compte 1 OU 2).
  • accountExclude : liste de comptes que vous souhaitez exclure des mises à jour de transaction
  • accountRequired : les transactions doivent inclure tous les comptes spécifiés pour être incluses dans les mises à jour (par exemple, Compte 1 ET 2)
  • tokenAccounts : expansion optionnelle des comptes de jetons associés (ATA) (balanceChanged, all, ou none). Voir Surveiller un portefeuille, y compris les transferts de jetons ci-dessous.
Vous pouvez inclure jusqu’à 50 000 adresses dans les tableaux accountInclude, accountExclude et accountRequired.

TransactionSubscribeOptions (optionnel)

  • commitment : niveau d’engagement pour récupérer les données (processed, confirmed, ou finalized)
  • encoding : format d’encodage des données retournées (base58, base64, ou jsonParsed)
  • transactionDetails : niveau de détail pour les données retournées (full, signatures, accounts et none)
  • showRewards : indicateur booléen indiquant si les données de récompense doivent être incluses dans les mises à jour
  • maxSupportedTransactionVersion : spécifie la version la plus élevée des transactions dont vous souhaitez recevoir les mises à jour. Définissez la valeur sur 1 pour recevoir les transactions legacy, v0 et v1. Voir Transaction v1 support.
maxSupportedTransactionVersion est requis pour retourner les comptes et les détails de niveau complet d’une transaction donnée (c’est-à-dire, transactionDetails: "accounts" | "full").

Exemple d’abonnement à une transaction

Dans cet exemple, nous nous abonnons aux transactions contenant le compte Raydium 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8. Lorsqu’une transaction contenant le compte 675k...1Mp8 dans le accountKeys de la transaction se produit, nous recevrons une notification WSS. Sur la base des options d’abonnement, la notification de transaction sera envoyée au niveau d’engagement processed, encodage jsonParsed, détails de la transaction full, et affichera les récompenses.

Exemple de notification

Surveiller un portefeuille, y compris les transferts de jetons

Lorsque vous surveillez un portefeuille avec accountInclude, vous ne correspondez qu’aux transactions où la clé publique du portefeuille apparaît directement dans les clés de compte. Un cas commun passe inaperçu : lorsque quelqu’un envoie au portefeuille un jeton SPL (USDC, par exemple), le transfert touche le compte de jetons associé (ATA) du portefeuille, et non la clé publique du portefeuille — donc un abonnement en ligne accountInclude: [wallet] ne le voit jamais. Définissez le champ tokenAccounts pour élargir la correspondance de sorte que le compte surveillé corresponde également aux transactions où il détient un solde de jeton :
  • balanceChanged : correspondance lorsque le portefeuille détient un solde de jeton dont le montant a changé (ou dont le compte de jeton a été fermé) dans la transaction. Utilisez ceci pour “me dire quand l’argent a réellement bougé.” C’est le choix le plus étroit, à faible volume et le plus courant.
  • all : correspond à toute transaction référencée à un solde de jeton que le portefeuille détient, même si invariable. Volume plus élevé.
  • none : pas d’expansion. Identique à l’omission du champ (par défaut).
La correspondance est basée sur le propriétaire : elle capture tout compte de jeton détenu par le portefeuille, y compris les non-canoniques, pas seulement l’adresse ATA dérivée. Une valeur invalide renvoie une erreur JSON-RPC -32602. Les abonnements qui omettent tokenAccounts se comportent exactement comme avant. Pour un aperçu complet du fonctionnement de l’expansion ATA, voir Filtrage des comptes de jetons (ATA) sur WebSocket.

Surveiller les nouveaux Jupiter DCAs

Jupiter DCA, ou Dollar Cost Averaging, est un moyen de programmer des transactions récurrentes sur Solana. Étant donné que ces ordres d’achat/vente programmés sont enregistrés sur la chaîne, les traders peuvent utiliser la méthode transactionSubscribe et getAsset pour écouter les nouveaux ordres.

Exemple de notification

Tableaux du terminal des nouveaux ordres Jupiter DCA montrant le portefeuille utilisateur, la paire de jetons, le temps d'ouverture, l'entrée totale, le montant par cycle, et l'intervalle

Surveiller les nouveaux tokens pump.fun

Exemple de notification

Tableaux du terminal des nouveaux tokens pump.fun créés montrant la signature de la transaction, le portefeuille du créateur et l'adresse de frappe du jeton

Gestion des abonnements

Identifiants d’abonnement

Lorsque transactionSubscribe réussit, le serveur renvoie un identifiant d’abonnement dans le champ result. C’est le même numéro qui apparaît dans params.subscription à chaque notification de cet abonnement :
Stockez l’identifiant d’abonnement de la réponse. Vous en avez besoin pour vous désabonner.

Désabonnement

Pour arrêter de recevoir des notifications, appelez transactionUnsubscribe avec l’identifiant d’abonnement. Chaque appel transactionSubscribe sur la même connexion crée un abonnement distinct avec son propre identifiant, alors assurez-vous de vous désabonner avant de vous réabonner pour éviter de recevoir des notifications en double.
Dans cet exemple, nous nous abonnons aux transactions Raydium, capturons l’identifiant d’abonnement de la réponse du serveur, puis nous nous désabonnons en utilisant cet identifiant. Quelques messages en cours peuvent encore arriver brièvement après l’appel à transactionUnsubscribe. C’est un comportement attendu.