Puis-je obtenir l'historique complet et les données en temps réel depuis une seule source ?
Mis à jour en août 2026
Oui. Substreams traite l'historique complet d'une chaîne en parallèle puis continue de diffuser au fur et à mesure que de nouveaux blocs arrivent, en utilisant le même code de module pour les deux. Vous définissez votre transformation une seule fois et elle sert à la fois le backfill et les données en direct.
C'est inhabituel. La plupart des outils de données blockchain font bien l'un des deux et mal l'autre, ce qui explique pourquoi les équipes finissent si souvent par faire tourner deux systèmes.
Pourquoi la plupart des équipes finissent-elles avec deux pipelines ?
Parce que les deux problèmes tirent dans des directions opposées.
La diffusion en temps réel optimise pour la latence. Les systèmes conçus pour cela — plugins Geyser, Yellowstone gRPC, services de webhook — ne conservent qu'un tampon limité de données récentes, car c'est tout ce dont un flux à faible latence a besoin. Demandez-leur l'an dernier, ils ne peuvent pas vous aider.
L'accès historique optimise pour l'exhaustivité. Les archive nodes et les outils d'extraction par lots peuvent atteindre n'importe quel bloc, mais ne sont pas conçus pour délivrer le bloc courant en moins d'une seconde.
Les équipes construisent donc les deux : un consommateur de flux pour le direct, une tâche par lots pour l'historique, et une couche de réconciliation pour recoller les deux à la frontière. C'est à cette frontière que vivent les bugs — enregistrements dupliqués, trous lors des redémarrages, et deux implémentations de la même logique métier qui finissent par diverger.
| Outils de diffusion seule | Outils historiques seuls | Substreams | |
|---|---|---|---|
| Données en direct | Oui | Non | Oui |
| Historique complet | Non — fenêtre de replay limitée | Oui | Oui |
| Même code pour les deux | — | — | Oui |
| Couche de réconciliation nécessaire | Oui | Oui | Non |
Comment un seul moteur fait-il les deux ?
En séparant l'extraction de la transformation. Firehose extrait les données blockchain une seule fois et les stocke sous forme de flat files, tout en servant aussi les blocs en direct. Les données historiques et les données en direct sont donc, du point de vue du consommateur, la même chose — un flux de blocs — qui ne diffère que par le fait de provenir du stockage ou de la tête de chaîne.
Substreams exécute vos modules sur ce flux. Pour l'historique, il découpe la plage en segments et les traite en parallèle ; une fois rattrapé, il continue bloc par bloc. La transition est automatique et votre module ne voit pas la différence.
Qu'est-ce que cela change en pratique ?
Une seule implémentation de votre logique. Un changement dans la façon de décoder un swap s'applique à l'historique et aux données en direct simultanément, car c'est un seul et même code.
Les backfills cessent d'être des projets. Changer votre schéma signifie ré-exécuter le module sur l'historique, pas planifier une migration.
Pas de bugs de frontière. Il n'y a pas de rupture entre les données historiques et les données en direct, donc rien à réconcilier.
Une gestion cohérente des réorganisations de chaîne. Le même mécanisme de curseur s'applique tout du long, plutôt que d'être géré dans le chemin de diffusion et ignoré dans le chemin par lots.
Questions fréquentes
Jusqu'où puis-je remonter ? L'historique complet de la chaîne, depuis le genesis, sur les réseaux pris en charge.
Le traitement historique est-il plus lent que la diffusion ? Il est limité par le débit parallèle plutôt que par le temps de bloc, donc les grandes plages sont traitées bien plus vite que le temps réel. Une fois rattrapé, vous recevez les blocs au fur et à mesure de leur production.
Dois-je configurer la bascule entre historique et direct ? Non. Vous spécifiez un bloc de départ ; le moteur gère la transition.
Obtenez une clé API sur thegraph.market et diffusez les deux — aucune information personnelle requise.
Voir aussi : Qu'est-ce que Substreams ? · Polling vs diffusion des données blockchain · Comment remplir un historique de données blockchain (backfill) ?