La scalabilité, de l'anglais scalability, désigne la capacité d'un système à continuer de fonctionner de manière normale lorsque le nombre d'utilisateurs augmente d'un ordre de grandeur. En français, on peut aussi parler d'extensibilité, de capacité à monter en charge ou de capacité à passer à l'échelle.

En ce qui concerne les cryptomonnaies et les systèmes blockchain, la scalabilité est un réel problème. En effet, ces systèmes décentralisés sont très peu scalables par nature, dans le sens où une montée en charge va généralement réduire leur décentralisation théorique et donc leur sécurité.

Dans cet article, nous allons découvrir quel est le compromis en jeu, comment il est possible d'améliorer la scalabilité et nous analyserons différentes façons de mettre en œuvre cette tâche.

 

Quel est le compromis lié à la scalabilité ?

Chaque système blockchain est soumis à un compromis entre sa décentralisation et sa capacité.

La décentralisation correspond à la répartition des nœuds sur le réseau pair-à-pair qui soutient la blockchain : plus la diversité de ces nœuds est importante, plus il est difficile à un attaquant de compromettre le système. La décentralisation est donc étroitement liée à la capacité à faire tourner un nœud.

En particulier, cette décentralisation est essentielle au niveau des validateurs (les fameux mineurs dans le cas de Bitcoin). En effet, une forte concentration de ces validateurs est néfaste pour le bon fonctionnement de la chaîne. Si un consortium d'acteurs parvient à contrôler plus de la moitié de la puissance de validation (puissance de calcul ou jetons), alors la sécurité de la chaîne peut être altérée, par exemple par une attaque de double dépense dite « des 51 % » ou par une censure active de certaines transactions.

La capacité d'une chaîne est le nombre de transactions qu'elle est en mesure de traiter dans un intervalle de temps donné. La charge est la même pour chaque nœud du réseau afin d'assurer la robustesse du système. C'est pourquoi à un certain niveau cette capacité rentre en conflit direct avec la décentralisation : plus un nœud doit traiter de transactions, plus les ressources pour le maintenir (calcul, bande passante, stockage) doivent être élevées s'il veut continuer.

D'où l'existence du compromis entre décentralisation et capacité, compromis qui se manifeste généralement par une limite présente dans le protocole permettant de limiter artificiellement la capacité transactionnelle du système :

  • Pour Bitcoin Cash (BCH), il s'agit simplement d'une taille limite des blocs, qui est actuellement (juillet 2020) de 32 Mo. Initialement de 1 Mo sur Bitcoin, cette limite a été augmentée à deux reprises pour être ce qu'elle est aujourd'hui. Cela permet au réseau de Bitcoin Cash de traiter théoriquement environ 236 transactions simples par seconde.
  • Pour Bitcoin (BTC), il s'agit d'un poids limite des blocs tel que défini par SegWit en août 2017, qui est actuellement de 4 millions d'unités de poids. Cette limite artificielle permet dans la pratique d'obtenir des blocs allant jusqu'à 1,3 Mo en moyenne. Bitcoin peut ainsi traiter un peu plus de 10 transactions simples par seconde.
  • Pour Ethereum (ETH), la limite est définie comme une limite du gaz consommé par les transactions contenues dans un bloc. En juillet 2020, chaque bloc était restreint à 12 millions d'unités de gaz, ce qui veut dire qu'Ethereum pouvait traiter environ 38 transactions simples par seconde.

 

Les conséquences d'un tel compromis

Ce compromis a une conséquence directe sur le fonctionnement économique des systèmes blockchain. Ainsi les réseaux des deux crypto-monnaies les plus populaires, Bitcoin et Ethereum, subissent régulièrement des congestions.

C'est particulièrement le cas lors des envolées spéculatives qui attirent les nouveaux arrivants désireux de faire un profit rapide et qui poussent les tradeurs à réaliser plus de transactions. On peut citer la montée du cours du bitcoin à 20 000 $ ou l'épisode des cryptokitties sur Ethereum en décembre 2017.

Ces congestions ont des conséquences sur le modèle économique des blockchains. Puisque la place dans un bloc est limité, les validateurs choisissent les transactions comportant le plus de frais. L'utilisateur est alors confronté au dilemme suivant : soit payer des frais élevés pour que sa transaction soit confirmée rapidement, soit attendre que l'embouteillage du réseau diminue. Par effet d'enchère, cela aboutit à une augmentation globale des frais de transaction et des temps de confirmation.

De début décembre 2017 et à mi-janvier 2018, ce sont par exemple plus de 100 000 transactions sont restées non confirmées simultanément sur le réseau Bitcoin.

 

Bitcoin BTC mempool 2017 à 2020

 

Ces congestions ont pour conséquence de faire mécaniquement diminuer la demande. Ou bien les utilisateurs se tournent vers une cryptomonnaie de substitution : typiquement on a pu voir des activités être déportées sur Litecoin et sur Bitcoin Cash suite aux congestions du réseau Bitcoin. Ou bien ils quittent complètement le monde des cryptomonnaies : Steam a par exemple cessé d'accepter le bitcoin en décembre 2017 à cause des frais liés.

C'est pourquoi la question de la scalabilité est si cruciale : si certains systèmes crypto-économiques comme Bitcoin ou Ethereum n'ont aucun mal à séduire (notamment grâce à leur décentralisation), le compromis qu'ils font ne les rend pas assez scalables pour répondre à la demande de manière correcte.

 

Comment améliorer la scalabilité d’une blockchain ?

Comme nous l’avons vu, le compromis réalisé par les systèmes blockchain font d'eux des systèmes peu scalables par nature. La capacité à monter en charge d'une blockchain réside donc principalement dans l'amélioration de la technologie, et pas dans le déploiement de nouveau matériel.

Il n’y a pas d’usines supplémentaires à construire comme ce serait le cas pour une entreprise, qui permettrait d'augmenter la quantité de marchandises à mettre sur le marché. Toutefois, il faut certainement embaucher de nouveaux développeurs afin d’améliorer ladite technologie.

Certaines fois, la technologie employée a déjà atteint ses limites et ne peut plus être améliorée. On peut améliorer certaines fonctions en ajoutant tel ou tel élément, mais on se retrouvera à un moment limité car le système n’avait pas été prévu à la base pour évoluer au-delà d'une certaine limite.

Néanmoins, il existe des méthodes pour augmenter la scalabilité d'un système blockchain. Les améliorations de base sont :

  • L'optimisation de l'infrastructure logicielle pour que la charge soit minimale. Les développeurs de Bitcoin Core, l'implémentation de référence de Bitcoin, travaillent dans ce but en permanence.
  • L'accroissement des performances matérielles qui se produit naturellement dans l'économie : pour un degré de performance donné, le coût du matériel informatique correspondant est de moins en moins élevé. On parle parfois de loi de Moore.

Parmi les améliorations plus poussées, on retrouve :

  • L'évolution du protocole dans le but d'améliorer le compromis réalisé par une blockchain, notamment :
    • Le changement de l'algorithme de consensus. Par exemple, Ethereum compte passer de l'algorihtme Ethash (basé sur la preuve de travail) à Casper (basé sur la preuve d'enjeu). De manière générale la preuve d'enjeu (PoS) rend le système plus scalable, car elle ne demande pas une installation minière pour la validation. Il existe également d'autres algorithmes novateurs qui pourraient être plus efficaces comme Avalanche.
    • Le sharding pensé pour Ethereum. Celui-ci pourrait partager la charge de la validation sans trop affecter le consensus.
  • Les protocoles de seconde couche (décentralisés) permettant d'absorber une partie de l'activité de la chaîne, dont :
    • Les chaînes latérales (sidechains) comme la sidechain Liquid sur Bitcoin qui est développée par Blockstream. D'autres chaînes latérales de Bitcoin pourraient être construites dans l'avenir grâce au projet Drivechain. Ethereum pourrait également avoir un jour un système de chaînes latérales plutôt similaire avec Plasma ou les ZK-rollups.
    • Les canaux de paiement bidirectionnels permettant d'effectuer des paiements sans frais entre deux parties. Il existe également les canaux d'état sur Ethereum qui font la même chose dans le contexte des smart contracts.
    • Les réseaux de canaux comme le Lightning Network pour Bitcoin ou le réseau Raiden pour Ethereum.
  • Le recours (partiel ou total) à des tiers de confiance. En effet, les institutions centralisées permettent d'effectuer de nombreuses opérations qui seraient impossibles autrement. On peut citer :
    • Les places de marché sur lesquelles on dépose des montants en cryptomonnaie comme Kraken ou Binance. Celles-ci autorisent le trading à haute liquidité, ce qui aide notamment à obtenir un prix fiable.
    • Les cryptobanques comme Coinbase qui remplissent le même rôle que les banques traditionnelles, en conservant les crypto-actifs de leurs utilisateurs et en leur offrant une expérience à risque réduit.
    • Les casinos en ligne pour le jeu d'argent.
    • Les fabricants de coins physiques. Les unités physiques permettent (sous réserve de faire confiance au producteur) le transfert de main à main, sans avoir besoin d'une connexion à Internet. Opendime est un des exemples les plus réputés de ce type de service.

 

Est-il plus simple de repartir de zéro et de créer une nouvelle blockchain ?

D’après ce que nous venons d’expliquer, cette façon de mettre à l’échelle une blockchain est quelque peu problématique.

Il y a des contraintes techniques qui sont complexes à dépasser. L’architecture d’une blockchain est telle qu’il y est difficile de modifier son mode de fonctionnement dans son ensemble. Tout au plus, il est possible de rajouter quelques petits correctifs par-dessus, mais arrivera un moment où il sera compliqué de faire plus.

Dans le cas d'Ethereum, le problème est quelque peu différent. Si le réseau prévoit effectivement de passer en PoS, il faut garder à l’esprit que c’est quelque chose de complexe et que l’équipe ne peut pas accomplir cela du jour au lendemain. Il y a notamment beaucoup de problèmes qui se posent avec la preuve d'enjeu et qui ne se posent pas avec la preuve de travail : des questions de stabilité, de sécurité... Tout cela doit être résolu avant que le changement soit effectué, et c'est pour cela qu'Ethereum fonctionne encore avec la preuve de travail à ce jour.

Certaines équipes de développeurs ont préféré créer leur propre blockchain, conçue pour réduire ces problèmes récurrents de scalabilité.

Créer quelque chose à partir de zéro est un énorme défi qu’il est difficile d’accomplir :

  • Il faut tout d’abord avoir un projet solide et réaliste.
  • Il faut être capable de trouver une équipe de développement compétente et capable de mettre en place un tel système.
  • La nouvelle blockchain doit pouvoir prouver de manière irréfutable son efficacité.
  • Il faut ensuite faire connaître la blockchain auprès du plus grand nombre.
  • Les gens utilisant les « anciennes » technologies et qui ont pris leurs habitudes avec celles-ci doivent alors accepter de migrer vers quelque chose de nouveau.

Entre l’idée de base révolutionnaire et l’adoption de masse, il y a pas mal de chemin à parcourir. De plus, des crypto-monnaies comme BTC ou ETH ont déjà démontré qu’elles étaient opérationnelles et même si elles présent des soucis de scalabilité, on sait qu’elles fonctionnent. C’est pourquoi des blockchains plus vieilles ont toujours la cote auprès des utilisateurs, même si leur technologie est à la traîne.

Il n’est pas impossible qu’une blockchain novatrice voie le jour en résolvant tous les problèmes de scalabilité, mais cela prendra du temps avant qu’un tel événement se produise. Nombre de projets de blockchain « novateurs » ont déjà vu le jour, mais pour l’instant, très peu ont su fournir un produit fini efficace et un engouement auprès des utilisateurs.

 

Conclusion sur la scalabilité

Il ne faut pas oublier que nous ne sommes qu’à l’aube des cryptomonnaies. Nous sommes encore dans quelque chose de relativement nouveau et le marché manque très clairement de maturité.

L’inconnue principale que nous avons à l’heure actuelle est de savoir s’il les problèmes de scalabilité seront résolus grâce à l’amélioration du fonctionnement des crypto-actifs existant ou bien en créant quelque chose de nouveau qui remplacera ce que nous connaissons actuellement.

Cet article a été mis à jour par Ludovic Lars le 30 juillet 2020.

Note des lecteurs
[Total : 4   Moyenne : 5/5]

A propos de l'auteur : Robin Berné

twitter-soothsayerdatatwitter-soothsayerdata

Co-fondateur de Cryptoast, je rédige régulièrement des articles sur le site depuis 2017. Je suis passionné par les crypto-monnaies et je peux passer plusieurs heures par jour à lire et à analyser des documents pour trouver les pépites de demain. J’aime également approfondir mes recherches sur les changements que peuvent apporter les cryptos et les technologies blockchains dans notre vie et nos sociétés, d’un point de vue social et économique.
Tous les articles de Robin Berné.

guest
2 Commentaires
Inline Feedbacks
View all comments
loane Hedon

bonjour, je ne comprend pas ce que c'est le gas ?

Benjamin M.

Bonjour, Le "gas" porte ce nom pour faire un parallèle avec l'essence des voitures. Il s'agit en fait d'une valeur prédéfinie, associée à une des opérations mathématiques que doivent réaliser les noeuds réseau (notamment en ce qui concerne les contrats intelligents). Et chacune de ces opérations dispose de sa propre valeur en gas associée, standardisée à travers tout le réseau. Pour rester dans l'analogie de l'essence, on peut faire le parallèle entre le gas nécessaire pour effectuer une opération X, et la quantité d'essence effectuée pour conduire sur une distance Y. La quantité d'essence et la quantité de gas restent… Read more »