
Écouter les événements on-chain sur Solana
Introduction
L’une des tâches les plus fondamentales pour un développeur dans la crypto consiste à mettre en place des systèmes qui écoutent la blockchain. Vous pouvez surveiller les confirmations de paiement, les ventes de NFT, les transferts de fonds ou simplement des comptes à des fins de sécurité. Quel que soit votre cas d’usage, il est essentiel que les systèmes conçus pour surveiller la blockchain soient tolérants aux pannes, fiables et optimisés pour la latence.
Dans cet article, nous allons présenter plusieurs méthodes pour créer de tels systèmes sur Solana, quelques exemples de cas d’usage et la manière dont Helius peut vous aider à concevoir de meilleurs systèmes à l’avenir.
Écouter la blockchain
Il existe deux principales méthodes pour écouter les événements on-chain :
- Interrogation périodique
- Streaming
L’interrogation périodique est une méthode par laquelle le client ou l’application vérifie régulièrement si de nouvelles données sont disponibles sur un serveur ou auprès d’une source de données. Cette vérification peut être effectuée à intervalles définis ou à la demande. Lorsqu’une requête est envoyée au serveur, celui-ci répond avec les données les plus récentes, qu’elles aient changé ou non. Le client ou l’application peut donc recevoir les mêmes données à plusieurs reprises, même en l’absence de mise à jour.
Avec le streaming, en revanche, le serveur envoie les données au client ou à l’application dès qu’une mise à jour est disponible. Le client n’a donc pas besoin de demander les données de manière répétée, et le serveur ne les envoie qu’en cas de changement. Le transfert de données est ainsi plus efficace et s’effectue en temps réel, car le serveur n’envoie que les données pertinentes.
Bien que l’interrogation périodique soit une technique simple et largement utilisée, elle peut générer un trafic réseau élevé et consommer beaucoup de ressources, surtout lorsque les requêtes sont fréquentes. Le streaming est plus efficace, car le serveur n’envoie que les mises à jour, ce qui réduit le volume de données transférées et le trafic réseau.
Le streaming est généralement utilisé dans les applications où les mises à jour en temps réel sont essentielles, comme les flux boursiers, les réseaux sociaux et les jeux en ligne. L’interrogation périodique est plus courante dans les applications où les mises à jour sont moins fréquentes ou moins critiques, comme les clients de messagerie ou les sites d’actualité.
Bien que les deux techniques présentent des avantages et des inconvénients, le streaming est généralement la méthode privilégiée et la plus efficace pour les mises à jour en temps réel. L’interrogation périodique reste toutefois utile pour certaines applications où les données sont mises à jour moins fréquemment.
Pour la plupart des workflows sur les blockchains, et en particulier sur Solana, privilégiez le streaming. Plusieurs raisons l’expliquent, mais le streaming sera beaucoup plus simple à mettre en œuvre et plus facile à gérer pour les cas d’usage à fort trafic, une spécialité de Solana.
Comment écouter les événements on-chain sur Solana
Solana est une blockchain très rapide. Elle produit de nouveaux blocs toutes les 400 ms, et ceux-ci contiennent généralement des milliers de transactions. Le plus surprenant, c’est qu’elle ne sera jamais plus lente qu’aujourd’hui. À mesure que les ingénieurs principaux continuent d’améliorer le système, le volume de nouvelles données traitées par la blockchain ne fera qu’augmenter. Il est donc essentiel de concevoir vos systèmes en gardant l’évolutivité à l’esprit.
Heureusement, plusieurs méthodes permettent d’écouter les données on-chain sur Solana :
- Interrogation périodique
- WebSockets
- Geyser
- Webhooks Helius
Interrogation périodique
C’est la méthode la moins recommandée pour écouter les événements sur Solana, même si elle est sans doute la plus simple sur le plan conceptuel.
Selon les données que vous souhaitez obtenir, il vous suffit de configurer une boucle qui appelle de manière répétée une méthode JSON-RPC sur un nœud RPC Solana. Les cas d’usage courants incluent l’interrogation de la méthode getBlock pour écouter les nouveaux blocs ou de `getSignaturesForAddress` pour rechercher de nouvelles transactions associées à une adresse donnée.
Curieusement, cette méthode peut également être la meilleure pour les cas d’usage très avancés qui nécessitent une logique hautement personnalisée afin de déclencher de nouvelles mises à jour.
WebSockets
Les RPC Solana proposent également des WebSockets PubSub auxquels les développeurs peuvent se connecter. Les types d’événements disponibles sont les suivants :
- accountUnsubscribe
- accountSubscribe
- logsSubscribe
- logsUnsubscribe
- programSubscribe
- programUnsubscribe
- signatureSubscribe
- signatureUnsubscribe
- slotSubscribe
- slotUnsubscribe
Voici un court exemple de code JavaScript permettant d’écouter les modifications d’un compte via un RPC Helius, qui prend en charge les WebSockets :
const solanaWeb3 = require(‘@solana/web3.js’)
const connection = new solanaWeb3.Connection(“https://rpc.helius.xyz?api-key=“);
(async () => {
connection.onAccountChange(
new solanaWeb3.PublicKey(“5yv6Vh8FNx93TXeSS94xy8VLZMbTqx4vXp7Zg5bDLZtE”),
(updatedAccountInfo, context) => console.log(“Updated account info: “, updatedAccountInfo),“confirmed” );
})();Les WebSockets présentent une limite très importante : bien qu’ils soient très utiles pour le prototypage, nous avons constaté qu’ils étaient en pratique assez fragiles et peu fiables. Il est fortement déconseillé de les utiliser pour des workflows critiques, car vous manquerez des événements.
Geyser
En bref, les nœuds Solana peuvent vous transmettre directement leurs données en streaming grâce à une interface de plugin qui permet de personnaliser leur réception. Il s’agit de la méthode de streaming de données la plus rapide et offrant la latence la plus faible sur Solana. Elle est indispensable pour les liquidations DeFi et les applications sensibles à la latence.
Les validateurs et RPC Solana disposent d’une méthode de streaming de données unique et native de Solana : les plugins Geyser.
Les validateurs ont été améliorés afin de prendre en charge un mécanisme de plugin, appelé plugin « Geyser », qui permet de transmettre les informations relatives aux comptes, aux slots, aux blocs et aux transactions vers des systèmes de stockage de données externes, tels que des bases de données relationnelles, des bases de données NoSQL ou Kafka. Des services RPC peuvent ensuite être développés pour exploiter les données de ces systèmes de stockage externes et permettre des optimisations plus flexibles et ciblées, comme la mise en cache et l’indexation.
Malheureusement, la configuration de Geyser peut être assez complexe et coûteuse. Même une fois celle-ci terminée, un travail DevOps conséquent est nécessaire pour garantir son bon fonctionnement. Heureusement, Helius a développé GeyserVM, qui vous permet de téléverser vos plugins et de les exécuter en quelques secondes seulement. Nos clusters redondants et hautement disponibles vous évitent tout souci lié aux données. Et comme les ressources sont partagées, vous pouvez économiser plus de 200 % sur vos coûts mensuels !
Si vous souhaitez un service Geyser-as-a-Service dédié, nous le proposons bien entendu également. Cliquez ici pour en savoir plus.
Webhooks
Le principe des webhooks est simple. Ils écoutent les événements et les envoient à un serveur que vous avez configuré dès qu’ils se produisent. Par exemple, vous pouvez envoyer une notification à votre serveur Discord chaque fois qu’une vente de NFT a lieu : un webhook permet de le faire très facilement.
Pour la plupart des workflows d’écoute d’événements sur Solana, les webhooks constituent la méthode la plus simple, la plus flexible et la plus économique. Ils ne devraient vous faire hésiter que pour les cas d’usage exigeant une latence extrêmement faible, où un écart de 5 ms peut assurer ou compromettre le fonctionnement de votre application, comme dans le trading à haute fréquence.
Chez Helius, nous avons créé l’offre de webhooks la plus robuste de tout l’écosystème crypto.
Vous pouvez écouter jusqu’à 100 000 adresses avec un seul webhook, configurer les types d’événements que vous souhaitez écouter — nous les analysons pour vous — puis simplement indiquer l’URL de votre serveur. C’est tout ce dont vous avez besoin pour commencer gratuitement.
Parmi les nombreux avantages d’un tel service, vous économisez non seulement des semaines ou des mois de travail et d’efforts de développement, mais vous bénéficiez également d’un backend élastique qui évolue avec vous.
Cas d’usage
Vous savez maintenant comment écouter les événements on-chain sur Solana. Que faire ensuite ? Voici quelques cas d’usage qui pourraient vous intéresser :
Bots
- Lorsqu’un NFT est mis en vente sur la marketplace X, déclenchez une action « nft buy ».
- Lorsqu’une position sur marge devient risquée, déclenchez une action « liquidation ».
Surveillance et alertes
- Lorsqu’un programme émet un log spécifique, déclenchez l’intégration PagerDuty.
- Lorsque le solde d’un compte de tokens varie de plus de X %, utilisez Dialect pour communiquer un avertissement.
Indexation pilotée par les événements
- Lorsqu’une transaction se produit pour un programme donné, envoyez-la directement à votre base de données ou à votre backend.
Notifications et suivi de l’activité
- Lorsqu’un transfert est effectué du wallet X vers le wallet Y, envoyez une notification Slack ou un e-mail.
Analyses et logs
- Lorsque l’événement X se produit, envoyez-le à un pipeline ETL ou stockez-le directement sur Helius afin d’observer les tendances au fil du temps.
Automatisation des workflows
- Lorsque l’événement X se produit, déclenchez n’importe quel ensemble d’actions.
Conclusion
Dans cet article, nous avons présenté les différences entre l’interrogation périodique et le streaming, les différentes méthodes permettant d’écouter la blockchain Solana ainsi que quelques exemples de cas d’usage.
En conclusion, vous pouvez écouter les événements on-chain sur Solana avec l’interrogation périodique, les WebSockets, Geyser ou les webhooks Helius. Chaque méthode présente des avantages et des inconvénients. Il est donc important de tenir compte des exigences de vos systèmes avant de choisir l’approche à mettre en œuvre. Merci de nous avoir lus !
Articles associés
Abonnez-vous à Helius
Suivez les dernières actualités du développement sur Solana et recevez une notification à chaque publication


