Qu'est-ce que le sharding - Une explication simple

- 12 minute read

Waiting in line
Paul Hopmans
Crypto Expert
Paul Hopmans

✔️ Sharding signifie fragment ou petite partie d’un tout.

✔️ Le sharding remonte aux années 1990.

✔️ Le sharding a été développé pour rendre une base de données plus rapide.

✔️ Le sharding sur une blockchain est principalement destiné à être rapide et peu coûteux.

✔️ Ethereum a trouvé sa solution au problème d’évolutivité

Vous avez probablement entendu parler du sharding, mais la signification est différente. Après avoir lu ce blog, vous saurez exactement de quoi il s'agit.

What is sharding?

Table des matières

  1. Qu’est-ce que le sharding ?
  2. Comment fonctionne le sharding sur une blockchain ?
  3. Éclatement de la sharding
  4. Formes de partage (sharding)
  5. Danksharding en détail
  6. Les points forts du sharding
  7. Faiblesses du sharding
  8. Exemples de blockchain avec sharding
  9. Le sharding par rapport à d’autres solutions
  10. L’avenir du sharding

Qu’est-ce que le sharding ?

Le terme "sharding" est apparu dans les années 1990. Il peut être traduit par "tesson" ou "petite partie d’un tout". Il était nécessaire de résoudre toutes sortes de problèmes liés aux ordinateurs et aux réseaux avec des bases de données. On a même prédit qu’il n’y aurait pas d’avenir pour les bases de données distribuées avec du matériel spécialisé.

Ils se sont complètement trompés, comme on peut le voir avec la blockchain ! Mais encore une fois, il est plus difficile de prédire l’avenir que de se contenter d’être négatif.

Depuis lors, le matériel, les logiciels et les techniques de base de données ont connu d’énormes développements.

En 1997, le terme "shard" est également apparu dans un jeu populaire appelé Ultima Online. Chaque joueur se retrouvait dans sa propre partie du monde virtuel, si bien que l’on peut à juste titre parler d’un "shard". Le jeu existe toujours et a depuis établi 8 records du monde Guinness.

Le sharding est une technique de gestion de base de données qui consiste à diviser une base de données croissante en partitions plus petites et plus faciles à gérer. Une telle petite partition est appelée "shard".

L’idée est de stocker ces morceaux sur différents ordinateurs en tant que fragments indépendants.

Une base de données se compose de lignes et de colonnes. Le partage de base de données implique un partitionnement horizontal, par lequel une base de données plus importante est divisée en sections plus petites afin d’accélérer et de simplifier la gestion de la base de données.

Le partage est généralement utilisé lorsqu’un ensemble de données devient trop volumineux pour être stocké dans une seule base de données. Lorsqu’une base de données devient trop volumineuse, une interrogation normale de la base de données, pour laquelle elle a manifestement été créée en partie, peut prendre trop de temps ou coûter trop cher. Un shard est donc une solution qui permet de ne pas devoir travailler avec du matériel coûteux et d’avoir des temps de réponse acceptables pour les requêtes. Un ensemble de données logiques est alors divisé en plusieurs petites parties de cette base de données totale.

Le sharding est donc une mise à l’échelle horizontale. Dans cette technique, des appareils supplémentaires sont ajoutés pour répartir la charge de travail. La mise à l’échelle verticale permet d’augmenter la puissance de traitement des appareils existants. Cette dernière n’est pas possible indéfiniment. Par conséquent, lorsque les appareils ne peuvent plus tout gérer ou deviennent trop coûteux, on peut envisager la mise en commun des données ou la mise à l’échelle horizontale. Ce qui était auparavant effectué par un appareil peut être réparti sur plusieurs appareils. En théorie, avec le sharding, il est possible d’évoluer à l’infini, car il suffit d’ajouter de plus en plus d’appareils qui se partagent le travail.

Le partage signifie également que les unités individuelles ne doivent pas rechercher dans l’ensemble de la base de données. Elles se trouvent dans une petite partition responsable d’une partie spécifique de la base de données globale. De cette manière, elles sont prêtes beaucoup plus rapidement lorsqu’une requête arrive pour leur base de données ou qu’une transaction dont leur partition est responsable doit être traitée. C’est bien sûr beaucoup plus rapide, surtout avec les bases de données de plus en plus grandes pour lesquelles les blockchains sont connues.

Une file d’attente est une bonne représentation visuelle du partage. Supposons que tout le monde aux Pays-Bas doive obtenir une nouvelle carte d’identité à une certaine date. Bien entendu, des millions de personnes ne peuvent pas attendre devant un guichet à Utrecht ou ailleurs. Si un deuxième guichet seulement est ouvert, la file d’attente est déjà réduite de moitié. C’est là toute la puissance du sharding. Chaque fois qu’un guichet supplémentaire est ouvert, la file d’attente diminue. Dans ce cas, l’objectif du sharding est donc clair : augmenter la productivité en ouvrant plus de guichets.

Queue

Comment fonctionne le sharding sur une blockchain ?

Un shard est donc responsable d’une partie de l’ensemble de la base de données. Une blockchain consiste en une base de données gérée par de nombreux ordinateurs. Il s’agit d’une base de données distribuée. Si tous les nœuds, validateurs ou mineurs doivent suivre l’ensemble de la base de données, cela peut entraîner une charge de travail considérable, en particulier dans le cas de grandes bases de données telles qu’Ethereum avec ses contrats intelligents populaires. En divisant la base de données en partitions ou parties, les différents nœuds ne doivent garder un œil que sur une partie de la base de données et sont donc beaucoup plus rapides. L’effort de communication des nœuds entre eux est donc considérablement réduit.

L’un des problèmes de la blockchain est son évolutivité. Au début d’une blockchain, la base de données n’est pas très volumineuse, mais chaque fois qu’un nouveau bloc est ajouté, la base de données s’agrandit. Au fil du temps, les sauvegardes de la base de données peuvent poser des problèmes. Les réseaux particulièrement populaires comme Bitcoin et Ethereum ont des problèmes d’évolutivité. Des vitesses de traitement de seulement 20 par seconde ne sont plus réalistes lorsqu’un réseau est utilisé par un si grand nombre de personnes. On ne peut pas obliger les gens à attendre indéfiniment que leur transaction soit validée. En outre, les mineurs ou les nœuds tentent souvent d’exploiter la congestion du réseau en facturant le plus possible la validation.

L’un des moyens de résoudre ce problème est le processus de partage (sharding). Ce processus permet un grand nombre de transactions sur une blockchain par seconde s’il est effectué correctement. Nous parlons ici de chiffres supérieurs à 100 000 par seconde.

Une fois que la disposition des fragments est connue, ils doivent faire ce qui se passe normalement alléguer Les nœuds doivent faire : vérifier une transaction dans leur champ d’application. Un exemple serait de vérifier toutes les transactions avec une valeur de type hash commençant par un 1. Par la suite, tous les membres de ce shard doivent se joindre selon une protocole de consensus de ce shard et rassemble ensuite les transactions approuvées dans un nouveau bloc à former. Ceux-ci deviennent alors partie intégrante de la blockchain. Étant donné que la base de données par bloc reste relativement petite, ces types de réseaux de blockchain sont beaucoup plus rapides que les blockchains traditionnelles telles que Bitcoin.

L’un des problèmes de la blockchain est le trilemme proposé par Vitalik Buterin d’Ethereum. Une blockchain doit être décentralisée, sécurisée et évolutive. Le sharding devrait apporter une contribution importante à ce dernier point en divisant une base de données en petites parties qui sont beaucoup plus faciles et moins coûteuses à traiter et beaucoup plus rapides. En théorie, une base de données divisée est infiniment évolutive.

Si vous souhaitez partitionner une base de données, il existe plusieurs façons de le faire. Par exemple, vous pouvez partitionner par alphabet, par nombres, par hachages ou autres. L’idée est qu’un tesson n’est responsable que de cette partie particulière de la base de données.

Éclatement de la sharding

  • Augmenter l’évolutivité
  • Réduction des coûts de transaction
  • Diviser la charge de travail en plusieurs parties
  • Augmentation du temps de réponse des requêtes dans la base de données
  • Augmenter la puissance de calcul d’un réseau en ajoutant des ordinateurs.
  • Utilisation de machines moins coûteuses pour la validation ou l’interrogation

Formes de partage (sharding)

  1. Partitionnement des données. Il s’agit simplement d’une classification par alphabet, par exemple.
  2. Hash sharding. La base de données est partitionnée sur la base d’un hachage.
  3. Division par intervalles. Il s’agit d’une division basée sur un intervalle, par exemple tout ce qui commence par une lettre de a à f.
  4. Division du réseau. Le réseau est divisé en groupes de consensus qui testent collectivement une partie de tous les blocs de manière aléatoire.
  5. La répartition des transactions. Dans ce cas, une certaine partie de la charge de travail est attribuée à un shard sur la base d’un identifiant de transaction, par exemple toutes les transactions commençant par 1 sont dans le shard 1.
  6. La mise en commun d’états. Dans ce cas, un nœud a une vue partielle d’un composant du système entier. La validation et l’approbation d’une transaction peuvent nécessiter plusieurs tables et donc plusieurs niveaux. Ethereum y travaille depuis un certain temps et cela figurait également dans sa feuille de route, mais il a été décidé de continuer avec les rollups de niveau 2 pour faire évoluer Ethereum et le rendre moins cher. Cela facilite également le consensus sur Ethereum et ne nécessite pas de bases de données partagées.
  7. Danksharding. C’est la voie actuelle d’Ethereum et elle devrait permettre un débit de plus de 100 000 transactions par seconde au prix le plus bas possible.

Danksharding en détail

L’Ethereum étant un réseau très important, nous allons nous pencher sur sa stratégie.

Danksharding a l’intention de faire d’Ethereum une blockchain véritablement évolutive. Toutefois, des étapes intermédiaires sont encore nécessaires.

L’une de ces étapes intermédiaires est Proto-Danksharding . Le nom vient de deux chercheurs appelés Protolambda et Dankrad Feist. L’objectif de cette proposition Ethereum est d’ajouter des données moins chères aux blocs de la blockchain.

Les rollups doivent désormais envoyer leurs données à tous les nœuds du réseau Ethereum, et ces données y restent pour toujours.

Le Danksharding introduit des blocs de données (blobs) qui peuvent être liés à des blocs qui ne peuvent pas être récupérés par la machine virtuelle Ethereum et qui sont automatiquement supprimés après un certain temps.

Un rollup se compose de deux parties : les données et le contrôle de l’examinateur. L’examinateur doit vérifier si le récapitulatif est correct. Par conséquent, ce dernier ne doit pas rester indéfiniment sur le MVE.

Compléter Danksharding n’est en fait pas du tout du sharding. Les véritables chaînes de sharding ne figurent plus sur la feuille de route d’Ethereum, car le thanksharding est une solution simple et efficace.

Danksharding est l’implémentation complète de la mise à l’échelle des rollups qui a commencé avec Proto-Danksharding. Avec Danksharding, il y aura beaucoup de place sur Ethereum pour que les rollups téléchargent les données compressées des transactions. Cela permettra à Ethereum de supporter des centaines de rollups individuels et d’atteindre des millions de transactions par seconde.

Normalement, je dirais : "La parole ne coûte rien !

Mais oui, quand Vitalik le dit, je suis un peu plus modéré dans mes déclarations. Son réseau et son succès parlent d’eux-mêmes. S’il réussit, il pourrait devenir la blockchain la plus rapide du monde des crypto-monnaies. Ce n’est pas comme payer 50 dollars pour une transaction et attendre deux heures pour l’obtenir !

Pour ce faire, ils n’ajouteront pas seulement un blob, comme dans la partie proto, mais 64 blobs à un bloc. Avant que vous ne vous en rendiez compte, vous aurez un film d'horreur ! Enfin, flippant. Plutôt drôle.

Les remerciements complets attendront encore quelques années, mais après un vrai travail d’équipe, il est temps d’agir. Cérémonie de remise des diplômes La magie d’Ethereum comporte une autre partie sous la forme de proto-danksharding, qui rappelle quelque peu la sorcellerie, bien que cette partie ne puisse pas être appelée shard.

Les points forts du sharding

  1. Si l’un d’entre eux tombe en panne, tous les autres continuent de fonctionner. Si tout se trouve sur un seul serveur et que celui-ci tombe en panne, l’ensemble du réseau n’est plus accessible ! Cette situation est rare avec la blockchain, en raison de sa base de données distribuée.
  2. Le sharding permet de réduire la taille des bases de données.
  3. Le sharding permet de réduire le coût d’un réseau blockchain.
  4. L’administration d’une base de données est facilitée par le sharding.
  5. La division du travail peut faciliter des processus complexes.
  6. Elle rend la blockchain plus rapide.
  7. Il est possible d’utiliser du matériel moins cher.

Faiblesses du sharding

  1. La mise en œuvre de la répartition peut être une opération très complexe qui prend beaucoup de temps.
  2. En cas d’introduction du sharding, les données de la base peuvent être perdues ou la base de données peut être endommagée.
  3. Les données peuvent être trouvées dans les endroits les plus disparates, de sorte qu’il est parfois difficile de faire la part des choses.
  4. Une surcharge peut toujours se produire si un séparateur particulier reçoit beaucoup plus de travail que les autres.
  5. La sécurité de la blockchain ou d’un shard peut être compromise.
  6. Si l’on veut éliminer le sharding, cela peut être une tâche énorme de rendre la base de données à nouveau correcte.
  7. Davantage de matériel et de logiciels sont nécessaires.
  8. Si les fragments sont interdépendants, un seul fragment endommagé peut entraîner l’effondrement de l’ensemble de la base de données.

Exemples de blockchain avec sharding

  • Zilliqa
  • Ontology
  • Polkadot
  • Near
  • Elrond
  • QuarkChain

Le sharding par rapport à d’autres solutions

L’objectif du sharding est d’augmenter l’évolutivité. Pour ce faire, on crée des îlots qui ne surveillent qu’une petite partie de la blockchain. Avec ces îlots, il n’est généralement pas nécessaire de communiquer avec d’autres îlots.

Si l’on compare ces solutions à d’autres, telles que les roll-ups, les sidechains ou le Lightning Network de Bitcoin, on constate que, tout en permettant une plus grande évolutivité du réseau, celui-ci doit toujours communiquer avec la blockchain principale et peut donc être surchargé.

L’avantage de la subdivision est qu’elle peut s’étendre à l’infini. Si l’on commence à travailler avec des compartiments qui traitent, par exemple, toutes les transactions commençant par 1, on peut créer une autre subdivision composée des deux premiers chiffres, et ainsi de suite, en rendant les compartiments de plus en plus petits par rapport à la base de données tout entière.

L’avenir du sharding

Le sharding est un moyen prometteur et rentable d’accroître considérablement l’évolutivité d’une blockchain. La réduction des coûts est également un élément important de cette stratégie.

Toutefois, comme il est difficile à mettre en œuvre, il peut également freiner la croissance de l’application sharding.

Si l’on analyse les inconvénients du sharding et qu’on les compare à la solution d’Ethereum, on peut douter de l’efficacité du sharding.

Toutefois, étant donné que même les super-héros d’Ethereum mettront des années à mettre au point quelque chose de similaire, il y a peut-être quelque chose à dire sur le sharding.

Il est toutefois indéniable qu’une blockchain utilisant le sharding est beaucoup moins chère et plus rapide que la blockchain traditionnelle. Il s’agit là d’une nouvelle extrêmement positive pour les utilisateurs ordinaires.