En bref : les blockchains ralentissent lorsque la demande d’espace dans les blocs dépasse la capacité de traitement du réseau. Les causes les plus courantes sont la congestion du réseau (un trop grand nombre de transactions se disputant une capacité de bloc limitée), le gonflement de l’état (des besoins de stockage croissants qui augmentent le coût de calcul lié au traitement de chaque bloc), la surcharge liée au consensus (des coûts de communication qui augmentent proportionnellement au nombre de validateurs) et les limitations de l’infrastructure (nœuds lents, points de terminaison RPC à forte latence et pipelines de données inefficaces). Ces ralentissements se traduisent par des délais de confirmation plus longs, des frais plus élevés, des données obsolètes dans les applications et une expérience utilisateur dégradée. Certaines causes sont inhérentes à la conception même de la blockchain, tandis que d’autres peuvent être atténuées grâce à une meilleure infrastructure.
L'explication simple
Le terme « lent » revêt différentes significations selon la personne à qui l'on s'adresse. Pour un utilisateur final qui effectue une transaction, « lent » signifie devoir attendre plusieurs minutes, voire plusieurs heures, pour obtenir une confirmation, au lieu de quelques secondes. Pour un développeur qui gère un pipeline de données, « lent » signifie prendre du retard par rapport à la pointe de la chaîne et fournir des données obsolètes. Pour un trader DeFi, « lent » signifie recevoir les mises à jour des cours avec du retard et passer à côté d'opportunités d'arbitrage. Chaque type de ralentissement a des causes profondes et des solutions différentes.
Au niveau du protocole, les blockchains ont des limites de performance strictes déterminées par leur mécanisme de consensus, les paramètres des blocs et leur environnement d’exécution. Ces limites existent de par leur conception, et non par hasard. Elles constituent le prix à payer pour la décentralisation et la sécurité. Lorsque la demande atteint ces limites, le réseau ne s’effondre pas. Il se dégrade en douceur en augmentant les frais (ce qui exclut les transactions de faible valeur) et en allongeant les délais de confirmation (ce qui oblige les utilisateurs à attendre plus longtemps). Mais du point de vue de l'utilisateur, cette « dégradation en douceur » reste perçue comme une lenteur.
Au niveau de l’infrastructure, la blockchain elle-même peut fonctionner normalement, mais les outils utilisés par votre application pour interagir avec elle peuvent constituer un goulot d’étranglement. Une interface RPC ( endpoint ) lente ou surchargée ajoute de la latence à chaque requête. Un pipeline de données basé sur l’interrogation (polling) introduit des retards entre la production des blocs et la disponibilité des données. Un nœud sous-dimensionné se retrouve à la traîne par rapport à la pointe de la chaîne. Ces ralentissements au niveau de l’infrastructure ont souvent un impact plus important (et sont plus faciles à résoudre) que ceux au niveau du protocole.
Cause | Que se passe-t-il ? | Qui peut s'en charger ? |
|---|---|---|
Surcharge du réseau | La demande dépasse la capacité disponible, ce qui entraîne une augmentation des frais et des délais d'attente | Utilisateurs (frais) et conception de l'application |
Gonflement de l'État | L'augmentation de la taille du blockchain entraîne une hausse du coût de traitement de chaque bloc | Développeurs du protocole et développeurs principaux |
Coûts liés au consensus | La communication avec les validateurs entraîne une latence inévitable | Conception du protocole |
Goulets d'étranglement au niveau des infrastructures | La lenteur du RPC, les requêtes de type « polling » et les nœuds distants génèrent des retards | Les développeurs, directement |
Engorgement du réseau
La congestion du réseau est la cause la plus courante et la plus visible des ralentissements de la blockchain. Lorsque le nombre de transactions soumises dépasse la capacité du bloc suivant, un arriéré s'accumule dans le mempool. Les producteurs de blocs sélectionnent en priorité les transactions dont les frais sont les plus élevés, laissant les transactions aux frais moins élevés en attente. En cas de congestion importante, le mempool peut contenir des centaines de milliers de transactions en attente, les délais de confirmation pouvant aller de quelques secondes à plusieurs heures.
La congestion est, par nature, sporadique. La plupart du temps, les blockchains populaires fonctionnent bien en deçà de leurs limites de capacité, et les transactions sont confirmées rapidement et à faible coût. Mais certains événements spécifiques déclenchent des pics de demande qui saturent le réseau. Les frappes de NFT, les lancements de tokens, les réclamations d’airdrops, les krachs boursiers et le trading viral de tokens « mèmes » génèrent tous des pics de transactions qui dépassent de loin les niveaux habituels. Lors de la frappe « Otherside » de Yuga Labs en mai 2022, les prix du gas sur Ethereum ont dépassé les 8 000 gwei, soit des centaines de fois le niveau habituel.
L'idée clé est que la congestion ralentit la confirmation des transactions individuelles, mais ne réduit pas le débit du réseau. La chaîne continue de produire des blocs à son rythme habituel (toutes les 12 secondes pour Ethereum, toutes les 400 ms pour Solana). Ce qui change, c'est le temps d'attente avant qu'une transaction ne soit incluse dans un bloc. Le réseau traite le même nombre de transactions par seconde ; c'est la file d'attente des transactions en attente qui s'allonge.
Gonflement de l'État
L'engorgement de l'état est une forme plus lente et plus insidieuse de dégradation de la blockchain. Chaque déploiement de contrat intelligent, chaque nouveau compte, chaque enregistrement de solde de jeton vient s'ajouter à l'état de la blockchain, c'est-à-dire l'ensemble des soldes de comptes et des valeurs stockées dans les contrats que les nœuds doivent conserver en mémoire ou sur disque pour valider les nouvelles transactions. À mesure que l'état s'étoffe, le coût de calcul lié à la lecture et à l'écriture de l'état lors de l'exécution des transactions augmente.
Sur Ethereum, l’arborescence trie d’état est passée de pratiquement rien au moment du lancement à plusieurs centaines de gigaoctets. Chaque transaction qui lit ou écrit l’état doit traverser cette structure de données, et plus celle-ci grossit, plus chaque opération nécessite d’E/S disque. Cela affecte tous les nœuds de la même manière, y compris ceux exploités par les fournisseurs RPC. Le gonflement de l’état n’entraîne pas de ralentissements spectaculaires et soudains comme c’est le cas avec la congestion. Au contraire, il augmente progressivement le coût de base du traitement de chaque bloc, ce qui peut se traduire par des temps de traitement des blocs légèrement plus longs, des coûts de gaz minimaux plus élevés pour les opérations d’accès à l’état et des exigences matérielles accrues pour l’exécution des nœuds.
Plusieurs chaînes ont mis en place ou proposé des solutions de gestion de l'état. L'EIP-4444 de Ethereum propose l'expiration de l'historique (suppression des anciennes données de blocs des nœuds complets). Les propositions de « loyer d'état » prévoiraient de facturer aux contrats l'espace de stockage qu'ils occupent, ce qui inciterait à le nettoyer. Le système de « loyer de compte » de Solana impose déjà des soldes minimums pour que les comptes restent actifs. Ces approches visent à gérer la croissance de l'état, mais la tension fondamentale entre « les blockchains se souviennent de tout » et « le stockage n'est pas gratuit » persiste.
Frais généraux liés au consensus
Le mécanisme de consensus est le processus par lequel les validateurs s'accordent sur les transactions à inclure dans le bloc suivant et sur leur ordre d'apparition. Ce processus entraîne intrinsèquement une latence, car les validateurs doivent communiquer entre eux, et cette communication prend du temps. Plus le nombre de validateurs participant au consensus est élevé, plus le nombre de messages à échanger est important, et plus le consensus prend du temps.
Il s'agit là d'une des dimensions du trilemme de la blockchain. Un réseau comptant 4 validateurs peut parvenir à un consensus très rapidement (faible latence), mais il est fortement centralisé. Un réseau comptant 400 000 validateurs (comme Ethereum) présente une forte décentralisation, mais nécessite un protocole de consensus sophistiqué comportant plusieurs cycles de communication, des périodes d'attestation et des points de contrôle de finalité qui ajoutent plusieurs minutes de latence entre l'inclusion d'un bloc et sa finalité.
Certaines chaînes utilisent un consensus basé sur un « leader », dans lequel un seul validateur propose un bloc et les autres le valident, ce qui réduit la charge de communication mais introduit un point unique de latence (le leader). D'autres utilisent un consensus par comité, dans lequel un sous-ensemble de validateurs sélectionnés au hasard gère le consensus pour chaque créneau, conciliant ainsi décentralisation et rapidité. Le choix du mécanisme de consensus détermine directement le seuil de latence de base du réseau, c'est-à-dire le délai minimal entre la soumission d'une transaction et sa finalité, qui ne peut être réduit quelle que soit la vitesse du matériel sous-jacent.
Goulets d'étranglement infrastructurels
Pour la plupart des développeurs, les ralentissements auxquels ils sont confrontés au quotidien ne relèvent absolument pas du niveau du protocole. Ils relèvent du niveau de l’infrastructure. La vitesse perçue de la blockchain par votre application est déterminée par le maillon le plus faible de son chemin de données : l’ endpoint RPC à laquelle elle se connecte, le pipeline de données qui alimente sa base de données et la logique de traitement qui transforme les données brutes de la blockchain en état de l’application.
Une endpoint RPC publique et partagée, sur laquelle des centaines d’autres utilisateurs se disputent la capacité, ajoute une latence imprévisible à chaque requête. La limitation de débit restreint le volume de vos requêtes pendant les pics d’utilisation, précisément au moment où vous en avez le plus besoin. La distance géographique entre vos serveurs d’application et le nœud le plus proche augmente le temps aller-retour pour chaque appel. Un nœud sous-dimensionné qui se retrouve à la traîne par rapport à la fin de la chaîne fournit des données obsolètes, ce qui fait que l’état de votre application est en décalage par rapport à la réalité.
Les pipelines de données basés sur l'interrogation introduisent une latence artificielle égale à l'intervalle d'interrogation. Si votre indexeur vérifie la présence de nouveaux blocs toutes les 10 secondes, il accuse toujours un retard de 0 à 10 secondes par rapport à la pointe de la chaîne, même dans des conditions idéales. En cas de congestion, lorsque les blocs sont pleins et que le temps de traitement augmente, l'intervalle d'interrogation devient le goulot d'étranglement qui empêche votre application de suivre le rythme.
Ces goulots d'étranglement au niveau de l'infrastructure constituent la cause la plus facile à résoudre des ralentissements de la blockchain, car ce sont eux que les développeurs peuvent traiter directement. Le passage à un fournisseur RPC dédié et hautement performant réduit la latence de l'endpoint . Le passage du mode « polling » au mode « streaming » élimine les retards artificiels dans le pipeline. L'utilisation d'une infrastructure géographiquement distribuée réduit les temps aller-retour. L'affectation de ressources de nœuds isolés élimine les effets de « voisins bruyants ».
Comment « Quicknode » remédie aux ralentissements liés à la blockchain
QuicknodeL'infrastructure de [nom] est conçue pour réduire au minimum, voire éliminer, les goulots d'étranglement au niveau de l'infrastructure qui entraînent des ralentissements de la blockchain au niveau des applications. L’API Core fonctionne sur un réseau distribué à l’échelle mondiale, couvrant plus de 14 régions et plus de 5 fournisseurs de cloud, et achemine automatiquement les requêtes vers le nœud disponible le plus proche et le plus rapide. Les temps de réponse sont en moyenne 2,5 fois plus rapides que ceux des concurrents, avec des SLA garantissant une disponibilité de 99,99 %, ce qui assure une disponibilité constante même en cas de congestion du réseau. Des « Clusters s » dédiés fournissent une infrastructure isolée qui élimine les effets de « voisin bruyant », offrant ainsi aux applications sensibles à la latence des performances prévisibles, quelle que soit l’activité des autres utilisateurs.
Quicknode Streams Élimine totalement le goulot d’étranglement lié à l’interrogation en transmettant les données de la blockchain via un flux de type « push » avec une livraison garantie dans l’ordre de finalité. Il n’y a ni intervalle d’interrogation, ni délai artificiel, ni risque de blocs manqués. En cas de congestion, lorsque les blocs sont plus volumineux et contiennent davantage de transactions, Streams adapte la transmission au volume accru de données. Le regroupement et la compression configurables optimisent le débit pour les remplissages historiques et les chaînes à haut volume. Pour Solana, QuicknodeYellowstone gRPC offre l’accès aux données avec la latence la plus faible possible, en utilisant des Protocol Buffers binaires à la place de JSON afin de minimiser la surcharge liée à la sérialisation sur une chaîne où chaque milliseconde compte.
Quelle est la différence entre une blockchain lente et une dapp lente ?
Pour l'utilisateur, ces deux situations se ressemblent, mais leurs causes sont différentes. Une blockchain lente est due à un problème de protocole : la congestion, le temps de consensus ou la taille de l'état limitent la vitesse à laquelle le réseau confirme les transactions. Une dapp lente est généralement due à un problème d'endpoint : la chaîne fonctionne correctement, mais une éloignée ou surchargée ajoute un délai supplémentaire. Comparer le débit et la latence est le moyen le plus clair de déterminer à quel type de problème vous êtes réellement confronté.
Aspect | Niveau de protocole | Niveau infrastructurel |
|---|---|---|
Source | Consensus, limites de bloc, taille de l'état | RPC endpoint, pipeline de données, emplacement des nœuds |
Qui en a le contrôle ? | Les développeurs du réseau et du noyau | Vous, le développeur |
Dans quelle mesure cela peut-il être résolu ? | Difficile, nécessite des mises à jour du protocole | C'est simple : changez de fournisseur ou de forfait. |
Quelles sont les causes des pics soudains de congestion sur la blockchain ?
La congestion est sporadique plutôt que constante. Les lancements de jetons, les frappes de NFT, les réclamations d'airdrops, les effondrements du marché et les opérations de trading virales inondent le réseau de transactions en très peu de temps, et les frais grimpent à mesure que les utilisateurs se disputent l'espace limité disponible dans les blocs. Comprendre les causes de la congestion de la blockchain vous aide à vous préparer à ces événements plutôt que d'être pris au dépourvu.
Comment la couche 2 et la mise à l'échelle permettent-elles de réduire les ralentissements ?
Les réseaux de couche 2 transfèrent la plupart des transactions hors de la chaîne de base et les traitent par lots, ce qui augmente considérablement le débit et réduit les frais liés aux opérations quotidiennes. Exécuter votre application sur une blockchain de couche 2 est l'un des moyens les plus efficaces d'éviter la congestion de la couche de base tout en préservant la sécurité du réseau sous-jacent.
Quels ralentissements les développeurs peuvent-ils réellement résoudre ?
Si vous n'avez généralement aucune influence sur les limites liées au protocole, il n'en va pas de même pour les ralentissements liés à l'infrastructure. Vous pouvez opter pour un fournisseur plus rapide, installer des nœuds plus proches de vos utilisateurs et remplacer l'interrogation par une diffusion de type « push ». Le simple fait de passer de l'interrogation à la diffusion en continu suffit à éliminer le délai artificiel inhérent aux pipelines basés sur des intervalles.
Foire aux questions
La congestion signifie-t-elle que la blockchain traite moins de transactions ?
Non. La chaîne continue de produire des blocs à son rythme habituel et de traiter le même débit. Ce qui augmente en cas de congestion, c'est la file d'attente des transactions en attente ; c'est pourquoi les confirmations individuelles prennent plus de temps et que les frais augmentent.
La décentralisation ralentit-elle les blockchains ?
C'est possible. Un plus grand nombre de validateurs implique davantage de communications pour parvenir à un accord, ce qui augmente la latence de base. Ce compromis entre vitesse et décentralisation est examiné en détail dans la section « Décentralisation contre performances ».
Un fournisseur RPC plus rapide peut-il remédier à la lenteur d'une application ?
Souvent, oui. Si la blockchain fonctionne correctement mais que votre dApp semble lente, le goulot d'étranglement provient généralement de votre endpoint. Réduire la latence RPC en optant pour un fournisseur plus proche et dédié peut éliminer la majeure partie du retard perçu par vos utilisateurs.
En tant que développeur, puis-je remédier au problème de l'encombrement de l'état ?
Pas directement. Le « State bloat » est un problème au niveau du protocole qui est géré par le biais de mises à jour telles que l'expiration de l'historique et la location de comptes. Vous pouvez en réduire l'impact en mettant en cache les données faisant l'objet d'un nombre important de lectures et en évitant tout stockage inutile sur la chaîne dans vos contrats.
Pourquoi les frais augmentent-ils lorsque la blockchain ralentit ?
L'espace disponible dans les blocs étant limité, lorsque la demande augmente fortement, les utilisateurs proposent des frais plus élevés pour que leur transaction soit intégrée plus rapidement. Ces frais plus élevés constituent le mécanisme d'équilibrage du marché qui détermine quelles transactions seront incluses dans le bloc suivant.
Pour en savoir plus
QuickLee - Outil d'évaluation des performances de la blockchain
Guide pour des requêtes RPC efficaces - Quicknode
Premiers pas avec Streams - Quicknode Documentation
Quicknode Dédié Clusters