Author

Topic: La technologie du sharding (Read 613 times)

newbie
Activity: 28
Merit: 21
September 16, 2018, 03:09:30 PM
#14
Pour le moment, il semble quasiment impossible d'utiliser le sharding sur un protocole 100% PoW. En gros, ce qui garantit la sécurité de la PoW, c'est le fait que tous les mineurs conservent l'intégralité du registre distribué (la base de données de bitcoin). Du coup, difficile de concevoir comment découper ce registre distribué sans détruire le concept.

Voilà pourquoi le sharding est plutôt destiné au protocole PoS.

Oui, car comment tu départages la puissance de calcul pour qu'elle soit bien distribuée parmi les shards ? C'est juste impossible, les mineurs pourraient ainsi faire grossir massivement un shard en particulier (qui n'est rien d'autre qu'un fork) et dont la taille sera bien plus grande que les autres, ce qui implique de gros problème de cohérence entre les shards.
full member
Activity: 715
Merit: 220
September 15, 2018, 02:44:11 AM
#13
La possibilité de traiter des millions de transactions par seconde est une nécessité pour de nombreux projets (payements, crypto collectable...) si l'on veut avoir une adoption globale des crypto monnaies. Si la technique de sharding permet d atteindre un tel nombre de transaction par seconde c'est une bonne nouvelle.

Pour mon information personnelle, quels projets travaillent actuellement sur le sharding? Je sais que ethereum et quarkchain bosse sur le sujet, Shardcoin doit aussi y travailler mais d'autres projets doivent aussi regarder ça je pense.
hero member
Activity: 1022
Merit: 725
August 20, 2018, 10:16:59 PM
#12
Je l'avais raté du coup, merci bien.

Par contre je me dis que le DPoS de TON sera autrement plus compliqué que ça. D'un autre côté on a affaire a un mec plutôt doué qui travaille dessus (avec son équipe) : https://en.wikipedia.org/wiki/Nikolai_Durov

hero member
Activity: 1138
Merit: 574
August 13, 2018, 01:37:01 AM
#11
Le sharding n'est envisageable que sur du PoS. Cela irait à l'encontre du protocole PoW où chaque nœud est garant de l'intégralité de la blockchain (tous les nœuds traitent tous les blocs).

Les vitesses de TPS annoncées grâce au sharding sont encore bien supérieures à celles des PoS / DPoS classiques. Cela permet de commencer à imaginer des blockchains qui soient véritablement utilisables à grande échelle. Mais effectivement, le problème est de savoir comment articuler et indexer les différents shards et surtout comment garantir l'intégrité de la blockchain. Concrètement, je suis absolument incapable de te dire comment les shards sont implantés et liés entre eux, ça dépasse de beaucoup mes compétences !

Ce problème renvoie à l'impossible trinité, ce que Buterin appelle le blockchain trilemma à savoir que l'on ne peut pas cumuler: sécurité / scalabilité / et décentralisation. Pour qu'une blockchain soit suffisamment évolutive, il faut nécessairement sacrifier la décentralisation ou la sécurité. EOS par exemple à sacrifié la décentralisation en s'appuyant sur 21 délégués.



Comme exemple, j'ai récemment traduis les projets: Usechain et Skynet qui prévoient d'utiliser le sharding. C'est souvent comparé aux blockchains 3.0.
Usechain a atteint son hardcap très facilement il y a quelques jours et le projet a l'air sérieux. Ils devraient être listé à la mi-août. Skynet débute tout juste, mais j'ai eu un mal fou à traduire leur WP ! C'est ultra technique, mais vraiment intéressant (tu devrais y jeter un œil si l'aspect technique t’intéresse). Ils annoncent plus d'un million de TPS ... (même si c'est facile d'annoncer pleins de choses). Je sais pas du tout ce que ça donnera. Il y a aussi TON, Polkadot ou Cosmos. Et il y en a surement beaucoup d'autres. (Je précise à ceux qui liraient que c'est juste à titre d'exemple !)

Je ne connais pas assez le protocole Bitcoin NG pour faire de comparaison. Et j'avoue que la solution du LN à traiter les transactions off-chain ne me convainc pas plus que ça. À quoi sert la blockchain si on traite les transactions hors chaîne ? Si tu as des infos, n'hésite pas, je suis preneur !



Merci pour les détails,
je vais regarder ça de près; j'ai fais pas mal de sharding pour des base de données, si c'est possible avec une blockchain, lors pourquoi pas ? Mais ce sera effectivement au détriment de quelque chose.

En note parallèle le protocole Bitcoin NG n'a pas été adopté, ça demande un hardfork il me semble. Par contre au benchmark sur Waves c'est plusieurs milliers de TPS.
full member
Activity: 308
Merit: 110
August 10, 2018, 02:16:24 AM
#10
Le sharding n'est envisageable que sur du PoS. Cela irait à l'encontre du protocole PoW où chaque nœud est garant de l'intégralité de la blockchain (tous les nœuds traitent tous les blocs).

Les vitesses de TPS annoncées grâce au sharding sont encore bien supérieures à celles des PoS / DPoS classiques. Cela permet de commencer à imaginer des blockchains qui soient véritablement utilisables à grande échelle. Mais effectivement, le problème est de savoir comment articuler et indexer les différents shards et surtout comment garantir l'intégrité de la blockchain. Concrètement, je suis absolument incapable de te dire comment les shards sont implantés et liés entre eux, ça dépasse de beaucoup mes compétences !

Ce problème renvoie à l'impossible trinité, ce que Buterin appelle le blockchain trilemma à savoir que l'on ne peut pas cumuler: sécurité / scalabilité / et décentralisation. Pour qu'une blockchain soit suffisamment évolutive, il faut nécessairement sacrifier la décentralisation ou la sécurité. EOS par exemple à sacrifié la décentralisation en s'appuyant sur 21 délégués.



Comme exemple, j'ai récemment traduis les projets: Usechain et Skynet qui prévoient d'utiliser le sharding. C'est souvent comparé aux blockchains 3.0.
Usechain a atteint son hardcap très facilement il y a quelques jours et le projet a l'air sérieux. Ils devraient être listé à la mi-août. Skynet débute tout juste, mais j'ai eu un mal fou à traduire leur WP ! C'est ultra technique, mais vraiment intéressant (tu devrais y jeter un œil si l'aspect technique t’intéresse). Ils annoncent plus d'un million de TPS ... (même si c'est facile d'annoncer pleins de choses). Je sais pas du tout ce que ça donnera. Il y a aussi TON, Polkadot ou Cosmos. Et il y en a surement beaucoup d'autres. (Je précise à ceux qui liraient que c'est juste à titre d'exemple !)

Je ne connais pas assez le protocole Bitcoin NG pour faire de comparaison. Et j'avoue que la solution du LN à traiter les transactions off-chain ne me convainc pas plus que ça. À quoi sert la blockchain si on traite les transactions hors chaîne ? Si tu as des infos, n'hésite pas, je suis preneur !

hero member
Activity: 1138
Merit: 574
August 09, 2018, 07:27:25 AM
#9
Merci pour le complément d'infos. Je voulais rajouter une partie sur l'intégration du sharding dans une blockchain, mais j'ai pas eu le courage encore !  

D'après ce que j'ai compris, les nœuds d'une blockchain pourraient n'héberger qu'un seul shard et donc ne traiter que les transactions liées à ce shard. Du coup, au lieu d'avoir tous les délégués qui traitent l'intégralité de la blockchain, chaque shard serait contrôlé par seulement quelques délégués, ce qui permettrait d'augmenter énormément les vitesses de traitement de données. Pour la blockchain, l'avantage est assez évident : cela permet d'imaginer un nombre de TPS extrêmement élevé.  

Ce que je ne comprend pas bien en revanche, c'est comment la sécurité de la blockchain est maintenue avec si peu de validateurs par shard.

Je tente d'imaginer le truc mais ça ne colle pas bien avec les quelques connaissances que j'ai.

Une blockchain, qu'elle soit PoS ou PoW traite (majoritairement) les transactions à coup de blocs. Historiquement parlant, seul les nouveau blocs sont traité, les autres servent notamment à valider l'intégrité de la chaine. Donc la je ne vois pas l'intérêt du sharding, ni comment ça pourrai améliorer les choses.

Cependant, si l'on divise la blockchain en micro-sous-blockchains, comme si il y en aurai plusieurs, alors peut être que oui on pourrai gagner en TPS.
Supposons que c'est jouable, alors il faudra une entité décentralisée qui décide sur quel sous-chaine les transactions sont attribuées. Il faudra aussi créer un lien entre toutes ces sous-chaines, ce qui créera irrémédiablement des doublons entre sous-chaines (ex: j'envoi mes coins depuis ma sous-chaine sur une adresse d'une autre sous-chaine).

Si le but c'est seulement d'augmenter les TPS, je pense qu'il y a d'autres solutions de scaling moins complexe. Comme le protocol Bitcoin NG, adopté par Waves qui autorise plusieurs milliers de Tx par sec, ou un 2nd layer comme le LN.

Si tu as un exemple de projet qui veux sharder, je veux bien le lien pour me renseigner car pour l'instant je ne trouve pas vraiment l'intérêt.
full member
Activity: 308
Merit: 110
August 09, 2018, 05:58:12 AM
#8
Merci pour le complément d'infos. Je voulais rajouter une partie sur l'intégration du sharding dans une blockchain, mais j'ai pas eu le courage encore !  

D'après ce que j'ai compris, les nœuds d'une blockchain pourraient n'héberger qu'un seul shard et donc ne traiter que les transactions liées à ce shard. Du coup, au lieu d'avoir tous les délégués qui traitent l'intégralité de la blockchain, chaque shard serait contrôlé par seulement quelques délégués, ce qui permettrait d'augmenter énormément les vitesses de traitement de données. Pour la blockchain, l'avantage est assez évident : cela permet d'imaginer un nombre de TPS extrêmement élevé.  

Ce que je ne comprend pas bien en revanche, c'est comment la sécurité de la blockchain est maintenue avec si peu de validateurs par shard.
hero member
Activity: 1138
Merit: 574
August 09, 2018, 02:04:27 AM
#7
Sharding ou pas sharding, ce qui compte c'est la manière dont sont indexées les données. Pour du Redis, MySQL, MongoDB ou autre, il y a tout intérêt à sharder lorsque la base de données devient conséquente. On gagne de la rapidité et de la sécurité (mais en échange de complexité).
Lorsque l'on ne shard pas, ce sont les bases de données qui se chargent de l'indexation, en suivant le paramètres utilisateur supplémentaires.

Dès lors qu'il y a sharding, il faut soit même créer un nouvelle index de manière à orienter les requêtes.

Pour une "base de données" telle qu'une blockchain, je ne vois pas du tout les avantage du sharding, en fait je pense même qu'il n'y a que des inconvenances. Si quelqu'un y voit un avantage je serai curieux de savoir lequel.
jr. member
Activity: 89
Merit: 7
August 06, 2018, 07:59:07 AM
#6
Merci pour le message et les explications trés intéressantes ! Il y a justement shardcoin sur lequel je pense qu'il y a un gros potentiel, ne serais ce qu'avec le stacking


 Je regarderais  aussi shardcoin,  mais  personnellement  je vais surtout attendre le  sharding  sur  ETH  et vois si ca  fontionne bien, j'ai  plus confiance  dans un developpmnt fait  par ETH
full member
Activity: 308
Merit: 110
July 23, 2018, 12:40:52 AM
#5
Il y a justement shardcoin sur lequel je pense qu'il y a un gros potentiel, ne serais ce qu'avec le stacking
Je vais jeter un oeil, merci du conseil. En règle générale, j'évite d'investir dans les projets de moins d'un an, histoire d'éviter une bonne partie des projets douteux. Mais c'est clair que tous les projets PoS vont s'y mettre vu les possibilités de scalabilité que ça apporte, c'est pas idiot de parier dessus et c'est surtout le bon moment.



Je rajouterai quand j'aurai la motiv une partie sur ce qu'apporte le sharding à la blockchain. je réalise que j'ai complètement zappé ça.
hero member
Activity: 1806
Merit: 682
July 21, 2018, 11:42:50 AM
#4
Merci pour le message et les explications trés intéressantes ! Il y a justement shardcoin sur lequel je pense qu'il y a un gros potentiel, ne serais ce qu'avec le stacking
full member
Activity: 308
Merit: 110
July 20, 2018, 08:51:20 PM
#3
Pour le moment, il semble quasiment impossible d'utiliser le sharding sur un protocole 100% PoW. En gros, ce qui garantit la sécurité de la PoW, c'est le fait que tous les mineurs conservent l'intégralité du registre distribué (la base de données de bitcoin). Du coup, difficile de concevoir comment découper ce registre distribué sans détruire le concept.

Voilà pourquoi le sharding est plutôt destiné au protocole PoS.
jr. member
Activity: 89
Merit: 7
July 19, 2018, 09:35:46 AM
#2
Le  sharding  ne  sera  disponible  que  sur les crypto en POS  d'apres ce que j'avais  entendu .
full member
Activity: 308
Merit: 110
July 19, 2018, 09:27:59 AM
#1
Bon, autant mon dernier pavé sur les méthodes de consensus de la blockchain fait partie des bases à connaître (si si), autant la technologie du sharding, ça devient relativement complexe. Du coup, je compte sur vous pour me corriger ou me compléter si besoin. "Shard" et "sharding" on retrouve ces mots de plus en plus souvent et dans de plus en plus de projets.

Quand on parle de sharding, on parle de bases de données horizontales. Ouais voilà, je sais, ça commence mal.

Alors reprenons. Une base de données, c'est comme un tableur excel avec plusieurs colonnes et plusieurs lignes, où chaque ligne représente une nouvelle entrée. Sauf que la taille d'une base de données peut vite atteindre des proportions importantes.
Par exemple, Amazon et Youtube ont chacun des bases de données contenant plus de 45To d'informations ! Dans le cas de Facebook, et l'info date de 2013, c'est plus de 30Po de données !
http://www.base-de-donnees.com/plus-grosse-base-de-donnees/

Puisque toutes les nouvelles données sont ajoutées les unes à la suite des autres, on parle de base de données verticale. Dans ce genre de bases de données gigantesques, la moindre recherche prend tout de suite une éternité et nécessite en plus des ressources informatiques considérables. On parle de charge informatique.

C'est là qu'intervient la technologie du sharding. Le concept fondamental du sharding repose sur l'idée que la taille d'une base de données augmente de façon linéaire, mais le temps de réponse pour interroger la base de données augmente lui de façon exponentielle. Le sharding se propose donc de découper une base de données en plusieurs petites bases de données indépendantes les unes des autres, mais interconnectées si nécessaire. Ces « sous-bases » de données sont appelées "shards". En somme, le sharding constitue une nouvelle architecture pour les bases de données. C'est à cause de ce découpage d'une base de données en plusieurs parties que l'on parle d'architecture horizontale.

Ça apporte de nombreux avantages et c'est pas pour rien que beaucoup de projet récents s'appuient désormais sur cette technologie.  

Concrètement, ça sert à quoi ?

  • Chacun de ces shards peut être stockés sur différents serveurs. Cela permet de distribuer la base de données entre plusieurs serveurs ou même plusieurs lieux géographiques et donc de répartir les charges nécessaires pour y accéder.
  • Puisque les shards sont de plus petite taille, la taille des index (genre de sommaire à BdD) est, elle aussi, considérablement réduite. Les requêtes sont donc beaucoup plus rapides et nécessitent beaucoup moins de ressources.
  • Il est possible de n'utiliser que le shard où se trouve l'information requise. Un exemple qui revient souvent est celui des consommateurs américains et des consommateurs européens. Selon le marché désiré, on pourra désormais se concentrer uniquement sur le shard contenant les données pertinentes et plus sur l'intégralité de la base de données. À nouveau, on a une économie de charge informatique et un gain de temps.
  • Des petites BdD sont beaucoup plus simples à mettre en place et à gérer et elles sont également beaucoup moins coûteuses.
  • Même si un shard est momentanément indisponible, les autres shards restent accessibles.

En fin de compte, le sharding est une grande avancée dans tous les domaines où des bases de données de taille conséquente sont requises. Et comme une blockchain n'est jamais qu'une base de données, blockchain et sharding vont de pair.

Il y a malgré tout quelques points négatifs qui ressortent :

  • Une plus grande dépendance à l'interconnexion entre les serveurs, puisque les shards sont répartis sur plusieurs serveurs.
  • Une augmentation de la latence si l'on doit accéder à plusieurs shards à la fois lors d'une requête.
  • Les données ou les index ne sont souvent "shardés" que d'une seule façon, de sorte que certaines requêtes seront optimales, tandis que d'autres seront plus lentes ou même impossibles.
  • Il faut gérer et maintenir un parc de serveurs.

Bon, voilà qui devrait suffire. C'est très théorique, mais ça permet de se faire une idée de ce qu'est le sharding. Puis ça commence à dépasser mes compétences de toutes façons !
N'hésitez pas si vous avez des remarques.




Deux liens sur lesquels je me suis appuyés :

https://en.wikipedia.org/wiki/Shard_(database_architecture)
https://searchcloudcomputing.techtarget.com/definition/sharding
Jump to: