Synchronisation lente

bon je crois que la synchro est à revoir
parceque je viens de passer 2 journées à synchroniser et à chaque fois j’avais une 30ene de bloc en retard et du coup je perd la synchronisation
c’est bcp trop lent
çà prend plusieurs heures
est ce qu’on est vraiment obligé de faire un « apply » sur l’intégralité de la blockchain depuis 0. y’aurai pas moyen de faire des bloc de synthese des comptes une fois par mois environs ?
et pouvoir choisir sa sync à partir de quand on souhaite (parmis les bloc de synthèses) comme çà c’est plus simple pour aussi faire des sync rapide mais aussi pourquoi pas du coup faire des appli ceisum qui embarquerai BMA sur iphone ou android puisqu’il suffirais d’avoir une mini blockchain du mois en cours , pour dialogué directement en local pour s’y connecter , çà me semblerai super secure , non ?

et aussi une methode pour resynchroniser ce qu’il nous manque comme blocs… c’est possible çà ? çà exite pas déjà ?

Ça fait bien longtemps que je le sais et c’est déjà dans ma todo liste… Je comprend que c’est rageant mais je fais ce que je peut avec le temps libre dont je dispose !

Oui c’est beaucoup trop lent, j’en avait fais le constat ici : Duniter: performances de la synchronisation de la blockchain

Non très mauvaise approche. Là tu cherche à contourner un problème (qui plus est avec de la complexité supplémentaire) plutôt qu’a le résoudre.

L’info qu’il te manque, c’est que la lenteur de la sync est une conséquence d’une implémentation pas optimisée. Et l’optimisation ça peut tout changer, on passera très probablement de 2h à moins de 5 min.

Dans le cas présent, c’est principalement la façon de structurer les données qui rend l’indexation extrèmement inefficace.

Bref, mon plan d’action c’est d’abord de refondre entièrement la structure des données, attendons déjà de voir a quel point cela va améliorer la situation avant d’envisager quoi que ce soit d’autres.

Les synchros chez moi dépassent les 6h (et ont été toutes interrompues volontairement ou non depuis 4 jours). Pourtant le serveur est une bombe de gamer, pas un RPI. J’ai jeté l’éponge ce matin.

@vit je le sais bien, mais je n’y peux rien. Je n’ai jamais touché au code de la sync et n’est pas commencé à le migrer.

La cause principale de cette lenteur extrême c’est que le code actuel réalise plein de petits accès disque à chaque bloc indexé, donc des millions d’accès disque pour indexer 300 000 blocs.

C’est donc dramatiquement lent sur HDD (plusieurs heures). Alors que ça ne prend « que » 20min sur SSD, ça reste trop lent à mon goût mais c’est déjà infiniment plus gérable.

La puissance de la machine ne rentre pas en jeu ici, un raspi sur ssd s’en sortira mieux qu’un supercalculateur sur hdd :wink:

Il n’y a évidemment aucune nécessité métier à faire autant d’accès disque, je pense que cgeek à fait comme ça car c’était plus simple. Sans anticiper que cela poserait problème si vite.

Quand je migrerai la partie indexation j’en profiterai pour la refondre de manière à minimiser les accès disques, mais ça va prendre beaucoup de temps. En attendant, Duniter ne va être utilisable que sur ssd :confused:

3 J'aimes

Merci pour tes réponses @elois :slight_smile:

Mais en quoi c’est une mauvaise approche
Que de faire des blocs de synthèse de compte ?
Ça évite de devoir se taper la blockchain en entier
Qui de toute évidence un jour la question se posera genre dans 10ans (c’est bientôt hin…)
On en est déjà à bientôt 5 ans

On va pas faire une synchro depuis l’an 1 a 10ans plus tard

Et concernant l’embarquement d’une mini blockchain dans une appli mobile
C’est quand même super ! question sécurité de connection , non ?

La mauvaise idée c’est de vouloir faire ça pour contourner une sync trop lente plutôt que de régler la cause de sa lenteur.

L’idée dont tu parles on l’a déjà en tête depuis longtemps mais pas pour les mêmes raisons, voir ici : Evolution de l'espace disque utilisé par un noeud

Là par contre non, ça n’a aucun sens.

1 J'aime

Oui ok on est d’accord c’est deux pb différents la rapidité de la sync
et
la taille de la blockchain à synchroniser
Mais elle s’influence l’une et l’autre

Peut être devrait ton synchroniser sur la ram
Tout avant d’écrire dans la bdd le résultat

Par contre j’aimerai bcp que tu étaie ton propos sur le non sens d’une mini blockchain embarqué dans une appli mobile
Surtout si elle fait que quelques Mo
Ça évite un serveur en plus non ?
Surtout que techniquement c’est faisable
Une appli de ce genre peut très bien voir le jour non ?

La encore on ne t’a pas attendu pour avoir l’idée. C’est déjà ce que je faisais dans Dunitrust, et c’est évidemment l’une de mes premières pistes d’optimisation.

En fait on n’est pas en manque d’idées mais de contributeurs au code. Émettre des idées c’est facile, mais dans 99% des cas se sont soit des idées pas pertinentes soit des idées qu’on a déjà eues depuis longtemps et qui sont déjà dans notre très (trop) longue todo list .

C’est à toi de préciser ta proposition car en l’état actuel elle n’a aucun sens, donc je ne peux pas comprendre ce que tu as en tête.
Qu’entend tu pars « mini » ? Qu’est-ce que tu veux stocker coté client et dans quel but ?

non, quoi qu’il se passe côté client ça n’évite rien du tout côté serveur.

Je crois que tu ne comprends pas bien comment fonctionne une blockchain et à quoi ça sert.
Tous les nœuds du réseau doivent vérifier intégralement chaque nouveau bloc, et pour cela ils doivent nécessairement avoir toute la blockchain jusqu’au dernier master bloc. Un nœud ne fait pas confiance aux autres nœuds, c’est le principe même de la décentralisation, donc il ne fera pas confiance non plus à des clients, donc quoi que stocke où non un client, ça ne change rien.

1 J'aime

ah d’accord , désolé si tu prend mal mes remarques , j’essaie de comprendre, et bien evidement si les idées ont déjà été imaginé , tu peux tout à fait me repondre, sans mal le prendre…
je suis pas là pour t’agacer, mais pour proposer , donc tant mieux si les idées sont là
et effecitvement on manque de dev , moi j’suis plus JS et ReasonML depuis peu , j’suis pas sur de pouvoir aider (peut etre rust , car pas trop loin de le philosophie ReasonML)

sinon pour la blockChain je comprend pas l’idée de devoir synchronisé en entier pour pouvoir s’y connecter
le but d’une miniBlockChain c’est de pouvoir reduire sa taille et aller à l’essentiel , pour rajouter de nouveau element à la transaction en cours

donc par exemple :
je lance une app sur mon iphone
cette app synchronise un petit bout de la blockChain (dernier 24h) par exemple
ou du moins jusque necessaire pour que je me connecte.
l’app se synchronise et enchaine sur le nouveau block avec les autres noeuds
et là l’app envoie une transaction que je voudrai faire

bon j’avoue je sais pas qui forge le block et comment (tous ensemble ? un seul ? )
je vois juste des block arrivé et je me dit que j’ai pas besoin de connnaitre tout le passé pour faire une nouvelle transaction… juste en theorie les 2 block precedents… comme une chaine de velo

Dsl j’ai parfois mes humeurs :sweat_smile:

En fait si tu savais plus précisément comment fonctionne une blockchain et comment fonctionne notre protocole tu comprendrais que tes dernières propositions n’ont pas de sens.

Pour émettre des idées d’améliorations, il faut d’abord comprendre le fonctionnement actuel, sinon forcément les propositions ne sont pas pertinentes, on ne peut pas réfléchir correctement à l’amélioration de quelque chose que l’on ne connaît pas :wink:

Ce qui m’agace le fait que tu n’est pas étudié le fonctionnement actuel et que tu me demande de t’expliquer pourquoi ta propositions n’a pas de sens. Ce n’est pas respectueux car cela me fait perdre un temps que je peine déjà à trouver pour coder.

Étudie d’abord le fonctionnement actuel, ensuite si tout n’est pas clair ouvre un nouveau sujet sur ce forum pour poser tes questions sur l’existant. Mais stp assure toi de bien comprendre l,existant avant de proposer quelque changement que ce soit.

Et si tu est vraiment motivé pour creuser le sujet on peut se faire une visio, ça me permet d’expliquer plus de choses en moins de temps :slight_smile:

Je t’invite à visionner cette vidéo pour commencer :

2 J'aimes

super , je m’y atele ! :slight_smile: merci elle est bcp mieux cette video que l’autre avec l’audio pourri… :confused:

2 J'aimes