Passer au contenu principal

Premiers pas avec les flux

Mis à jour le
1er juillet 2026

Aperçu

Streams est une solution performante d'ingestion et de diffusion de données, conçue pour les applications Web3. Elle vous permet de collecter, de traiter et de stocker efficacement des données de blockchain, brutes ou filtrées, en temps réel et de manière historique. Que vous développiez des indexeurs, des plateformes d'analyse ou des tableaux de bord en temps réel, Streams fournit l'infrastructure nécessaire pour créer des pipelines de données robustes grâce à des fonctionnalités telles que le traitement par lots, le backfill et la diffusion en continu.

Pourquoi Streams ?

Streams révolutionne l'accès aux données de la blockchain en mettant en œuvre une architecture de type « push » qui transmet les données directement à vos systèmes de stockage ou d'indexation. Ce modèle piloté par les événements offre plusieurs avantages majeurs :


  • Transmission efficace des données: bénéficiez d'une transmission « exactly-once » des données de la blockchain dans l'ordre de finalité (lors des réorganisations de la blockchain, les blocs concernés peuvent être retransmis avec des données corrigées — voir « Gestion des réorganisations »)
  • Traitement en temps réel: accédez aux données de la blockchain au fur et à mesure qu'elles sont générées, ce qui est idéal pour créer des tableaux de bord en direct et des analyses en temps réel
  • Accès aux données historiques: complétez facilement les données historiques grâce à des tailles de lots configurables
  • Filtrage côté serveur: traitez et transformez les données sur l'infrastructure de Quicknode à l'aide de filtres JavaScript avant qu'elles n'atteignent votre système
  • Intégration transparente: connectez-vous directement à votre solution de stockage de données ou à votre backend de webhooks préférée

Alors que les méthodes traditionnelles de sondage JSON-RPC peuvent s'avérer complexes à mettre en œuvre et à maintenir, Streams offre une solution plus élégante qui gère à votre place les complexités liées à l'accès aux données de la blockchain.

Fonctionnalités de Streams


  • Filtrage basé sur JavaScript — Définissez des filtres personnalisés en JavaScript pour traiter et transformer les données de la blockchain sur l'infrastructure de Quicknode avant qu'elles n'atteignent leur destination. Ce filtrage côté serveur réduit le volume de données transférées et la charge de traitement.
  • Ingestion flexible des données — Streams prend en charge à la fois les données brutes de la blockchain et les ensembles de données filtrés. Utilisez des filtres JavaScript pour extraire précisément les données dont vous avez besoin pour votre cas d'utilisation (indexation ou analyse), qui seront ensuite traitées sur notre infrastructure.
  • Traitement historique et en temps réel - Créez des pipelines de données complets capables de gérer à la fois les données historiques et les flux en temps réel, idéaux pour les indexeurs et les plateformes d'analyse.
  • Livraison garantie des données — Streams assure la livraison « exactement une fois » des blocs, des accusés de réception et des traces dans l'ordre de finalité, garantissant ainsi l'intégrité des données pour vos systèmes d'indexation et d'analyse.
  • Traitement par lots efficace: configurez des lots de données composés de plusieurs blocs pour une ingestion optimale des données historiques.
  • Prise en charge de l'analyse en temps réel - Diffusez des données cohérentes en temps réel pour alimenter des tableaux de bord et des plateformes d'analyse en direct.
  • Transparence opérationnelle - Surveillez vos pipelines de données grâce à des journaux détaillés et à des indicateurs de performance, avec un suivi de l'utilisation permettant d'optimiser les coûts.

Cycle de vie des flux

Les flux sont des pipelines de données qui récupèrent, traitent et transmettent des données de blockchain vers vos systèmes de stockage ou d'indexation. Chaque flux peut être configuré pour gérer des types de données spécifiques (blocs, reçus, traces, etc.) et peut être personnalisé à l'aide de filtres afin de répondre à vos besoins en matière d'indexation ou d'analyse. Le cycle de vie d'un flux comprend les étapes suivantes :


  • Actif : Streams collecte et traite les données en continu selon votre configuration, puis les transmet à votre système de stockage ou à votre système backend.
  • En pause : vous pouvez suspendre temporairement l'ingestion et le traitement des données tout en conservant votre configuration de flux.
  • Résilié : L'importation des données a été interrompue en raison d'échecs de transmission.
    • Récupération automatique : lorsqu'un flux prend fin, le système tente automatiquement de le relancer à des intervalles croissants sur une période de 24 heures : 1 min, 2 min, 3 min, 5 min, 15 min, 30 min, 1 h, 6 h, 12 h, 18 h et environ 24 h.
    • Si le problème lié à la destination est résolu au cours d'une nouvelle tentative, le flux reprend là où il s'était arrêté.
    • Si toutes les tentatives échouent dans les 24 heures, le flux reste interrompu et un e-mail de notification est envoyé.
  • Terminé : le flux a traité avec succès toutes les données comprises dans la plage définie (pour les compléments historiques).

Filtrage JavaScript

Streams vous permet de définir des filtres JavaScript personnalisés qui traitent les données de la blockchain sur l'infrastructure de Quicknode avant qu'elles n'atteignent leur destination. Cette fonctionnalité de filtrage côté serveur offre plusieurs avantages :


  • Diffusez les données de votre choix: seules les données filtrées qui correspondent à vos critères sont envoyées vers votre destination, ce qui réduit les besoins en bande passante, en stockage et en puissance de calcul.
  • Transformations personnalisées: Transformez et enrichissez les données à l'aide de JavaScript avant qu'elles n'atteignent votre système, notamment :
    • Filtrage de types de transactions ou d'événements spécifiques
    • Extraction et transformation de champs spécifiques
    • Calcul des valeurs dérivées
    • Agrégation des données
  • Optimisation des performances: le traitement des données sur l'infrastructure de Quicknode réduit la charge de calcul pesant sur vos systèmes.
  • Filtrage flexible: Créer une logique de filtrage complexe en exploitant l'ensemble des fonctionnalités de JavaScript, notamment :
    • Expressions régulières pour la recherche de motifs
    • Opérations mathématiques pour le calcul des valeurs
    • Manipulation de tableaux et d'objets pour la transformation des données
    • Logique conditionnelle pour les règles de filtrage complexes

Les flux enverront les données utiles dans stream.data et les métadonnées contenues dans stream.metadata.

Remarque : Le nom du paramètre dans votre fonction de filtrage (par exemple, flux, charge utile, données) est arbitraire — ce qui importe, c'est la forme de l'objet transmis, qui contient toujours .data et .métadonnées propriétés.

Exemples de filtres

Filtre du programme de staking Solana

Ce filtre identifie toutes les transactions réussies dans chaque bloc qui contiennent au moins une instruction envoyée au programme de staking de Solana — telle qu’un staking, un unstaking ou un transfert de staking :

function main(stream) {
const STAKE_PROGRAM = "Stake11111111111111111111111111111111111111";
const matches = [];

for (const block of stream.data) {
for (const tx of block.transactions) {
if (!tx.meta || tx.meta.err) continue;

const stakeInstructions = (tx.transaction.message.instructions || []).filter(
ix => ix.programId === STAKE_PROGRAM
);

if (stakeInstructions.length) {
matches.push({
signature: tx.transaction.signatures[0],
blockTime: block.blockTime,
instructionCount: stakeInstructions.length,
programId: STAKE_PROGRAM
});
}
}
}

return matches.length ? matches : null;
}

Filtre de transfert ERC-20 Ethereum

Ce filtre traite les événements de transfert ERC-20 à l'aide de l'ensemble de données « block with receipts », en décodant les journaux à l'aide de l'ABI ERC-20 :

function main(stream) {
const ERC20_ABI = [{
name: "Transfer",
type: "event",
anonymous: false,
inputs: [
{ name: "from", type: "address", indexed: true },
{ name: "to", type: "address", indexed: true },
{ name: "value", type: "uint256", indexed: false }
]
}];

const receipts = stream.data.flatMap(block => block.receipts || []);
const decoded = decodeEVMReceipts(receipts, [ERC20_ABI]);

const erc20Transfers = decoded.filter(r =>
r.decodedLogs?.some(log => log.name === "Transfer")
);

return erc20Transfers.length ? { receipts: erc20Transfers } : null;
}

Ce filtre montre comment :

  • Utiliser le bloc avec l'ensemble de données des reçus
  • Définir et utiliser une ABI pour le décodage des événements
  • Traiter les journaux décodés pour extraire les événements de transfert ERC-20
  • Ne renvoyer que les reçus mentionnant des événements pertinents

Disponibilité des fonctionnalités

Streams est accessible à tous les utilisateurs disposant d'un forfait Quicknode. Pour les équipes ayant des besoins spécifiques, nous proposons des ensembles de données sur mesure, une assistance dédiée et des intégrations personnalisées. Contactez notre équipe pour plus d'informations. Pour découvrir le détail complet des fonctionnalités de Streams par forfait, rendez-vous sur la page des tarifs. \

Solana est disponible en streaming avec les formules d'essai gratuit

Les comptes d'essai gratuits ne permettent de créer que des flux Solana qui suivent en temps réel la pointe de la blockchain (c'est-à-dire qui s'abonnent aux nouveaux blocs au fur et à mesure de leur création). Le remplissage historique des flux Solana n'est disponible que dans les formules payantes.

Cette restriction s'applique uniquement à Solana Streams. Toutes les autres chaînes sont disponibles dans le cadre des formules d'essai gratuit, avec un historique complet des données.

Accès

Accédez à Streams via le portail des développeurs Quicknode et via l'API REST de Streams.

Chaînes prises en charge

La diffusion en continu peut être rapidement mise en place pour n'importe laquelle des chaînes et des réseaux pris en charge mentionnés ci-dessous. Si votre équipe a des besoins spécifiques, n'hésitez pas à contacter notre équipe pour plus d'informations. Sinon, notre solution en libre-service vous permet de diffuser sur les chaînes suivantes :

ChaîneMainnetTestnets
0gRéseau de test Galileo
AbstractTestnet
ArbitrumSepolia
Arbitrum Nova
ArcTestnet
AultTestnet
Chaîne C d'AvalancheFuji
B3Sepolia
BaseSepolia
BeraBepolia
BitcoinTestnet4
Bitcoin CashTestnet
BlastSepolia
BNB Smart ChainTestnet
Celo
CyberSepolia
Dogecoin
EthereumHoodi, Sepolia
Fantom
FlareTestnet
FlowTestnet
FluentTestnet
Fraxtal
Gnosis
Gravity
HederaTestnet
HemiTestnet
EVM hyperliquideTestnet
Hyperliquid Hypercore
zkEVM immuableTestnet
InjectiveTestnet
InkSepolia
Chaîne ouverte du Japon
KaiaTestnet
Katana
LensTestnet
Linea
Lisk
LitecoinTestnet
MantleSepolia
MegaETH
MocaTestnet
Mode
MonadTestnet
MorphHoodi
OptimismSepolia
Peaq
PlasmaTestnet
PolygonAmoy
Polygon zkEVMRéseau de test Cardona
RobinhoodTestnet
SaharaTestnet
ScrollTestnet
SeiTestnet
SolanaDevnet, Testnet
Soneium
Sonic
Sophon
StellarTestnet
DONNÉESRéseau de test Aeneid
TempoTestnet
Tron
UnichainSepolia
VanaRéseau de test Moksha
WorldchainSepolia
X LayerTestnet
XaiSepolia
XRP LedgerTestnet
XRPL EVMTestnet
zkSyncSepolia
Zora

Optimisation de votre pipeline de données


  • Optimisation des destinations: Assurez-vous que votre système de stockage ou d'indexation est correctement configuré pour gérer le débit des données entrantes. Cela implique notamment :
    • Optimisation des index de base de données et des schémas d'écriture
    • Configuration de tailles de mémoire tampon appropriées
    • Mise en place de stratégies efficaces de partitionnement des données
    • Important: Streams traite les blocs de manière séquentielle et ne passe pas au bloc ou au lot suivant tant qu’il n’a pas reçu la confirmation que le bloc ou le lot en cours a bien été transmis à votre destination. Cela garantit la cohérence des données, mais implique que votre destination doit être en mesure de traiter et d’accuser réception de chaque bloc ou lot dans un délai raisonnable.
  • Suivi des performances: consultez régulièrement votre tableau de bord Streams pour surveiller votre utilisation et ajuster vos flux si nécessaire.
  • Adapter votre pipeline: si vous constatez que vos besoins en données dépassent les limites de votre forfait actuel, envisagez de passer à un forfait supérieur.

Comprendre la facturation de Streams

Streams consomme des crédits API en fonction du nombre de blocs traités par votre Stream, selon le multiplicateur lié au réseau et au jeu de données. Streams utilise les crédits API provenant du même pool de crédits partagé que RPC.

Le nombre de crédits utilisés dépend :

  • Réseau — Les différentes chaînes de blocs ont des cadences de production de blocs différentes
  • Type de jeu de données — Les jeux de données plus complexes (comme les traces) consomment davantage de crédits que les jeux de données de base (comme les blocs)

Estimez vos coûts

Utilisez le calculateur de crédits API pour estimer vos coûts mensuels en fonction de votre configuration spécifique. Ce calculateur vous permet de :

  • Comparer les coûts entre différents réseaux et types de jeux de données
  • Calculer à la fois les coûts de transport des déchets (en temps réel) et les coûts de remblayage (historiques)

Choisir la bonne configuration

  • Sélectionnez l'ensemble de données approprié: Choisissez l'ensemble de données minimal qui répond à vos besoins (par exemple, utilisez bloc au lieu de bloc_avec_reçus (si vous n'avez pas besoin des détails de la transaction). Le choix de l'ensemble de données a une incidence directe sur la consommation de crédit.
  • Utilisez des filtres pour structurer vos données: appliquez des filtres JavaScript afin de ne transmettre que les données dont votre application a besoin, ce qui permet d'optimiser votre pipeline de données et le traitement en aval.
  • Surveillez votre consommation: vérifiez régulièrement votre consommation de crédits afin de mieux comprendre vos habitudes d'utilisation et d'ajuster vos flux si nécessaire.

Foire aux questions

Qu'est-ce que Quicknode Streams ?
Streams est une solution d'ingestion et de streaming de données destinée aux applications Web3, qui vous permet de collecter, traiter et stocker efficacement des données de blockchain, brutes ou filtrées, en temps réel et de manière historique.
Comment puis-je accéder à Quicknode Streams ?
Vous pouvez accéder à Streams via le portail des développeurs Quicknode ou via l'API REST de Streams.
Qu'est-ce que le filtrage JavaScript dans Streams ?
Le filtrage JavaScript vous permet de définir des filtres personnalisés qui traitent les données de la blockchain sur l'infrastructure de Quicknode avant qu'elles n'atteignent leur destination, ce qui réduit le volume de transfert de données et la charge de traitement sur vos systèmes.

Découvrez comment utiliser les filtres avec Streams.
Quels types de destinations Streams prend-il en charge ?
Les flux peuvent transmettre des données directement vers votre solution de stockage, vos systèmes d'indexation ou vos backends de webhooks de votre choix, tout en prenant en charge le traitement par lots et la transmission en temps réel.
Comment Streams garantit-il la fiabilité des données ?
Streams assure une transmission « exactly-once » des blocs, des accusés de réception et des traces dans l'ordre de finalité, et traite les blocs de manière séquentielle, en attendant la confirmation que chaque bloc ou lot a bien été transmis avant de poursuivre.
Quels sont les réseaux blockchain pris en charge par Streams ?
Streams prend en charge plus de 50 chaînes, notamment Ethereum, Solana, Bitcoin, Arbitrum, Base, Polygon, Avalanche et bien d'autres encore, tant sur les réseaux principaux que sur les réseaux de test. Consultez la liste complète des chaînes prises en charge ci-dessus.

Nous ❤️ les commentaires !

Si vous avez des commentaires ou des questions concernant cette documentation, faites-le nous savoir. Nous serions ravis de vous entendre !

Partager ce document