Dans l’esprit du développeur blockchain: la crise de la mise à l’échelle verticale

Dans l’esprit du développeur blockchain: la crise de la mise à l’échelle verticale

Societe generale crypto monnaie

Il s’agit de la deuxième partie d’une série en trois parties dans laquelle Andrew Levine décrit les problèmes auxquels sont confrontées les blockchains héritées et propose des solutions à ces problèmes. Lisez la partie 1 sur le crise de l’évolutivité ici et la troisième partie sur la crise de la gouvernance telle qu’elle se concrétise le 25 septembre.

L’avènement d’Internet a révélé que nous avons un moi numérique qui peut amplifier notre puissance dans le monde réel grâce à la capacité d’interagir avec des personnes n’importe où sur Terre et de coordonner des actions que notre moi physique ne pourrait jamais.

Mais notre moi numérique est enchaîné – emprisonné sur des ordinateurs privés appartenant à Facebook, Google, Amazon, Netflix, Twitter, et la liste est longue. Ces monopoles privés ne produisent pas réellement de technologie; au contraire, leur produit, c’est nous – notre moi numérique – et leur seul objectif est d’extraire autant de valeur de nous que possible.

De nombreuses personnes reconnaissent le potentiel de la technologie blockchain à perturber ces monopoles et oligopoles privés, mais malheureusement, aucune blockchain spécifique n’a été en mesure d’aller au-delà des murs de la communauté existante de la blockchain et de la crypto-monnaie.

Et si c’était le cas, il ne serait pas techniquement capable de soutenir le type de croissance et d’adoption nécessaire pour permettre à chaque personne sur Terre de prendre le contrôle de sa personnalité numérique. Pourquoi donc? Est-ce juste une question de choisir les bonnes fonctionnalités? Vous passez à la preuve de participation? Sharding?

Malheureusement, le problème est bien plus important qu’une ou deux fonctionnalités manquantes et ne sera pas résolu par les modifications prévues des protocoles existants, car les problèmes sont à la base même de la façon dont ils sont construits. L’architecture même limite le potentiel de ces plates-formes à évoluer verticalement.

Qu’est-ce que la mise à l’échelle verticale?

La mise à l’échelle verticale permet de gérer la croissance d’un seul nœud (ordinateur) dans un réseau. Les blockchains sont des bases de données qui ne rejettent jamais d’informations. Les informations sont uniquement ajoutées à la base de données, jamais supprimées. Cela fait de la croissance un problème encore plus grave. Non seulement cela, mais la plupart des blockchains ne sont pas conçues pour utiliser efficacement les différentes parties d’un ordinateur. Cela s’ajoute à une grosse base de données, consommant beaucoup de ressources de calcul sur une machine donnée de manière inefficace.

Afin de compenser ces lacunes, les opérateurs de nœuds s’appuient sur du matériel coûteux de niveau entreprise – en particulier, une mémoire à accès aléatoire, ou RAM, et une mémoire non volatile express, ou NVMe, ce qui pousse la participation au réseau (fonctionnement des nœuds) au-delà du saisir des gens ordinaires. Et d’une manière ou d’une autre, nous sommes censés croire que ce n’est pas mauvais pour la décentralisation!

Mais le sharding!

Ironiquement, l’un des arguments les plus solides en faveur de l’existence d’une crise d’échelle verticale est le niveau de demande de solutions d’échelle horizontale.

Au moment d’écrire ces lignes, un nœud complet Ethereum ne dépasse toujours pas 500 Go. Ce n’est rien! Et pourtant, il est également absolument vrai qu’un mécanisme compliqué et risqué doit être ajouté à Ethereum afin que sa blockchain puisse être décomposée en morceaux, et que de précieuses ressources de calcul doivent être dépensées simplement pour permettre à ces «fragments» de communiquer les uns avec les autres, et encore moins effectuer des calculs significatifs.

Le problème est que la mise à l’échelle horizontale – le sharding – ne remplace pas la mise à l’échelle verticale. Imaginez que vous ayez une usine produisant 1 000 voitures par an, mais qu’il y ait une demande suffisante pour 2 000 voitures. Que faites-vous en premier: construire une nouvelle usine ou essayer de fabriquer plus de voitures hors de l’usine que vous avez déjà? La mise à l’échelle verticale optimise l’usine pour produire plus de voitures avant de simplement construire une nouvelle usine. Les nœuds de la blockchain sont «l’usine» et ce qui détermine leur sortie est l’efficacité avec laquelle ils utilisent les composants d’un ordinateur.

Parlant d’expérience directe, les blockchains ne sont horriblement pas optimisées en ce qui concerne la gestion des ressources de nœuds, ce qui en fait le candidat idéal pour les solutions de mise à l’échelle verticale.

Dans la blockchain, il existe essentiellement deux lignées: Ethereum et BitShares. Beaucoup de gens ne sont peut-être pas familiers avec BitShares, mais sa conception architecturale sous-tend certaines des blockchains les plus performantes de l’espace, notamment EOS, Hive et Steem. Alors qu’Ethereum, et les nombreuses chaînes qui en sont inspirées, reste la blockchain polyvalente la plus appréciée avec les applications les plus décentralisées et les utilisateurs uniques, la ligne BitShares domine absolument en termes d’activité de transaction brute, ce qui en fait le roi de la performance.

Mon équipe a sans doute plus d’expérience dans la gamme BitShares que toute autre équipe sur Terre, nous allons donc nous concentrer sur cette conception. Parce que les blockchains de la ligne BitShares sont capables d’effectuer autant de transactions par seconde, cela augmente en fait l’importance de la mise à l’échelle verticale – car leur état de blockchain croît beaucoup plus rapidement.

Mise à l’échelle verticale, RAM et fourches

La mise à l’échelle verticale, dans le contexte informatique, consiste essentiellement à utiliser la forme la moins chère de mémoire (disque) chaque fois que possible et dans la mesure du possible. Dans le cas des blockchains, les deux processus les plus pertinents sont la résolution de fourche et l’état de stockage. Il existe toutes ces différentes versions de la base de données («fourchettes»), et les nœuds doivent parvenir à un consensus sur lequel est la «bonne». C’est la résolution de fourche.

Maintenant, vous avez une base de données irréversible qui doit être stockée. Idéalement, vous voulez que cela soit stocké sur le support le moins cher possible (disque) par opposition au plus cher (RAM).

Parce que vous voulez que les fourches soient résolues le plus rapidement possible, vous voulez que ces calculs soient effectués en RAM (mémoire rapide). Mais une fois que les fourchettes ont été résolues et que de nouvelles transactions ont été ajoutées à l’état irréversible, vous souhaitez stocker cette base de données sur le disque. Le problème avec les blockchains de la ligne BitShares est qu’elles atteignent leurs performances grâce à une conception qui ne reflète jamais réellement l’état actuel de la blockchain. Au lieu de cela, lorsque chaque bloc est appliqué, l’état de la transaction en attente est «annulé», les anciennes valeurs sont réécrites dans la base de données, puis le bloc est appliqué.

Un problème avec cette approche est que la plupart du temps, cela signifie effectuer à nouveau exactement les mêmes calculs et réécrire le même état dans la base de données qui était juste là, ce qui est extrêmement inefficace.

Lecture et écriture: l’arithmétique

Encore plus pertinent pour la question de la mise à l’échelle verticale est que cette conception signifie que l’état irréversible dans son ensemble ne peut pas être stocké sur le disque sans avoir à «sauter» les blocs hors du disque et dans la RAM pour résoudre les fourchettes. Non seulement cela augmente la charge de RAM sur un nœud donné, mais cela a également des conséquences très graves en ce qui concerne l’exploitation de RocksDB.

RocksDB est une technologie de base de données développée par Facebook pour alimenter son fil d’actualité. Bref, cela nous permet d’obtenir les performances de la RAM mais à partir du disque. De nombreux projets de blockchain utilisent RocksDB de différentes manières, mais le problème avec la conception de la base de données que nous avons décrite est que le besoin constant d’annuler les transactions en attente et de réécrire dans la base de données annule les avantages de RocksDB.

Le fil d’actualité de Facebook est entièrement consacré aux lectures de bases de données. Pensez au nombre de messages que vous faites défiler avant de vous engager dans un seul. Pour cette raison, RocksDB est conçu pour fonctionner au mieux lorsqu’il y a beaucoup plus de lectures dans la base de données que d’écritures. La conception de la base de données décrite ci-dessus conduit à tant d’écritures de base de données qu’elle annule les avantages même de l’utilisation de RocksDB.

Afin de tirer pleinement parti de RocksDB, nous devons reconstruire la blockchain à partir de zéro pour transférer efficacement les blocs de la RAM vers le disque tout en minimisant le nombre d’écritures afin de bénéficier de RocksDB. Nous pouvons accomplir cela en éliminant le besoin d’annuler / réécrire et en créant une base de données unique qui suit l’état irréversible et n’a jamais besoin d’être annulée.

Cela nous permettrait de minimiser l’utilisation de la RAM dans les nœuds en transférant efficacement les blocs irréversibles de la RAM vers le disque sans avoir à les ramener. Nous estimons que cela pourrait réduire le coût de fonctionnement d’un nœud jusqu’à 75%! Non seulement cela rendrait le fonctionnement des nœuds plus accessible, augmentant le nombre de nœuds en fonctionnement, mais ces économies de coûts seraient finalement transmises aux utilisateurs et aux développeurs.

Limiter les blockchains ou les blockchains illimitées?

Les blockchains existantes atteignent les limites de performance de ce qu’elles peuvent obtenir d’un seul nœud en raison de la façon dont elles résolvent les fourches et de la manière dont elles stockent leur état de blockchain. Dans cet article, nous avons expliqué comment la conception de bases de données peut conduire à un processus de résolution de fourche qui augmente l’utilisation de la RAM ainsi que des écritures de base de données qui annulent les avantages qui pourraient découler de l’utilisation de RocksDB, conduisant finalement à des nœuds de blockchain moins efficaces.

La vérité est que la mise à l’échelle verticale ne se résume pas à ce seul problème. Les écosystèmes de la blockchain sont complexes, avec de nombreux composants qui se rétroagissent. Diminuer le coût de fonctionnement d’un nœud individuel est essentiel pour augmenter le nombre de nœuds en fonctionnement et réduire les coûts d’utilisation du réseau, mais il y a aussi d’énormes gains à réaliser en minimisant la congestion du réseau, en encourageant un fonctionnement efficace des nœuds et plus encore.

Notre objectif n’est pas d’expliquer en détail comment on peut résoudre le problème de mise à l’échelle verticale, mais de donner un aperçu de la nature de ce que nous pensons être un problème considérablement sous-estimé dans l’espace de la blockchain. L’évolutivité horizontale est absolument un domaine d’intérêt très important, mais si nous ignorons le problème de l’évolutivité verticale, tout ce que nous accomplirons par une mise à l’échelle horizontale est d’augmenter considérablement le nombre de nœuds horriblement inefficaces.

Les opinions, pensées et opinions exprimées ici sont la seule de l’auteur et ne reflètent ni ne représentent nécessairement les vues et opinions de Crypto.

Andrew Levine est le PDG d’OpenOrchard, où lui et l’ancienne équipe de développement derrière la blockchain Steem créent des solutions basées sur la blockchain qui permettent aux gens de s’approprier et de contrôler leur moi numérique. Leur produit fondamental est Koinos, une blockchain haute performance construite sur un tout nouveau cadre conçu pour donner aux développeurs les fonctionnalités dont ils ont besoin afin de fournir les expériences utilisateur nécessaires pour étendre l’adoption de la blockchain aux masses.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *