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 :
- Perte de membres calculant sur la Ğ1 (09/03/2019)
- G1-test dans les choux ? (15/02/2019)
- Ğ1 en fork : bloc refusé car la transaction utilise des sources inexistantes surement perdue dans la résolution d’un fork (30/01/2019)
- Ainsi que des retours d’utilisateurs depuis Janvier 2019 dont les témoignages concordent.
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