Échange de crypto Échange de crypto
Ctrl+D Échange de crypto
ads
Domicile > FTX > Info

Synchronisation par phases Ethereum : refactorisation du mode de synchronisation complète (Full Sync)

Author:

Time:

La synchronisation par étapes est refactorisée à partir du mode de synchronisation complète de Go-Ethereum pour de meilleures performances.

La synchronisation par phases nécessite de nombreuses opérations de lecture et d'écriture. Bien que notre objectif soit de pouvoir synchroniser les nœuds sur les disques durs, nous recommandons toujours d'utiliser des disques SSD.

Comme son nom l'indique, la synchronisation par phases nécessite l'exécution séquentielle de 10 phases.

Le client Turbo-Geth apprend de chaque pair le bloc HEAD du nœud (c'est-à-dire le dernier bloc), puis exécute chaque phase tour à tour, en recherchant l'écart manquant entre le bloc HEAD local et le bloc HEAD du pair.

La première phase (téléchargement des en-têtes de bloc) définit le bloc HEAD local.

Les étapes sont exécutées séquentiellement. Lors de l'exécution de chaque étape, l'étape ne se terminera pas tant que l'état local du nœud n'aura pas atteint l'état cible.

Autrement dit, dans des circonstances idéales (pas de panne de réseau, pas de redémarrage d'application, etc.), chaque étape ne doit être exécutée qu'une seule fois pour terminer la synchronisation initiale.

Après la dernière étape, tout le processus de synchronisation recommencera, à la recherche de nouveaux en-têtes de bloc à télécharger.

Nansen : L'afflux net du portefeuille Ethereum de Binance au cours des dernières 24 heures était d'environ 718 millions de dollars américains : Jinse Finance a rapporté que la société de données nansen a déclaré : Au cours des dernières 24 heures, l'afflux net du portefeuille Ethereum de Binance était d'environ 718 millions de dollars américains . (Golden Ten)[2022/12/14 21:44:53]

Si vous redémarrez l'application entre deux étapes, l'application redémarrera à partir de la première étape.

Si vous redémarrez l'application pendant l'exécution d'une étape, l'application redémarre à partir de l'étape actuelle pour terminer cette étape.

A travers le camembert ci-dessous, nous pouvons voir la proportion chronophage de chaque étape (ce sont les données obtenues à partir de la synchronisation complète). Bien que ces données ne soient pas précises, mais suffisantes comme référence.

Si la blockchain se réorganise, nous devons "annuler" certaines des données synchronisées.

La régression fait référence à la régression de la dernière étape à la première étape. Cependant, une chose à noter est que le pool de transactions n'est pas mis à jour tant que nous n'avons pas effectué le repli, nous connaissons donc le nouveau nonce.

La valeur de marché de l'USDC sur Ethereum a dépassé 40 milliards de dollars, dépassant l'USDT : Le 13 avril, selon les données de CryptoRank, la valeur de marché de l'USDC, le stablecoin en dollars américains sur le réseau Ethereum, a dépassé 40 milliards de dollars, dépassant l'USDT. [2022/4/13 14:21:19]

L'ordre des phases de la restauration est illustré dans l'exemple ci-dessous (se déroule de manière séquentielle de droite à gauche).

état.unwindOrder = []*Stage{

   // Dénouement du pool tx (la réinjection des transactions dans le pool doit avoir lieu après l'exécution du dénouement)

  étapes, étapes, étapes, étapes, étapes, étapes, étapes, étapes, étapes, étapes,

 }

Prétraitement via  ETL 

Fondateur de Messari : Ethereum est un atout défensif : le fondateur de Messari, Ryan Selkis, a tweeté son point de vue sur l'ETH, estimant que l'ETH est un atout défensif. L'ETH alimente la blockchain Ethereum, qui est incroyablement précieuse. Vous avez besoin d'ETH pour miser et sécuriser les transactions. [2020/12/14 15:06:49]

Certaines étapes utilisent notre framework ETL pour trier les données par valeur clé avant de les insérer dans la base de données.

Cela peut réduire considérablement la situation d'amplification d'écriture de base de données (amplification d'écriture).

Ainsi, lorsque nous générons un index, ou Hashed State, nous passons par un processus en plusieurs étapes.

Écrivez les données traitées dans plusieurs fichiers temporaires situés dans le répertoire de données ;

Utilisez ensuite une pile (tas) pour insérer les données du fichier temporaire dans la base de données et insérez les données dans l'ordre qui peut minimiser l'amplification d'écriture de la base de données.

Cette optimisation augmente parfois la vitesse d'écriture de plusieurs ordres de grandeur.

Chaque étape contient deux fonctions, qui sont ExecFunc dans l'étape avant et  UnwindFunc dans l'étape arrière.

MaticNetwork, la solution d'extension de la chaîne latérale Ethereum, intègre le service oracle Razor : MaticNetwork, la solution d'extension de la chaîne latérale Ethereum, a annoncé qu'elle intégrera le service oracle Razor. Les développeurs sur Matic peuvent accéder de manière transparente aux données du monde réel, y compris DeFi, prêt, stablecoins, données décentralisées pour des applications telles que l'identification. Notez que Matic s'engage à utiliser la décentralisation, l'évolutivité et la sécurité pour promouvoir des applications à grande échelle via une solution d'expansion à deux niveaux, tout en utilisant le framework Plasma et un réseau de validateur PoS décentralisé pour assurer la sécurité des actifs. RazorNetwork est un projet oracle décentralisé qui fonctionne actuellement sur le réseau Ethereum et fonctionnera plus tard sur son propre réseau de preuve de participation. [2020/8/25]

En théorie, certaines étapes peuvent fonctionner hors ligne, mais la version actuelle n'implémente pas cette fonction.

Phase 1 : Télécharger les en-têtes de bloc

À ce stade, nous téléchargeons tous les en-têtes de bloc entre le bloc HEAD local et le bloc HEAD du pair.

Cette étape est gourmande en CPU et convient à une utilisation avec des processeurs multicœurs en raison de la preuve de travail requise pour vérifier les en-têtes de bloc.

La plupart des replis commencent à ce stade en raison des réorganisations de la blockchain.

Dynamique | Près de 17 000 MKR ont été transférés sur la chaîne Ethereum, d'une valeur d'environ 7,94 millions de dollars : Selon Whale Alert data monitoring, sur la chaîne Ethereum, à 07h15 heure de Pékin, 7450 MKR ont été transférés depuis des portefeuilles inconnus commençant par 0xd48d34 à 0x3c1265 Selon le prix actuel, le portefeuille inconnu vaut environ 3,4682 millions de dollars américains, et le hachage de la transaction est : 0xa5437bd2e9b052695bf45bb3147d50f6d404e0b7d8e5b8cf36b246045cd1548a. Puis à 07h28, heure de Pékin, le portefeuille a transféré 9 500 MKR supplémentaires vers un portefeuille inconnu commençant par 0x23d4c0. Selon le prix actuel, la valeur est d'environ 4,4733 millions de dollars américains et le hachage de la transaction est : 0xda8f807713c4cae748052aab1f04cfd9b3c9151f5af7a03e3394be0c463805fa. [2020/1/8]

Cette phase pousse le pointeur HEAD local (pointant vers le bloc mis à jour).

Phase 2 : Bloquer le hachage

Extrayez une table d'index qui mappe la valeur de hachage de bloc au numéro de bloc (blockHash -> blockNumber) à partir de l'en-tête de bloc pour prendre en charge une recherche plus rapide et rendre le processus de synchronisation plus convivial pour les disques durs mécaniques.

Étape 3 : Télécharger le corps du bloc

A ce stade, nous allons également télécharger le corps du bloc de l'en-tête de bloc téléchargé à l'étape précédente.

Une bonne connexion Internet est requise pour cette phase. La grande majorité des données est téléchargée à ce stade.

Phase 4 : Restauration de l'expéditeur

Cette étape récupère et stocke l'expéditeur de chaque transaction dans chaque bloc téléchargé.

Cette étape est également gourmande en CPU et convient à une utilisation avec des processeurs multicœurs.

Aucune connexion Internet n'est requise à ce stade.

Étape 5 : Exécuter des blocs

À ce stade, nous exécutons chaque transaction dans tous les blocs précédemment téléchargés.

Une chose à noter est que pendant l'exécution du bloc, nous ne vérifions pas le hachage racine, ni même créons un arbre Merkle.

Cette étape est monothread, ne nécessite pas de mise en réseau et occupe beaucoup d'espace disque. Si l'exécution du bloc échoue, l'étape peut être annulée.

Étape 6 : Calcul des racines d'état

Cette phase construit l'arbre Merkle et vérifie le hachage racine de l'état actuel.

Cette phase crée également des hachages intermédiaires et les stocke dans la base de données.

Si aucun hachage intermédiaire n'a été précédemment stocké (ce qui peut se produire lors de la première synchronisation initiale), cette étape construit l'arborescence Merkle complète et son hachage racine.

S'il n'y a pas de hachages intermédiaires dans la base de données, cette phase utilise l'historique du bloc pour déterminer quels hachages sont obsolètes et lesquels sont les plus récents, puis utilise les derniers hachages pour construire une partie de l'arborescence Merk Er, ne reconstruit que les hachages obsolètes .

Si le hachage racine ne correspond pas, il remonte d'un bloc.

Phase 7 : générer un état haché

Pendant l'exécution, Turbo-Geth utilise le stockage à l'état brut.

État brut : dans l'état standard (que nous appelons "état haché"), l'adresse du compte et de l'élément de stockage est  keccak256(adresse) , mais dans l'état général, l'adresse de est  adresse  .

Cependant, pour garantir que certaines API fonctionnent correctement et restent compatibles avec d'autres clients, nous générons également un état haché.

Si l'état haché n'est pas nul, nous examinons l'historique ChangeSet et ne mettons à jour que les éléments qui ont changé.

Aucune connexion Internet n'est requise à ce stade.

Étape 8, 9, 10  : Création d'un index

3 index sont générés lors de la synchronisation.

Ces 3 index peuvent être désactivés car ils ne sont utilisés par aucune API.

Index des requêtes de transaction

La table d'index consiste en un mappage des hachages de transaction aux numéros de bloc.

Index de l'historique du compte

L'index stocke un mappage des adresses de compte à une liste de blocs dans lesquels l'état du compte a changé.

Index historique du magasin

L'index stocke le mappage de l'adresse de l'élément de stockage à la liste des blocs où l'élément de stockage a changé dans une certaine mesure.

À ce stade, nous démarrons le pool de transactions ou mettons à jour son état. Par exemple, si certaines transactions sont incluses dans les blocs que nous avons téléchargés, ces transactions sont supprimées du pool de transactions.

Lors de la restauration, nous rajouterons les transactions du bloc restauré au pool de transactions.

Lien d'origine :

https://github.com/ledgerwatch/turbo-geth/tree/master/eth/stagedsync

Par Alex Sharov

Traduction et relecture : Min Min & A Jian

Tags:

FTX
F2Pool, Biyin et d'autres pools miniers ont chuté de plus de 15 % en raison des inondations dans le Sichuan

Le 18 août, selon les données du site OKLink, au cours des dernières 24 heures, la puissance de calcul de l'ensemble du réseau a chuté de près de 3 % (en raison du retard des données.

Lecture recommandée Gold | Série Eth2.0 Staking : pourquoi la diversité des clients est si importante

Cet article ne cible aucun client. Nous devons savoir que chaque client et même chaque cahier des charges peut contenir des lacunes et des lacunes. Sans oublier, Eth2 est un protocole très complexe.

Médias étrangers : les quatre principales banques sud-coréennes envisagent d'offrir des services de garde de crypto-monnaie dans les prochains mois

Résumé : 1. Quatre des cinq plus grandes banques de Corée du Sud lanceront des services de garde de crypto-monnaie.2. Cette décision est en avance sur la législation du gouvernement ciblant les monnaies numériques.3.

Synchronisation par phases Ethereum : refactorisation du mode de synchronisation complète (Full Sync)

La synchronisation par étapes est refactorisée à partir du mode de synchronisation complète de Go-Ethereum pour de meilleures performances.

Sous la forte chaleur, des soucis cachés existent encore ? Les fonds à effet de levier déversent à nouveau de l'eau froide sur le marché

Le 22 août, la CFTC a publié le dernier rapport hebdomadaire sur les contrats à terme CME Bitcoin (12 août-18 août).Dans la première moitié du dernier cycle statistique, BTC a rebondi rapidement.

Golden Sentinel丨YAM est sur le point de redémarrer et son contrat intelligent de migration 2.0 a passé l'audit avec succès

Vous souvenez-vous du YAM qui "s'est effondré" dans les 36 heures suivant sa mise en ligne ? Sa version 2.0 pourrait bientôt être en ligne.Selon le message Twitter de Yam Finance du 18 août.

Bitcoin prête attention à 11900 comme limite de force à court terme.

La nature de chaque niveau : line-up quotidien, 4 heures - consolidation (plus de pattern), 1 heure - downLa capture d'écran provient du graphique sur 1 heure du contrat perpétuel OKEX BTC/USDT : pour le marché.

ads