Calcul de bloc par un noeud désynchronizé

technical

#1

Bonjour,

Mon noeud n’arrivait plus à se synchroniser ces derniers jours. Il semblait le faire puis ensuite ne calculait pas de bloc. Lorsque je le redémarrais il repartait du 15 septembre. J’avais 1304 blocs calculés et ça en restait là.

Aujourd’hui j’ai décidé de supprimer mon dossier duniter après avoir sauvegardé conf.json.
J’ai refais une synchro complète. Et magie : tout est opérationnel. Mais je n’ai plus 1304 blocs mais 1303.

J’avais donc un bloc bidon ?
Je me souviens que le 1304ème avait été calculé sans que le noeud soit synchronisé.

Donc il me vient une question : qu’en est-il du calcul de bloc par un noeud qui n’a pas tourné depuis un moment et qui n’est pas synchrionisé ?

jardin alain.

P.S : il est en train de calculer donc il va repasser à 1304 blocs.


#2

Si ton nœud était désynchronisé, alors il est fort probable qu’il ne recevait plus les blocs calculés par les autres.

Dès lors s’il n’était pas dans la fenêtre d’exclusion, il pouvait calculer le prochain bloc sans concurrence (de son point de vue). Donc il l’a calculé, sauf qu’aucun autre nœud n’a pu le recevoir et depuis tous les autres on déjà calculé ce même bloc.

Bref, c’est tout à fait possible. Mais ça ne sert pas à grand-chose !


#3

Sauf à empêcher mon noeud de se synchroniser par la suite !


#4

Il n’est pas sensé resté bloqué au bloc qu’il a trouvé s’il a une vue du réseau.
L’algorithme de résolution de fork résoud ça assez rapidement.
Sinon, il s’agit d’un bug.


#5

Tant que le nœud reste en contact avec d’autres nœuds qui eux avancent, celui-ci est censé rester synchroniser même s’il calcul un bloc refusé par les autres. Comme le dit Moul c’est l’algorithme de résolution de fork qui s’occupe de retirer le bloc refusé de la blockchain locale, puis de rempiler les blocs acceptés par le réseau.


#6

Dans mon cas, il ne le retirait pas et malgré qu’il se synchronise jusqu’au temps blockchain actuel. Après fermeture et réouverture il repartait au 15 septembre. Ce n’est que par la réinstallation de la blockchain que le bloc incriminé a disparu. Voilà.


#7

Je ne sais pas si mes soucis ont vraiment avoir avec ce post mais:

  • sous Ubuntu 16.04, après install sans problème de la 1.6.25 Duniter Desktop, je n’ai pas pu me synchroniser depuis 3 semaines ( au moins une quinzaine de tentatives avec des adresses de nœud différentes). Je n’ai jamais eu ces problèmes depuis au moins la 1.6.9.
    Pendant la tentative de synchro, quelle que soit l’adresse du nœud choisi, ma connexion internet passe de “~300Ko/sec / 2066 Kbps” à ~ “12Ko/sec” ce qui fait que je ne peux plus rien faire d’autre sur le web et en plus la synchro se “fige” et n’aboutit pas même au bout de 2 jours.
    J’ai essayé plusieurs fois de désinstaller pour revenir à la 1.6.24 qui tournait auparavant très bien, j’ai bien supprimé, à chaque fois, le dossier “Duniter” dans “.config” mais mêmes problèmes de débit et de synchro !?. :thinking:
    Il y a deux jours j’ai retenté une nouvelle install et synchro de la 1.6.25 desktop sur le miroir principal et là en une nuit … ça marche :stuck_out_tongue:
    Cependant, en consultant Cesium Web, il semble que mon nœud suive bien actuellement la branche principale mais n’a toujours pas calculé de block. Pourtant, en lançant la commande “.config/duniter/duniter_default/duniter.log” j’obtiens une liste de blocks que je suis sensé avoir calculé, (certains, il y a une heure).
    Césium montre pourtant que ce n’est pas moi qui a calculé ces blocks sur la branche principale, un peu comme si je suivais un forck. Merci de votre éclairage bienveillant au vu de mon modeste niveau en "informatique.

#8

Il y a un mécanisme de bannissement de 2 minutes quand le nœud fait trop de requêtes, or la synchro en fait beaucoup et de façon pas très intelligente sur Duniter 1.6. Si tu réessayais sans attendre religieusement les 2 minutes, tu subissais le bannissement et ton nœud envoyait de nombreuses requêtes sans s’arrêter.

Il faudrait investiguer davantage, voir si ton nœud est bien connecté et atteignable, donc s’il peut correctement recevoir les nouveaux blocs produits par d’autres. Si ce n’est pas le cas ton nœud calcule alors un bloc déjà dépassé, et calcule donc pour rien. Il finit par trouver mais aurait dû être interrompu dans son calcul pour passer au bloc suivant.

Au vu de tes logs, c’est ce qui me semble le plus probable.


#9

Merci. Bon, c’est reparti, ce matin mon nœud calcule à nouveau des blocks “valides”.
Je vais refouiller sur le forum pour me remettre en tête comment on vérifie que son nœud est “bien connecté et atteignable”.