Bitcoin Core : Scalabilité sur la blockchain

Le développement continu du logiciel client Bitcoin a été essentiel pour garantir une expérience fiable aux utilisateurs. Plusieurs mises à niveau ont permis d'optimiser les ressources, de maintenir la décentralisation et d'améliorer l'efficacité des transactions. Cet article détaille les étapes clés qui ont contribué à ces avancées majeures.

Mise en cache des signatures : un gain d'efficacité significatif

La version Bitcoin-Qt 0.7.0 a introduit un système de mise en cache des signatures ECSDA, une opération très gourmande en ressources. Avant cette mise à jour, chaque transaction nécessitait une double validation des signatures, ce qui engendrait une surcharge importante pour l'utilisateur final.

Avec le nouveau cache, les nœuds peuvent stocker les signatures déjà validées et éviter ainsi toute redondance lors de la transformation des transactions en blocs acceptés. Ce changement permet également de limiter les attaques par déni de service (DoS) dues à des transactions malveillantes conçues pour saturer le réseau.

Ultraprune et LevelDB améliorent la gestion des données

Dans la version Bitcoin-Qt 0.8.0, Ultraprune a été mis en place pour réduire considérablement la taille de l'indexation des transactions sur la blockchain. Au lieu de conserver toutes les transactions dépensées ou non, cette mise à jour se concentre uniquement sur celles non dépensées, permettant ainsi un allègement important.

Cette amélioration est accompagnée par l'intégration de LevelDB, remplaçant l'ancienne base de données BDB et offrant aux utilisateurs une performance accrue d'au moins un ordre de grandeur dans la validation des données blockchain.

La vérification parallèle optimise le temps de traitement

Avec Bitcoin-Qt 0.8, le processus classique de validation script a évolué vers une méthode plus parallélisée, supprimant ainsi une grande partie du temps nécessaire à la validation des blocs. Les versions antérieures exécutaient chaque tâche linéairement, ce qui ralentissait considérablement le traitement global.

Désormais, grâce au stockage dans une file d'attente après traitement initiale et au parallélisme appliqué lors du traitement UTXO (Unspent Transaction Outputs), il est possible d'accélérer ce processus jusqu'à 100 % selon certaines analyses comparatives effectuées par les développeurs.

L'élagage block-level facilite la gestion spatiale

L'introduction du pruning dans Bitcoin Core 0.11 répondait à un besoin croissant d'espace disque alors que la blockchain dépassait déjà plusieurs centaines de gigaoctets. Cette fonctionnalité permet aux utilisateurs ayant validé l'ensemble complet d’UTXO (Unspent Transaction Output) d'éliminer toutes les données brutes dépassant 288 blocs tout en maintenant leur capacité à valider efficacement les nouveaux blocs.

Cela favorise également diversifier davantage le réseau car elle rend plus accessible le maintien actif comme nœud valide avec moins de ressources requises.

libsecp256k1 améliore significativement la vérification ECDSA

La version Bitcoin Core 0.12 a introduit libsecp256k1, remplaçant OpenSSL pour optimiser les performances liées aux opérations ECDSA cruciales dans chaque transaction Bitcoin signée avec clé privée. Les tests ont montré que cette nouvelle bibliothèque permettait d’accélérer jusqu’à sept fois le processus global nécessaire à ces validations essentielles.

Cet avancement est particulièrement pertinent face à l’augmentation continue du volume transactionnel sur le réseau Bitcoin puisque cela réduit drastiquement le temps requis pour synchroniser un nouveau nœud depuis zéro.

Limitation efficace du pool mémoire renforce sa robustesse

Avec Bitcoin Core 0.12 aussi, il y avait nécessité pressante d'adresser un problème ancien lié au pool mémoire où un attaquant pouvait inonder avec quantité excessive de petites transactions peu coûteuses entraînant éventuellement crashs chez certains nœuds vulnérables.Pour contrer cela efficacement sans compromettre totalement flexibilité utilisateur, il a été décidé qu'une limite maximale serait imposée au pool mémoire avec sélection automatique basée sur frais afin que seules meilleures rémunérations soient maintenues.