Place aux développeurs de base Ethernet: MPT seize arbre sera remplacé

EDITORIAL:

Imaginez que vous traduisez un livre de 5000, l'auteur a été appelé à vous raconter une histoire qu'il a fait sur l'ajustement, ce qui affectera les pages que vous avez traduit ...... et cela pourrait durer éternellement, c'est la place Ethernet la transition de MPT-seize arbre actuellement utilisé comme une structure d'arbre binaire situation similaire rencontrée. À cet égard, la place des développeurs de base Ethernet Guillaume présente Ballet un programme, il peut dans environ quelques jours, trois étapes pour terminer la procédure de conversion.

(Photo: tuchong.com)

Pour cette proposition, vitalik co-fondateur Ethernet place a commenté:

« Il est important de la recherche fondamentale du Ballet, qui deviendra la place conviviale Ethernet sans état, tout en créant une occasion de simplifier considérablement le protocole. Réjouissez-vous dans les mois à venir, d'Ethernet place 1.x développeurs mieux le travail et les réalisations. "

Ce qui suit est une traduction:

L'une des nombreuses questions qui touchent Ethernet Square est les données du compte de stockage et de contrat, Ethernet place actuellement sélectionné dans des structures appelées Merkel Pat Natsuki (Merkle Arbre Patricia, ou tout simplement MPT). Bien qu'en théorie, il est logique, mais dans la pratique, il apporte des problèmes qu'il a résolu le problème plus. Au fil des ans, les principaux développeurs ont discuté de la transition vers un arbre binaire (arbre binaire), et dans cet article, je vais clarifier mon point de vue sur cette question, puis donner une solution.

Le processus proposé introduit une période de transition, au cours de laquelle les deux l'arbre continuera d'exister. L'avantage est que, au moment de la structure d'arbre de conversion, la colonne vertébrale peut rester opérationnel, et aussi pour faire en sorte que tous les comptes seront convertis en format binaire.

fond

À l'heure actuelle, compte Ethernet Square est stocké dans un arbre parmi les seize. Le soi-disant seize fourchette, cela signifie qu'un noeud a 16 nuds enfants, en théorie, ce qui est bon, parce que cela signifie que vous avez besoin de moins « étapes » pour stocker toutes vos données.

Par exemple, sous la forme de seize arbre qui représente le processus de clés et des valeurs (170, v) de. En hexadécimal, exprimée en 0xAA 170, vous avez donc besoin que de deux couches: la première pour une seconde, une autre couche a.

Figure 1: Ceci est un exemple seize arbre montrant une fourchette de Trie la valeur de « v » Comment la 0xaa clé stockée. Cet arbre est seulement 2 octets clés longues, et seulement le long de la sous-arborescence 0xaa obligataire est élargi. Par souci de concision, ne sont pas remplacés sont des sous-arbres concernés par « .... »

Notez que cet arbre est très peu profonde et très large. Ensuite, l'arbre binaire suivant avec la même valeur de clé qui indique la comparaison. En binaire, 170 est représenté comme 10101010.

Figure 2: et la figure 1. même paire de clés stockées sous la forme d'un arbre binaire. Par souci de concision, ne sont pas sous-arbre concerné est représenté comme « .... »

Vous pouvez voir cet arbre à être beaucoup plus profond, beaucoup trop étroite.

Placer dans un réseau Ethernet, chaque bloc contient un champ de stateRoot, qui est une valeur de hachage de la MPT racine. Dans l'ensemble, ce hachage, hachage dans la liste des 16 sous-éléments de la racine HASHED obtenus. Ces sous-colonnes chaque hachage, hachage qui est à son tour sous-hash, et ainsi de suite.

Chaque fois qu'un nouveau bloc est généré, les mineurs seront mis à jour et recalculera leur arbre compte de la valeur de hachage racine. hachage StateRoot stockée dans le nouveau bloc dans le champ, puis un nouveau bloc est scellé.

La figure 3 l'état des points sur le terrain Les en-tête de la zone racine à la racine de l'arbre seize ans. Le problème se pose ici: à la racine recalcule de hachage prend trop de temps en hachant tous les nuds, donc, afin de calculer le nud racine, permet de récupérer les mineurs Hacher le même niveau (de hachage frères et soeurs) de la base de données. Malgré l'acquisition de tous les cotylédons et l'arbre entier de la base de données nécessaire pour être beaucoup hashing temps, mais cela nécessite encore beaucoup de temps. En effet, vous devez obtenir à partir de la base de données chaque hachage.

Dans le seizième arbre de fourche, généralement toutes les étapes pour obtenir le même niveau de 15 hachage. Dans l'exemple ci-dessus, c'est 30 Hash.

Encore plus profond, arbre binaire chaque besoin de scène que hachage frères et soeurs. Dans l'exemple ci-dessus, seulement 8 Hash! Voilà pourquoi, dans la pratique, l'arbre binaire est en fait une meilleure raison d'être.

transformation couvrant

Malheureusement, au commutateur Ethernet place du seizième à l'arbre binaire est pas une tâche facile. Il y a beaucoup de besoins de données à convertir, et la mise en uvre du changement prend plus de 15 secondes de blocs de temps .

De plus, imaginez que vous traduisez un livre de 5000, l'auteur a été appelé pour vous dire qu'il a fait des ajustements à l'histoire, ce qui affectera les pages que vous avez traduit ...... et cela pourrait durer éternellement .

Tel est le problème rencontré actuellement Ethernet place, car les utilisateurs peuvent mettre à jour la conversion d'adresse, ce qui signifie que vous devez commencer le processus de conversion.

Pour résoudre ce conseil en question est de mettre en place une période de transition, au cours de laquelle le sommet de seize arbre couvert en plaçant un arbre binaire, son rôle est d'enregistrer l'état de tous les changements qui se produisent jusqu'à ce que l'arbre de base dans un arbre binaire.

Cette transition sera divisée en trois étapes:

Étape 1 - Conversion

Dans ce procédé, il est déterminé à la hauteur du bloc H1, le bloc ayant deux stateRoots: l'un pour l'arbre Seize « base », pour un arbre binaire « de recouvrement ».

La figure 4: Dans le processus de conversion, le bloc ayant deux état de la racine (état de racine): une lecture seule seize racine de l'arbre conventionnel, la seconde est la racine « couverture » arbre binaire.

Seize arbres est considéré comme en lecture seule, de sorte que toute mise à jour sur l'état sera mis à jour pour couvrir l'arbre.

Lorsqu'une transaction est lue ou mettre à jour un compte, le système recherche d'abord les arbres couverts. Si vous ne trouvez pas le compte là, le système recherchera la valeur dans le vieil arbre de la fourche seizième.

Tout en même temps, seize arbres sont conversion en arrière-plan. Maintenant, vous ne pouvez pas vous soucier de l'insertion, parce que toutes les modifications sont stockées dans le haut de l'arbre.

Étape 2 - Conversion

Après le processus de conversion de fond est terminée, les mineurs vont remplacer la lecture seule base de la racine seize arbre en convertissant le résultat d'annoncer qu'ils sont prêts à passer. Lecture et d'écriture au même état à l'étape 1.

Figure 5: Conversion de la deuxième étape, l'arbre basé zone d'en-tête racine seize conversion binaire remplacé par leur base de racine pour transmettre un signal au réseau, les informant prêt.

Lorsqu'une séquence de bloc assez grand a la même valeur sur la base de la racine après la conversion, ce qui signifie que la plupart des mineurs ont terminé la conversion, et l'apparition de l'arbre après le consensus de conversion. Il a ouvert, pour entrer dans le processus de fusion.

Étape 3 - Fusionner deux arbres

processus de fusion de manière progressive: chaque fois qu'un nouveau bloc, n clés sont supprimés de la superposition, puis réinséré dans la base de l'arbre. Ce processus se poursuit jusqu'à ce que vous supprimez toutes les clés de la superposition. A ce stade, supprimer l'en-tête de la zone racine couvrant état.

En outre, si la transaction est écrite pour couvrir la mise en uvre d'un arbre clé trouvée, la clé est supprimée du couvert forestier et écrit directement sur l'arbre de base.

L'étape suivante

Nous avons créé un premier prototype, afin d'estimer le temps nécessaire pour terminer la conversion. Nous pensons que l'ensemble des processus peut (environ quelques jours) pour terminer dans un délai raisonnable. Avec l'algorithme amélioré, je posterai plus de détails.

Remerciements

La proposition a bénéficié de commentaires Alexey Akhunov, Vitalik Buterin, Anna George, Sina Mahmoodi, Tomasz Stanczak et Martin H. Swende fournies.

Discussions similaires: https: //ethresear.ch/t/overlay-method-for-hex-bin-tree-conversion/7104

« Ordonnance de non-repas » après la levée des chaudes et froides sont deux mondes différents: un petit prix des repas au restaurant ne peuvent pas ouvrir grand réchauffement
Précédent
plate-forme « Une des pièces d'émission clés » exposition secrètement supplémentaire à trois non-projet
Prochain
réseau Bitcoin pleine compréhension du progrès: le volume quotidien des transactions à 34 millions de transactions, le nombre total de portefeuille Bitcoin le réseau entier jusqu'à 47 millions
Pantera CEO Capital: l'économie mondiale traverse une récession sans précédent, Bitcoin viendra à échéance en ce jour et l'âge
colonne Babbitt
analyse du marché QKL123
Recherche plongé Jiucheng, la panique continue, Bitcoin bas précédent ont le même signal?
Honda Inspire résultats collision de recherche médiateur libéré, vieux rougi Passat
3,9 secondes pour accélérer, qui est installé chinois BYD combien de moteurs?
Pourquoi le moteur 2.5L Mazda est devenu une blague?
4500002700 pour acheter le Prado, le propriétaire est à la fin de l'argent ou pas d'argent?
En seulement deux ans, l'histoire d'OKB a augmenté jusqu'à 1400%! Retour sur investissement incroyable mais juste le début
USDT fiche complète supplémentaire de huit jours: l'ajout fait 5,4 milliards et l'argent?
293000 m²! Huangyan troisième Omura fin parfaite des travaux de démolition