Firedancer : Une étape clé dans l'évolution de Solana
3 octobre 2024

Dans cet article
Firedancer est un nouveau client validateur pour la blockchain Solana, développé par Jump Crypto. Son objectif est d’améliorer la résilience et la scalabilité du réseau en diversifiant les clients validateurs, réduisant ainsi les risques de défaillance. En plus, Firedancer optimise la vitesse de traitement des transactions, pouvant potentiellement atteindre plus d’un million de transactions par seconde.
Introduction et contexte sur Solana
Après une année 2022 particulièrement compliquée et une renaissance entamée en 2023, l’année 2024 a été celle de la confirmation pour Solana. Le cours du SOL a connu une hausse de plus de 42 %, portant la capitalisation de Solana à près de 68 milliards de dollars. De nombreuses raisons permettent de l’expliquer, mais l’une d’entre elles est probablement le succès de la saison des memecoins, avec l’émergence ou l’explosion de cryptomonnaies comme BONK, POPCAT ou encore WIF, dont les performances ont battu tous les records.
Toutefois, ce succès n’a pas effacé les principaux défis auxquels fait face Solana. Que ce soit en termes de résilience ou de décentralisation, le protocole nécessite encore d’évoluer pour répondre aux exigences des entreprises et des utilisateurs. Dans ce contexte, nous avons décidé de nous plonger dans les fondamentaux de Firedancer, une initiative qui vise justement à aider Solana à surmonter certaines limitations.

Comprendre les validateurs et clients validateurs sur Solana
Avant de plonger dans les détails de Firedancer, il est essentiel de rappeler quelques concepts fondamentaux concernant Solana, en particulier : les validateurs et les clients validateurs.
Qu’est-ce qu’un validateur ?
Un validateur est un acteur clé d’une blockchain (ici, Solana), dont le rôle est de participer au fonctionnement du réseau en vérifiant et validant les transactions avant de les ajouter à la blockchain. Son rôle est essentiel pour assurer la sécurité et l’intégrité du réseau. En échange de ce travail, il reçoit des récompenses, mais peut aussi être pénalisé s’il agit de manière malveillante.
Actuellement, Solana compte 1379 validateurs. À titre de comparaison, Ethereum compte près de 1 077 000 validateurs.
Qu’est-ce qu’un client validateur ?
Pour interagir avec Solana, ou n’importe quelle autre blockchain, il est nécessaire d’exécuter un logiciel client, que l’on appelle souvent un nœud. Un client validateur est justement ce logiciel utilisé par les individus souhaitant participer au processus de validation des transactions sur une blockchain, notamment sur les réseaux Proof of Stake (PoS).
Le client validateur permet de proposer, vérifier et approuver des blocs tout en communiquant avec le reste du réseau. Il joue un certain nombre de rôles indispensables, tels que la gestion du staking et la sécurité des données du validateur. Vous l’aurez compris, avoir plusieurs clients validateurs différents renforce la résilience du réseau, car une défaillance dans un client n'affectera pas l'ensemble du réseau si d'autres clients continuent de fonctionner.
Actuellement, Solana compte 3 clients validateurs. À titre de comparaison, Ethereum compte 5 clients validateurs dits d’exécution.
Les défis actuels de Solana
Une blockchain est nécessairement confrontée au problème du trilemme : il est impossible de proposer un haut niveau de scalabilité, de sécurité et de décentralisation à la fois. Dans ce contexte, Solana a fait le choix de placer le curseur du côté de la scalabilité - et de la sécurité - au détriment de la décentralisation. Ce choix fait évidemment partie des raisons de la popularité du réseau, puisque la latence d’exécution et les frais de transactions sont extrêmement faibles, mais cela pose aussi des problèmes qu’il ne faut pas ignorer.
L’un des principaux soucis de Solana est la centralisation de ses clients validateurs. Le réseau dépend principalement de trois clients : le client principal de Solana Labs (écrit en Rust), le client Sig (écrit en langage de programmation Zig) et le client Jito-Solana (écrit en un fork de Rust). Cette concentration autour de langages similaires expose le réseau à des risques de défaillance ou d'attaques ciblées.
Effectivement, dans un effort de décentralisation du réseau, une blockchain devrait encourager la communauté à construire leur propre logiciel client dans différents langages de programmation. Ainsi, les nœuds validateurs auraient plusieurs options à leur disposition, ce qui limiterait les risques d’avoir un point de défaillance unique. C’est notamment le cas sur Ethereum, où il existe 5 clients différents pour l’exécution et 4 clients différents pour le consensus.
Cette absence de diversité des clients rend Solana vulnérable à des pannes en cascade en cas de bug ou de faille dans l’un des logiciels de validation. Par ailleurs, cela ne favorise pas l’innovation ; avoir une compétition saine entre différents logiciels clients indépendants inciterait à la proposition de nouveautés pouvant améliorer considérablement le réseau. Par conséquent, renforcer la diversité des clients validateurs est essentiel pour améliorer la résilience et la décentralisation du réseau.

Qu’est-ce que Firedancer ?
Firedancer est un nouveau client validateur indépendant pour la blockchain Solana, développé par Jump Crypto, une filiale de Jump Trading Group spécialisée dans le trading haute fréquence et les infrastructures technologiques. Il s'agit d'une réécriture complète du client validateur de Solana, initialement codé en Rust, écrit dans les langages C et C++.
L’ambition de Firedancer est d’accompagner Solana dans l’amélioration de ses capacités à traiter les informations et les transactions. Bien que Solana soit déjà une blockchain particulièrement rapide, avec une capacité théorique de 50 000 transactions par seconde (TPS), les limites ne sont jamais atteintes. L’introduction de Firedancer pourrait permettre, d’après les développeurs, d’atteindre un objectif de plus d'un million de TPS. De plus, ce nouveau client validateur indépendant pourrait permettre de renforcer la diversité, la résilience et donc la sécurité du réseau sur le long terme.
Comment Firedancer fonctionne-t-il ?
Firedancer devrait devenir le client validateur de Solana le plus rapide grâce à plusieurs optimisations clés, basées sur l'expertise de Jump en trading à haute fréquence et en informatique de haute performance. On rappelle que le développement de Firedancer est un processus continu. Cela signifie que Jump améliore constamment le client en identifiant et en optimisant les parties du code qui peuvent encore évoluer, même après le lancement initial. Voyons ensemble les principaux détails techniques utilisés pour améliorer la vitesse, la résilience et l’efficacité de ce client.
Réécriture complète en langage C
Firedancer est entièrement réécrit en langage C, un langage de programmation très performant et efficace sur le plan des ressources. Contrairement à d'autres langages plus abstraits comme Rust (utilisé par Solana Labs), C permet un contrôle plus précis sur la gestion de la mémoire et les interactions avec le matériel informatique.
Modularité et minimalisme
Contrairement au client de validation de Solana Labs, fonctionnant à la manière d’un processus unique, Firedancer est construit sur une architecture modulaire, c’est-à-dire que chaque composant du logiciel (réseau, moteur d'exécution, consensus, etc.) est conçu indépendamment des autres, comme de multiples processus individuels, appelés "tiles".
Cette approche permet d'optimiser chaque module séparément, sans introduire de dépendances complexes ou de points de ralentissement entre les différentes parties du système. Si un tile tombe en panne, ou qu’une mise à jour majeure doit être déployée, l'impact est limité au processus concerné, ce qui permet de maintenir le fonctionnement des autres parties du validateur sans nécessiter un redémarrage complet.
Optimisation du traitement des transactions
L'un des points critiques pour la performance d'une blockchain est la manière dont les données sont transmises et traitées sur le réseau. Firedancer optimise la gestion des données réseau pour réduire au maximum la latence. Effectivement, l’expertise de Jump dans la gestion des réseaux ultra-rapides pour les transactions financières a été utile pour ces différentes optimisations.
Pour entrer dans les détails, Firedancer propose une solution au problème de traitement des transactions en attente de validation sur le réseau Solana, ayant entraîné des pannes majeures en 2021. Le validateur client adopte un protocole baptisé QUIC, dont le but est de contrôler les flux entrants et d’améliorer la gestion du trafic et des communications afin d’éviter les attaques DDoS ou les soucis liés à la congestion. À noter que Firedancer a développé sa propre version de QUIC en langage C, en gommant certaines problématiques liées à son implémentation sur un réseau blockchain tel que Solana.
De plus, Firedancer utilise une architecture de réseau personnalisée reposant sur le système de Receive-Side Scaling (RSS), une technologie matérielle permettant de répartir le trafic sur plusieurs cœurs de processeur, améliorant ainsi le parallélisme sur Solana.
Optimisation du réseau et réduction de la latence
Firedancer est conçu pour traiter un très grand nombre de transactions par seconde (TPS). Cette amélioration est permise grâce à la gestion optimisée des flux de transactions entrantes (permise notamment par le protocole QUIC), mais également à travers une meilleure utilisation des ressources matérielles.
En effet, l’un des défis majeurs de la vitesse d'une blockchain est la latence physique, c'est-à-dire les limitations dues à la vitesse à laquelle les données peuvent se déplacer à travers un réseau ou un ordinateur. Kevin Bowers, directeur scientifique chez Jump, a expliqué que même la vitesse de la lumière peut parfois devenir un facteur limitant dans des systèmes dont la vocation est d’être ultra-rapides.
Ainsi, Firedancer introduit un nouveau mécanisme de parallélisme dans l'optimisation du calcul des vérifications de signatures (de type ED25519, pour information), en partant du principe que : “il est beaucoup plus facile de faire des choses indépendantes en parallèle que de faire une chose à la fois, même avec du matériel personnalisé”.
Toujours pour contourner les limitations techniques, Firedancer optimise non seulement le logiciel, mais aussi la manière dont les données sont transmises et traitées au niveau matériel. Ils utilisent des algorithmes dits “lock-free” qui permettent aux processeurs de traiter les données sans avoir à attendre les réponses d’autres processeurs.
Enfin, Firedancer a pris le parti d’utiliser des hardware FPGA (Field Programmable Gate Arrays) pour gérer ces tâches spécifiques d’optimisation. Les FPGA ont l’avantage de combiner une faible consommation d'énergie et une faible latence, surpassant les CPU et GPU traditionnels pour ces types de calculs intensifs (à titre d’information, un FPGA consomme environ 50 W, contre 300 W pour un GPU, et il peut traiter jusqu'à 8 millions de signatures par seconde, ce qui dépasse largement les performances des CPU et GPU).
État d’avancement de Firedancer
Firedancer a franchi plusieurs étapes importantes dans son développement et continue de progresser vers un déploiement complet sur le mainnet de Solana. L'une des avancées les plus notables est le lancement de Frankendancer, une version préliminaire, sur le mainnet de Solana. Cette nouvelle a été annoncée par Kevin Bowers, directeur scientifique chez Jump Crypto, lors de la conférence Solana Breakpoint à Singapour à la fin du mois de septembre 2024.
Frankendancer est un modèle hybride qui combine des éléments du client Firedancer, codé en C, avec certaines fonctionnalités existantes du client Solana Labs (nommé Agave) codé en Rust. Cette approche permet à l’équipe de Jump Crypto d’introduire progressivement les nouvelles fonctionnalités de Firedancer tout en assurant la compatibilité avec le reste de l’écosystème de Solana. Actuellement, Frankendancer prend en charge toutes les fonctionnalités réseau d'un validateur Solana.
Frankendancer fonctionne de manière parallèle au client Agave. Autrement dit, lors du lancement d’un validateur Frankendancer, le client Agave démarre également en simultané, ce qui permet d’assurer une continuité dans les opérations tout en testant les nouveaux composants du client Firedancer. En attendant le lancement complet de Firedancer, prévu pour la fin de 2024, Frankendancer continuera de fonctionner de cette manière.
Conclusion : Firedancer, un gamechanger pour Solana ?
En introduisant Firedancer, Jump Crypto permet à Solana de diversifier la base de clients validateurs, rendant le réseau plus résistant aux attaques ciblées et aux bugs. Si un client subit une faille, les autres clients, utilisant un langage de code différent, pourront maintenir le réseau en état de marche. Cette diversité réduit également les risques d'attaques DDoS, une menace courante pour les blockchains centralisées autour d'un nombre limité de clients.
Les nouveautés techniques proposées par Firedancer limitent les risques qu’un bug affectant un client ne paralyse l'ensemble du réseau et l’empêche de fonctionner correctement. On peut évidemment évoquer les différentes pannes survenues sur le réseau, où la blockchain Solana s'était retrouvée complètement arrêtée. Ainsi, Solana devient non seulement plus résilient, mais aussi plus sécurisé et décentralisé.
Comme évoqué dans cette analyse, Firedancer n’améliore pas seulement la résilience, il représente aussi un levier majeur pour la scalabilité de Solana. Grâce à un code optimisé, un choix stratégique de hardware et une gestion plus efficace des flux de transactions entrantes, Firedancer permettra de traiter un volume de transactions plus important, avec des temps de validation plus rapides. De plus, le support futur du sharding, introduit par Firedancer et jusqu’alors non supporté par la blockchain Solana, augmentera encore la capacité du réseau à gérer une charge croissante de transactions.
Ces améliorations permettront à Solana de rester compétitif sur le marché des blockchains, de plus en plus concurrentiel comme le montre notre dernier rapport d’activité sur les Layer 1, tout en offrant une expérience plus fluide à ses utilisateurs.