NOUVEAU : Helius acquiert Light Protocol
annonce des produits Parsed Events API et Parsed Streams pour Solana
Blog/Actualités

Découvrez la Parsed Events API et Parsed Streams

Produit chez HeliusKiryl Miranovich sur XKiryl Miranovich sur LinkedIn
5 min de lecture

Parsed Streams et la Parsed Events API sont deux nouveaux produits de données décodées de Helius. Ils renvoient des transactions Solana entièrement décodées pour plus de 3 600 programmes à partir de leurs IDL onchain :

  • Comptes nommés
  • Arguments d’instruction nommés
  • Résumés en langage naturel
  • Tous les transferts de SOL et de tokens

Parsed Streams vous transmet les transactions correspondantes via WebSocket dès leur confirmation.

La Parsed Events API renvoie le même modèle décodé à la demande, via REST et GraphQL, pour n’importe quelle signature ou l’historique de n’importe quelle adresse.

Les deux sont aujourd’hui disponibles en bêta ouverte avec tous les forfaits payants.

Pourquoi est-il difficile de lire les transactions Solana ?

Lorsque vous interrogez des nœuds RPC standards pour savoir ce qui s’est passé dans une transaction, vous obtenez une liste d’adresses de comptes sans noms, ainsi que les données d’instruction sous la forme d’un bloc base58 opaque.

Pour transformer ces données en « ce wallet a échangé 1 500 SOL contre des PUMP sur Jupiter », vous devez traditionnellement :

  1. Récupérer la transaction et identifier chaque programme avec lequel elle a interagi
  2. Trouver l’IDL de chaque programme (son interface publiée), si elle existe
  3. Décoder les données d’instruction (généralement avec Borsh) à l’aide de cette IDL
  4. Associer les comptes positionnels à leur rôle : la troisième adresse est-elle l’autorité ou la destination ? Seule l’interface du programme le sait
  5. Parcourir récursivement les instructions internes (CPI), où se déroule l’essentiel de l’activité réelle, comme les mouvements de tokens au sein d’un swap
  6. Répéter l’opération pour chaque programme qui vous intéresse et tenir vos décodeurs à jour à mesure que les programmes publient de nouvelles versions

Cela représente des semaines de travail d’ingénierie avant même d’avoir répondu à une seule question. C’est aussi l’une des courbes d’apprentissage les plus abruptes lorsque vous débutez sur Solana. Les données de la blockchain sont publiques, mais elles ne sont pas lisibles.

Nous avons créé une couche de décodage côté serveur pour que vous n’ayez pas à le faire.

Que contient une réponse de Parsed Events ?

Chaque transaction est renvoyée après avoir été décodée à l’aide du catalogue d’IDL de Helius. 

Voici un véritable swap Jupiter, limité aux éléments essentiels :

Code
{
  "summary": {
    "type": "swap",
    "description": "GV6UUm… swapped 1500 SOL for 64672839.26195 PUMP via Jupiter",
    "parsedData": {
      "protocol": "jupiter",
      "in_amount": "1500000000000",
      "actual_out_amount": "64672839261950",
      "input_mint": "So11111111111111111111111111111111111111112",
      "output_mint": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn"
    }
  },
  "instructions": [
    {
      "programName": "jupiter",
      "instructionName": "shared_accounts_route_v2",
      "decoded": {
        "args": { "in_amount": "1500000000000", "slippage_bps": 2200 },
        "accounts": [
          { "name": "user_transfer_authority", "pubkey": "GV6UUm…", "isSigner": true },
          { "name": "source_mint", "pubkey": "So1111…" }
        ]
      }
    }
  ]
}

Au lieu de deviner ce que signifie la troisième adresse d’une liste de comptes, vous lisez "name": "user_transfer_authority". 

Les arguments sont également fournis sous forme décodée : "slippage_bps": 2200 au lieu d’octets bruts.

Et le champ summary au niveau de la transaction peut être présenté tel quel aux utilisateurs.

Chaque résultat inclut également les frais et leur payeur, les transferts natifs de SOL, les transferts SPL et Token-2022, ainsi que les erreurs décodées des programmes personnalisés lorsque les métadonnées sont disponibles. 

Pour les programmes absents du catalogue, les instructions utilisent à défaut les données et comptes bruts. Vous disposez donc toujours d’éléments exploitables.

Parsed Streams : des transactions décodées qui vous sont transmises

Parsed Streams est un service WebSocket qui surveille chaque transaction confirmée, la décode et vous transmet celles qui correspondent à votre filtre au niveau des instructions, côté serveur.

Vous n’avez jamais à traiter un flux massif de données ni à gérer un décodeur.

Un filtre se compose de cinq champs :

  1. programs
  2. instructionNames
  3. accounts (par inclusion ou par rôle nommé)
  4. includeCpi
  5. includeFailed

Par exemple, « chaque instruction de routage Jupiter impliquant ce wallet » s’écrit ainsi :

Code
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "parsedTransactionSubscribe",
  "params": [
    {
      "programs": ["JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4"],
      "instructionNames": ["route", "shared_accounts_route"]
    }
  ]
}

Chaque notification contient l’intégralité de la transaction décodée, tandis que matchedIndexes indique les instructions correspondant à votre filtre.

Comment obtenir les noms d’instructions des programmes Solana ?

Deviner les noms d’instructions est la cause la plus courante d’un filtre qui ne trouve silencieusement aucun résultat. Pour obtenir les noms d’instructions des programmes Solana, appelez describeProgram avec l’adresse de n’importe quel programme. Il renvoie les instructions, les événements et les rôles de comptes auxquels le moteur de correspondance compare votre filtre :

Code
{
  "id": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4",
  "name": "jupiter",
  "instructions": ["route", "shared_accounts_route", "exact_out_route"],
  "events": ["SwapEvent"],
  "roles": ["user_transfer_authority", "destination_token_account"]
}

Recherchez le programme, ajoutez les noms à votre filtre, puis abonnez-vous. 

Le guide de suivi des swaps Jupiter présente ce processus de bout en bout.

La Parsed Events API : des transactions décodées à la demande

Pour les recherches plutôt que les données en direct, la Parsed Events API applique sur demande le même décodage fondé sur le catalogue d’IDL.

Parse Transactions accepte des signatures et les renvoie sous forme décodée.

Parsed Transaction History parcourt par pages l’historique entièrement décodé d’une adresse et renvoie d’abord les transactions les plus récentes.

Code
curl -X POST "https://mainnet.helius-rpc.com/v1/parsed-events/transactions?api-key=YOUR_API_KEY" \
  -H "content-type: application/json" \
  -d '{"transactions": ["5xSKzM8bvpudE521jikHqASzMr23Ms4X4ieY3K8oFPFrJWCSSgYocJmHznrR8b12voDxKDH8ykdCLXSRrx6duVLH"]}'

Les deux méthodes sont également disponibles via GraphQL, afin que vous puissiez sélectionner uniquement les champs décodés dont votre application a besoin.

Parsed Events ou Enhanced Transaction API

Parsed Events succède à Enhanced Transactions API. 

Alors qu’Enhanced Transactions classait les transactions selon une liste fixe de types d’événements, Parsed Events décode chaque instruction à l’aide du catalogue d’IDL et utilise les données brutes au lieu de UNKNOWN pour les programmes non reconnus.

Si vous utilisez actuellement l’Enhanced Transactions API, le guide de migration établit la correspondance de chaque endpoint, paramètre et champ de réponse. Il inclut aussi un prompt que votre agent peut exécuter pour effectuer la migration à votre place.

Quel outil d’analyse me convient ?

Votre besoinSolution
Recevoir des transactions décodées en temps réel, filtrées côté serveurParsed Streams
Décoder une signature spécifique ou parcourir par pages l’historique d’une adresseParsed Events API
Accéder au flux brut avec un contrôle côté client et une latence minimale pour les transactions traitéesLaserStream
Accéder à l’historique brut des transactions et effectuer des rattrapages de données à grande échellegetTransactionsForAddress
Obtenir des objets lisibles représentant les transferts de tokens et de SOL natif pour une adresse de walletgetTransfersByAddress

Les deux nouveaux produits partagent le même moteur de décodage. Une transaction présente donc le même format, qu’elle provienne d’un stream ou d’un appel REST. Surtout, vous pouvez créer un prototype à partir de l’historique avec Parsed Events, puis passer aux données en direct avec Parsed Streams sans modifier votre code d’analyse.

Commencer

Parsed Streams et la Parsed Events API sont en bêta ouverte et disponibles avec tous les forfaits payants. Récupérez votre clé API dans le tableau de bord Helius.

Pour vous connecter, utilisez les endpoints suivants :

Parsed Streams : 

wss://fs-beta.helius-rpc.com/?api-key=YOUR_API_KEY

Parsed Events API : 

https://mainnet.helius-rpc.com/v1/parsed-events/...?api-key=YOUR_API_KEY

Guides

Le guide de démarrage rapide de Parsed Streams vous permet de recevoir votre première notification décodée en quelques minutes. Le guide de démarrage rapide de Parsed Events fait de même pour votre première signature analysée. 

Si vous avez des questions, contactez-nous sur Telegram ou Discord.

Abonnez-vous à Helius

Suivez les dernières actualités du développement sur Solana et recevez une notification à chaque publication