Comment les explorateurs de blocs gardent-ils leurs bases de données synchronisées?

Nous pouvons être amis

Comment les explorateurs de blocs gardent-ils leurs bases de données synchronisées?


Si nous prenons blockchain.info; comment savent-ils qu’un nouveau bloc est arrivé?

Je comprends qu’il y a un nœud complet en arrière-plan, comment auraient-ils configuré leur infrastructure, de sorte que leur base de données qui sert les utilisateurs, soit synchronisée avec la base de données complète du nœud? Je ne peux pas penser à un moyen d’être alerté lorsqu’un nouveau bloc arrive. Ce n’est pas comme si le nœud complet vous disait que nous avons un nouveau bloc, non? Regardent-ils donc le leveldb pour les changements?

De plus, est-il possible qu’ils aient des nœuds complets qui ne répondent qu’aux demandes de blockchain.info?

Réponses


 smarx

Je ne peux pas penser à un moyen d’être alerté lorsqu’un nouveau bloc arrive. Ce n’est pas comme si le nœud complet vous disait que nous avons un nouveau bloc, non?

Je pense que oui. Vérifiez les événements auxquels vous pouvez vous abonner via l’interface websocket.

Mais vous pouvez plutôt interroger toutes les 500 ms (ou autre). Il n’y a que de nouveaux blocs toutes les 10-15 secondes. Le retard de quelques centaines de millisecondes ne vous fera pas de mal.

Nous pouvons être amis

Et si je ne veux pas ouvrir le rpc pour le reste du monde, juste moi?

smarx

Je ne sais pas trop ce que vous demandez. Je n’ai pas suggéré d’ouvrir RPC à quelqu’un d’autre.

Nous pouvons être amis

Message erroné, personne ci-dessous RPC suggéré

smarx

L’autre réponse n’a pas non plus suggéré d’ouvrir le RPC à quelqu’un d’autre.

Nous pouvons être amis

Je ne sais pas comment j’utiliserais l’interface rpc, si je ne l’appelle pas en utilisant la configuration ip: port. Est-ce que je ferais localhost: port? Si je suis sur la machine sans rpc activé et que mon éditeur de code est ouvert, quelles mesures dois-je prendre pour appeler l’interface rpc à partir du code?


 Thomas Jay Rush

Vous pouvez facilement interroger sur l’interface RPC pour getBlockByNumber («dernier») qui renverra le dernier bloc. Ce n’est pas difficile du tout parce que, comme le dit l’autre réponse, vous n’obtenez qu’un bloc toutes les 15 secondes environ.

La partie difficile est que plus souvent que vous ne le pensez, la chaîne se réorganise, ce qui signifie qu’un bloc change. Vous devez donc revoir les blocs pour vous assurer qu’il n’y a pas de réorganisation.

De nombreux explorateurs vont même plus loin et éliminent les transactions en attente qui ne sont pas encore dans un bloc, mais dans la file d’attente des transactions en attente. Il existe également une interface RPC pour cela.

Certains explorateurs creusent même les tripes et lisent directement la base de données, comme vous le mentionnez.

Nous pouvons être amis

Je voudrais seulement exécuter l’interface rpc localement et l’interroger à partir de mon code. Sur la base de votre réponse, j’ai créé une autre question, pour ne pas sortir du sujet: ethereum.stackexchange.com/questions/49587/…

Thomas Jay Rush

Merci. J’ai vu tes autres questions. Malheureusement, je ne connais pas très bien le fonctionnement d’un nœud à distance. J’exécute mon nœud localement sur mes propres machines et j’exécute le code qui effectue les requêtes RPC sur les mêmes machines, donc les requêtes sont adressées à localhost . Je ne sais pas comment configurer les choses pour que vous puissiez interroger à distance et toujours être sécurisé.

Nous pouvons être amis

Ahh d’accord, merci pour l’aide de toute façon

 

#de, bases, blocs, comment, données), explorateurs, gardent-ils, Les, leurs, synchronisées

 

yahoo

Laisser un commentaire

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