Une cryptomonnaie qui ne se repose pas sur ses lauriers – La botte secrète de Solana (SOL), nommée Gulf Stream
Continuons notre exploration de la blockchain Solana à travers ses différentes innovations ! Nous avons tout d’abord présenté la preuve d’histoire, qui permet au réseau de s’accorder sur l’ordre des événements; puis Tower BFT, son mécanisme de consensus permettant d’obtenir une finalisation rapide des blocs; et enfin Turbine, son mécanisme de diffusion des blocs.
Aujourd’hui, nous allons nous intéresser à la propagation des transactions sur le réseau, via le protocole Gulf Stream. Contrairement aux blockchains “classiques”, Solana n’utilise pas la méthode du memory pool ou mempool, cet espace mémoire dédié aux transactions en attente.
Cet article vous est proposé dans le cadre d’une campagne de communication éducative, et soutenue par Solana.
Le mempool : un espace mémoire qui coûte cher
Sur les réseaux Bitcoin et Ethereum, les transactions en attente sont stockées par les nœuds validateurs dans un espace mémoire dédié. Ces transactions sont valides, mais n’ont pas encore été sélectionnées par les mineurs pour être incluses dans un nouveau bloc. Typiquement, les mineurs choisissent dans le mempool les transactions présentant les frais les plus intéressants.
Cet espace mémoire est régulièrement engorgé. Sur Bitcoin, plusieurs dizaines de milliers de transactions peuvent être en attente de confirmation. Un nombre qui diminue généralement le week-end.
Sur Ethereum, il y a souvent plus d’une centaine de milliers de transactions en attente.
Les transactions en attente dans le mempool subissent donc la loi de l’offre et de la demande. L’utilisateur qui souhaite une confirmation rapide de sa transaction va ainsi augmenter ses frais.
La propagation des transactions
Sur Bitcoin et Ethereum, les nœuds assurent la propagation des transactions en suivant un protocole de bavardage. Ils diffusent leur mempool de pair-à-pair, de façon aléatoire.
De façon régulière, les nœuds produisent un filtre de Bloom du mempool local et le diffuse. Le filtre de Bloom est une structure de données, qui permet de s’assurer qu’un élément n’appartient pas à un ensemble. Lorsqu’ils reçoivent une transaction, les nœuds utilisent alors ce filtre, pour s’assurer qu’elle n’est pas déjà présente dans leur mempool.
Mais ce système a plusieurs inconvénients. Premièrement, le nombre d’étapes requises pour propager une transaction varie de façon logarithmique avec la taille du réseau. Ensuite, construire le filtre de Bloom du mempool nécessite d’effectuer des calculs, et requiert de la mémoire vive. Enfin, sa propagation consomme de la bande passante.
Une blockchain comme Solana comporte un grand nombre de nœuds, et doit assurer un haut débit, de l’ordre de plusieurs dizaines de milliers de transactions à la seconde. Le protocole de bavardage devient alors insuffisant pour assurer une propagation efficace des transactions.
En effet, le coût du calcul des filtres, de leur diffusion de pair-à-pair et du maintien en mémoire des transactions est beaucoup trop élevé. De plus, les leaders vont transmettre plusieurs fois les mêmes transactions dans un bloc : chaque transaction est au moins diffusée deux fois sur le réseau, ce qui n’est pas optimal.
L’approche de Solana : Gulf Stream
L’idée de Gulf Stream est tout simplement de supprimer le mempool. Les validateurs diffusent ainsi directement les transactions aux prochains leaders, en avance.
Pour rappel, le leader est le nœud qui produit les blocs de transactions à l’instant t. Sur Solana, il est sélectionné par le protocole de façon déterministe. Les nœuds validateurs connaissent donc les futurs leaders du réseau.
En diffusant les transactions par avance aux leaders, les validateurs réduisent l’espace mémoire requis pour traiter celles qui ne sont pas confirmées. Cela réduit donc aussi le délai de validation, et permet de changer de leader plus rapidement.
Propager des transactions sans mempool ?
Dans la pratique, les logiciels clients sur Solana (comme les wallets) signent les transactions en faisant référence à un bloc spécifique (via son hash). Ce bloc doit être récent, mais pleinement confirmé par le réseau. Les transactions sont alors valides si elles font partie des blocs “enfants” du bloc référencé, et ont une durée de validité de X blocs.
Les blocs sont créés toutes les 600-800 millisecondes sur Solana. Comme nous l’avons vu dans l’article sur Tower BFT, le délai nécessaire pour revenir en arrière sur la chaîne (rollback) augmente de façon exponentielle avec chaque nouveau bloc. On considère ainsi qu’au-delà de 32 blocs (24 secondes), il est impossible de rollback et que le bloc est pleinement confirmé.
Lorsqu’un validateur reçoit une transaction, il la transmet donc directement à un des futurs leaders. Les logiciels client peuvent alors s’assurer de sa confirmation auprès des validateurs. Si elle est incluse dans un bloc avant l’expiration du délai, elle sera finalisée. Mais si le bloc-hash de référence expire, la transaction devient invalide et ne sera jamais exécutée sur la blockchain.
Les avantages de Gulf Stream
Cette méthode de diffusion des transactions permet de répartir la charge au sein du réseau. Les nœuds validateurs qui sont en sous-capacité peuvent exécuter les transactions en avance. Les producteurs de blocs peuvent aussi classer les transactions par ordre de priorité, en se basant sur le poids du stake du validateur les ayant diffusé. Cela permet au réseau d’être plus résilient dans le cas d’un déni de service important.
Ça y est, vous savez désormais comment Solana propage les transactions au sein de son réseau. Gulf Stream est une brique technologique qui, combinée à celles que nous avons étudié précédemment, permet d’obtenir des performances notables. À bientôt pour une prochaine crypto-exploration !