Toutes tes réflexions sont correctes, il y a bien un bug concernant le rebranchement sur le fork principal.
D’ailleurs tu le vois : en tentant d’appliquer un des blocs du fork principal, il rencontre un problème avec la règle concernant les adhésions, qui dit qu’on ne peut pas écrire une adhésion qui précéderait en termes de date la dernière inscrite en blockchain.
Pourquoi le fork principal tenterait une telle opération ? En réalité il ne tente rien d’anormal, comme nous avons pu le constater avec Moul. Tout va bien sur la branche principale.
Le problème (diagnostiqué ce matin) vient en réalité du code qui dépile les blocs du fork local avant de se rebrancher sur le fork principal, car cette opération, l’équivalent d’un revert Git mais pour la blockchain, est buguée concernant les adhésions. Le code tente d’oublier justement cette “dernière adhésion inscrite” pour reprendre celle qui la précédait en blockchain et plante lamentablement
D’où coup la base de donnée conserve comme dernière adhésion celle qui aurait dû être dépilée avec son bloc, et lors de l’ajout du bloc de la branche principale qui essaye justement de réinscrire cette adhésion dans un de ses blocs, alors la règle susmentionnée concernant les adhésion est froidement appliquée et renvoie une erreur !
Maintenant, il ne me reste plus qu’à :
- Ecrire un Test Unitaire reproduisant le bug (presque fini)
- Corriger le bug et vérifier que le TU passe
- Produire une nouvelle version
- Demander aux possesseurs de noeuds de faire une RAZ de leur noeud (données uniquement), et de se resynchroniser sur la branche principale
Voilà, tu avais bien mérité ce petit laïus !