Ğ1 en forks à partir du bloc #206587

rml
rml13

#65

Une série riche en émotion et pleine de suspens, vivement la suite :yum:

Je charrie hein, bravo et merci pour votre taf, vraiment :hugs:


#66

Bon, je ne pourrais pas produire de nouvelle version ce soir, néanmoins la cause est identifiée et le bug reproductible à volonté.

La source

La cause est la résolution de fork. Plus précisément, c’est le dépilement de bloc qui détruisait des sources légitimes de monnaie depuis Duniter 1.7. La version 1.6 n’est donc pas impactée.

La destruction était systématique à chaque dépilement, créant les situations suivantes :

  • quand un fork naissait et que celui-ci contenait une transaction alors Duniter 1.7 était incapable de le rejoindre (car même pour rejoindre un fork, la résolution dépile ce fork au moins 1 fois pour le tester)
  • quand un fork naissait sans transaction mais que la branche principale contenait une transaction après le point de fork, alors Duniter 1.7 était incapable de revenir sur sa propre branche

Liens avec des événements récents de la Ğ1 et Ğ1-Test

Il y a fort à parier que ce bug soit la cause des événements déjà notifiés sur ce forum :

Ce bug est toutefois indépendant du fork de Noël 2018.

Et aussi curieux que ça puisse paraître, ce cas de résolution de fork avec transaction n’était couvert par aucun test, ce qui lui a permis de passer à travers les mailles du filet.

Correctif à venir

Demain après-midi/soir 28/03/2019.

Comportement à adopter

Seul palliatif pour l’instant :

  • resynchroniser sur la branche principale quand vous constatez un fork
  • évitez de réaliser des transactions car elles ont toutes les chances d’être perdues et de provoquer de nouveaux forks

Voilà pour ce soir :face_with_monocle:


Duniter 1.7.14 : résout les forks de la Ğ1 des dernières semaines
Forks réguliers avec obligation de resynchroniser à partir de zéro
#67

Les RML13 “coeur de Ğ1” s’avèrent non seulement pertinentes, mais extrêmement urgentes, en tant que recentrage durable des RML sur son fondement : développer les compétences et le développement sur le coeur.

Expliquer le protocole, le détailler, l’analyser, détailler le fonctionnement, les modules, les documents d’entrée et de sortie, faire l’état de l’existant et du développement, le tout pendant 3 jours pleins, en plein centre de la Capitale des Rois de Majorque au centre ville paradisiaque, à 15 mn en voiture du bord de mer, à 45 minutes des Pyrénées…

Pour les développeurs motivés seulement, la partie coeur de Ğ1 sera dans un lieu idéal pour 10 à 15 développeurs experts voulant rejoindre le projet, ou en cours de développement (Duniter, DURS, Juniter, Silkaj, Cesium), pour travailler sur le coeur et les protocoles et documents gérés pas le coeur, comprendre la blockchain Duniter/Ğ1.

Ceci est une révolution.

Pour les non-développeurs, contactez l’équipe monnaie libre 66 qui prépare des ateliers dans d’autres lieux dans et autour de Perpignan (voir le pad des RML13 via le site officiel).


#68

Du coup ça expliquerait pourquoi un restart a des chances de faire repartir sur la bonne branche, non ? Je viens encore d’avoir le cas sur mon raspi. Je l’ai relancé une première fois, toujours coincé. Une deuxième fois, il s’est réaligné sur la branche principale.


#69

Bizarrement, Silkaj, mon Cesium local et celui de g1.duniter.fr (connectés à g1.duniter.org) affichent bien les certifications que j’ai reçues et envoyées cette semaine, mais aucune transaction. Par contre g1.le-sou.org qui est pourtant sur la même branche n’affiche pas ces certifications mais affiche les transactions…


#70

La version 1.7.14 est en cours de construction.

edit : et voilà ! Duniter 1.7.14 : résout les forks de la Ğ1 des dernières semaines


#71

Sauf lien de cause à effet qui m’échappe, je pense qu’il s’agit d’un autre problème.


#72

Le commit du fix

Et tu te paies même le luxe d’ajouter une batterie de test, ainsi qu’un nouveau message de débug. :clap:

Chapeau l’artiste. :slight_smile:


#73

Oui, un bug majeur est une occasion à saisir ! Le test permet de verrouiller le comportement, c’est une grosse valeur ajoutée dans le code de Duniter :slight_smile: avec le recul, je dirais même que c’est le code le plus important de tous.

Coder le protocole n’est pas si difficile … mais s’assurer que tout fonctionne encore version après version, ça c’est une autre histoire.


#74

Par contre, je me suis foiré sur la référence du ticket Gitlab, j’ai lu de travers, ce bug n’a rien à voir avec le correctif.