3 minutes
Modifications du compte Solana
Apprenez comment consommer les données de modification de compte Solana en utilisant Substreams.
Présentation
Ce guide vous accompagne dans le processus de mise en place de votre environnement, de configuration de votre premier flux Substreams et de consommation efficace des modifications de compte. À la fin de ce guide, vous aurez un flux Substreams opérationnel qui vous permettra de suivre les changements de compte en temps réel sur la blockchain Solana, ainsi que les données historiques des changements de compte.
NOTE : L’historique des modifications du compte Solana est daté de 2025, bloc 310629601.
Pour chaque bloc de comptes Substreams Solana, seule la dernière mise à jour par compte est enregistrée, voir la Référence Protobuf. Si un compte est supprimé, une charge utile avec deleted == True
est fournie. En outre, les événements de faible importance sont omis, tels que ceux dont le propriétaire spécial est le compte “Vote11111111…” ou les changements qui n’affectent pas les données du compte (par exemple, les changements de lamport).
NOTE : Pour tester la latence de Substreams pour les comptes Solana, mesurée par la dérive des têtes de blocs, installez la CLI Substreams et exécutez substreams run solana-common blocks_without_votes -s -1 -o clock
.
Introduction
Prérequis
Avant de commencer, assurez-vous que vous disposez des éléments suivants :
- Substreams CLI installé.
- Une [clé Substreams] (https://docs.substreams.dev/reference-material/substreams-cli/authentication) pour accéder aux données de modification du compte Solana (Solana Account Change).
- Connaissance de base de l’utilisation de l’interface de ligne de commande (CLI).
Étape 1 : Établir une connexion au flux Substreams des modifications de compte Solana
Maintenant que vous avez installé Substreams CLI, vous pouvez établir une connexion au flux Substreams des modifications de compte Solana.
- En utilisant le Module de base du compte Solana, vous pouvez choisir de diffuser les données directement ou d’utiliser l’interface graphique pour une expérience plus visuelle. L’exemple
gui
suivant filtre les données du compte Honey Token.
1substreams gui solana-accounts-foundational filtered_accounts -t +10 -p filtered_accounts="owner:TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA || account:4vMsoUT2BWatFweudnQM1xedRLfJgJ7hswhcpz4xgBTy"
- Cette commande permet de streamer les modifications apportées aux comptes directement dans votre terminal.
1substreams run solana-accounts-foundational filtered_accounts -s -1 -o clock
Le module de base permet de filtrer des comptes et/ou des propriétaires spécifiques. Vous pouvez adapter la requête en fonction de vos besoins.
Étape 2 : Intégrer les Substreams
Consommez le flux de modifications de compte directement dans votre application à l’aide d’un callback, ou rendez-le interrogeable en utilisant le sink SQL-DB.
Étape 3 : Mise en place d’une politique de reconnexion
La gestion du curseur garantit une continuité et une traçabilité sans faille en vous permettant de reprendre à partir du dernier bloc consommé si la connexion est interrompue. Cette fonctionnalité permet d’éviter les pertes de données et de maintenir un flux persistant.
Lors de la création ou de l’utilisation d’un sink, la responsabilité première de l’utilisateur est de fournir des implémentations de BlockScopedDataHandler et une ou plusieurs implémentations de BlockUndoSignalHandler qui ont l’interface suivante :
1import (2 pbsubstreamsrpc "github.com/streamingfast/substreams/pb/sf/substreams/rpc/v2"3)45type BlockScopedDataHandler = func(ctx context.Context, cursor *Cursor, data *pbsubstreamsrpc.BlockScopedData) error6type BlockUndoSignalHandler = func(ctx context.Context, cursor *Cursor, undoSignal *pbsubstreamsrpc.BlockUndoSignal) error