Retour aux questions fréquentes

Qu'est-ce que Substreams ?

Mis à jour en août 2026

Substreams est un moteur de transformation de données parallèle pour les blockchains. Vous écrivez de petits modules en Rust qui décrivent quelles données onchain vous voulez et comment les façonner, et Substreams les exécute sur tout l'historique d'une chaîne en parallèle — puis continue à diffuser les données au fur et à mesure que de nouveaux blocs arrivent.

C'est une couche de calcul, pas une base de données ni une API. La sortie va où vous l'envoyez : une table Postgres ou ClickHouse, un topic Kafka, un subgraph, ou directement dans votre application.

En quoi Substreams diffère-t-il d'un indexeur classique ?

La plupart des indexeurs traitent une chaîne bloc par bloc. C'est très bien à la tête de chaîne, mais pénible pour l'historique — remplir des années de données de façon séquentielle peut prendre des jours, voire des semaines.

Substreams découpe le traitement historique en segments et les exécute en parallèle, puis bascule en diffusion en direct une fois rattrapé. L'historique complet et les données en temps réel proviennent du même moteur et du même code de module.

Les modules sont aussi composables : un module qui décode les événements d'un contrat peut alimenter un autre module qui les agrège, et chacun peut être publié pour que d'autres le réutilisent. Des packages prêts à l'emploi sont disponibles dans le registre.

Dois-je écrire du Rust ?

Non — et c'est la partie qui a le plus changé récemment. Il existe trois façons d'obtenir un package Substreams, et une seule implique d'écrire du Rust à la main.

Réutiliser un package. Le registre contient des packages prêts à l'emploi pour les cas courants. Pointez-en un vers un sink et c'est terminé.

Décrire ce que vous voulez à un assistant IA. StreamingFast publie cinq compétences d'agent open source qui donnent aux assistants de codage IA une réelle expertise en Substreams : substreams-dev (manifestes, modules Rust, schémas protobuf), substreams-sql (schémas de sink Postgres et ClickHouse), substreams-sink (consommer la sortie en Go, JavaScript, Python, Rust), substreams-sink-deploy (exécuter des sinks en production) et substreams-testing. Elles fonctionnent dans Claude Code, Cursor et VS Code.

Une fois installées, vous décrivez en langage naturel les données que vous voulez et l'assistant construit le package.

Ceci a été mesuré, pas seulement affirmé. Dans une évaluation publiée, un agent IA a reçu des prompts en anglais simple pour 14 tâches sur Ethereum et Solana — des statistiques de bloc simples jusqu'au pricing Uniswap V3, aux swaps Raydium CLMM et à un sink Postgres. Chaque projet a été construit et exécuté avec succès, et 12 des 14 correspondaient à une sortie de référence octet pour octet. Deux tâches ont été menées à bien sans aucun ABI ni IDL, l'agent déduisant ce dont il avait besoin directement du code source Solidity et Rust.

L'évaluation documente aussi où cela échoue — des prompts vagues produisent des suppositions confiantes plutôt que des questions de clarification, et les tokens ERC-20 non standards peuvent provoquer des échecs de décodage de champs. Soyez précis sur ce que vous voulez.

L'écrire vous-même. Du Rust compilé en WebAssembly, en deux types de modules :

Ce qu'il faitUsage typique
modules mapPrennent un bloc, retournent des données extraites ou transforméesDécoder les transferts d'un contrat
modules storeAccumulent un état à travers les blocsSoldes courants, totaux, agrégats

Vous chaînez ces modules dans un pipeline défini par un manifeste.

Où Substreams peut-il envoyer des données ?

Vers une base de données (PostgreSQL, ClickHouse, MongoDB, BigQuery), une file de messages (Kafka, PubSub), un subgraph, ou directement dans votre propre application via gRPC. Ces destinations sont appelées des sinks, et c'est pour cela que Substreams intervient plutôt dans les décisions d'architecture de pipeline que dans les décisions du type « quelle API appeler ».

Quelles chaînes sont prises en charge ?

Ethereum, Solana, Base, Arbitrum, Optimism, Polygon, BNB Chain, Avalanche, Bitcoin, NEAR et Injective, pour n'en citer que quelques-unes. Voir The Graph Market pour une liste complète.

Substreams tourne sur Firehose, qui extrait les données sous-jacentes. Le modèle de données de Firehose est particulièrement riche — arbres d'appels, changements d'état et changements de solde, pas seulement des logs — ce qui permet aux modules d'atteindre des données que les indexeurs basés sur les logs ne peuvent pas voir.


Questions fréquentes

Dois-je connaître Rust pour utiliser Substreams ? Non. Vous pouvez réutiliser un package du registre, ou installer les compétences d'agent Substreams open source et laisser un assistant de codage IA construire un package sur mesure à partir d'une description en langage naturel. Écrire du Rust à la main est désormais la troisième option, pas la première.

Substreams est-il open source ? Oui. Substreams et Firehose sont développés en open source par StreamingFast sous licence Apache 2.0, et peuvent être auto-hébergés.

En quoi Substreams diffère-t-il d'un subgraph ? Un subgraph est une définition d'indexation hébergée qui produit une API GraphQL. Substreams est un moteur de transformation qui peut envoyer sa sortie vers de nombreuses destinations, y compris un subgraph. Les subgraphs propulsés par Substreams utilisent Substreams pour l'étape d'extraction et de transformation.


Substreams est permissionless — obtenez une clé API sur thegraph.market et commencez à diffuser. Aucune information personnelle requise.

Voir aussi : Qu'est-ce qu'un Firehose blockchain ? · Quelle est la différence entre Firehose et Substreams ? · Qu'est-ce que l'indexation blockchain ?