Quand la règle de distance est-elle ré-évaluée?

Je viens de forcer l’envoi du dossier de jeanjean sur g1-monit pour vérifier, effectivement il est à plus de 80% :

Or ce calcul de distance est réalisé par le module de WoT de Duniter 1.7 (qui est embarqué dans g1-monit), peut-être y a-t-il une différence avec Duniter 1.8 (version utilisée par les nœuds qui poussent les dossiers sur la blockchain) dont le module de WoT a été réécrit en Rust.

Je vais essayer de creuser cette piste.

3 Likes

Bon le bug se confirme, en 1.7 jeanjean entre immédiatement, alors qu’il est recalé en 1.8.

J’essaie d’identifier la root cause.

5 Likes

Merci de vous attarder sur mon dossier
jeanjean

4 Likes

Je peux confirmer que les données de WoT sont différentes entre Duniter 1.7 et 1.8 : il existe des certifications qui persistent dans la WoT 1.7 tandis qu’elles sont supprimées en 1.8.

Reste à déterminer quelle version a raison, j’en suis à regarder l’exemple suivant, si vous souhaitez m’aider :

  • gpsqueeek a reçu une certification de @HugoTrentesaux qui a disparu en 1.8

J’ai 91 chemins de ce genre qui n’existent plus en 1.8. C’est le seule type de différence que j’ai pu relever entre ces deux versions de Duniter concernant le module de WoT, et qui influence typiquement le calcul de distance.

2 Likes

Oui, au bloc 547689 (vu par WotWizard à travers 1.7). @HugoTrentesaux t’en souviens-tu ? C’est tout récent, le 04/08/2022.

Cette certification est bien visible dans césium :


Au bloc 547689

Effectivement c’est très récent. Aussi, je viens de transformer la WoT 1.7 en 1.8 pour l’injecter dans Duniter 1.8, et dans ce cas jeanjean rentre. C’est donc bien un problème de données sur la WoT, j’ai l’intuition que c’est uniquement cela.

Comme le phénomène est reproductible avec la synchro, je vais pouvoir comprendre d’où vient le souci.

1 Like

Oui, j’ai effectivement certifié squeeek récemment via Cesium connecté à mon nœud Duniter 1.8 g1.trentesaux.fr. Les données manquantes sont suffisantes pour expliquer le problème, reste à comprendre d’où vient la régression.

1 Like

Si, cependant je suis éloigné de mon BananaPi depuis ~10 jours, je ne monitore pas ce script, il peut être en rade depuis 10 jours. (je n’ai pas lu le reste de la discussion). Je reprends la main dessus mercredi prochain.

De mémoire, la sync se fait entre g1.duniter.org, occitanet.fr, presles.fr, cgeek.fr et nordstrom.xxx/bma (NDD imprécis et incomplets)

1 Like

Bon je pense avoir trouvé : dans Duniter 1.8, le module de WoT refuse d’ajouter la certification de Hugo vers gpsqueeek au motif que Hugo dépasserait son stock de 100 certifications concurrentes.

Le bug

Mais d’une part ce motif n’est pas fondé car le module de WoT n’a pas à prendre ce genre de décision qui revient normalement au protocole et donc au code TypeScript (on a là 2 sources de vérité, contrevenant au principe SSOT), mais en plus le code appelant côté TypeScript passe sous silence l’erreur rencontrée, tandis que pour le protocole il n’y a pas de problème de stock : selon ce dernier Hugo avait un stock de 66 certifications en cours, une 67ème ne pose aucun problème.

Pour le module WoT de Duniter 1.8, Hugo serait à 100 certifications en cours. En version 1.7, le module WoT ne maintient pas un tel index donc il n’y a pas de sujet et le décompte est laissé aux soins du code appelant TypeScript, qui gère le protocole. le décompte est de 66.

Bref il y a un bug quelque part soit au niveau de l’interfaçage entre le code TypeScript de Duniter 1.8 et son module WoT, soit directement dans le module WoT qui décompterait mal les certifications expirées et ne remettrait pas correctement la valeur du stock. Ce bug est en plus ignoré dû à l’autre bug passant sous silence l’erreur de stock.

Je pourrais passer du temps à chercher la source de l’erreur, mais comme indiqué plus haut le module de WoT n’a pas à prendre ce genre de décisions car il ne dispose pas de tous les éléments pour juger. Seul le code du protocole en dipose.

Le correctif

Déjà, il est possible de retirer le contrôle de stock Il faut corriger le module de WoT 1.8 et créer une version 1.8.3 de Duniter.

Mais ensuite il faudrait redresser les données, et là le plus simple c’est de demander une resynchronisation aux possesseurs de nœuds avec la nouvelle version 1.8.3.

Le réseau sera alors soumis à des forks :

  • tant que les nœuds 1.8.3 resynchronisés seront minoritaires, le réseau restera comme avant
  • dès que les nœuds 1.8.3 seront majoritaires, le réseau exclura les nœuds <= 1.8.2
8 Likes

Je pense avoir le fin mot de l’histoire : le bug se situe dans la méthode add_link côté Duniter 1.8 car elle ne contrôle pas que le lien existe déjà, tandis que ce contrôle existait en 1.7. Et donc en cas de rejeu de certification, le stock est décrémenté à tort en 1.8.

Je vais tenter un correctif en local pour valider, et ensuite nous verrons pour le déploiement d’une nouvelle version de Duniter.

6 Likes

Merci beaucoup @cgeek pour tout ce temps d’investigation :+1:

Je peux livrer rapidement une nouvelle version de dubp-wot qui retire le controle de stock :slight_smile:

Restera ensuite à packager duniter 1.8.3, dis-moi si tu as besoin d’aide.
C’est difficile pour moi d’investiguer car ça demande une énergie mentale que je n’ai pas après le boulot, mais pour tout ce qui est release process je peux le faire car ça me demande pas de réfléchir

5 Likes

Merci mais je vais m’occuper de tout pour Duniter v1 si tu veux bien, tu gères déjà beaucoup pour Duniter v2.

Sauf si je suis bloqué pour livrer le module Rust, là je te solliciterai :slight_smile:

5 Likes

Il te faut un compte github, le linker avec crates.io, puis que je t’ajoute parmi les propriétaires.

OK, compte « c-cgeek » créé. Tu connais mon e-mail si besoin de rechercher par ce biais.

1 Like

bonjour, toujours pas membre et mes certifications cessent dans 3 jours !
je ne sais pas si j’ai fait évolué votre cause mais si je ne suis pas membre est ce que je perds ma certification ?
jeanjean

Dans 3 jours votre demande d’adhésion va disparaitre parce que vos certificateurs ne sont pas disponibles pour certifier, ils ont certifié d’autres personnes sans attendre le délai, sans doute croyaient-il que vous ne passeriez jamais.
Le message de wotwizard UI est incorrect à ce sujet : wotwizard-ui, car en l’état ce compte ne sera jamais membre puisque dans 3 jours, il va disparaitre des piscines.

Dans 3 jours, il ne vous restera plus qu’à refaire la demande de transformation en compte membre, re-télécharger le fichier de révocation (l’actuel étant obsolète), et recontacter vos certificateurs pour qu’ils refassent leur certification, en essayant de rester disponibles pour vous.

Votre entrée est dépendante de la mise à jour du logiciel chez les membres ayant installé un nœud Duniter. C’est en cours, sur une trentaine de personnes il en reste toutefois plus de la moitié, or il faut une majorité pour que la modification puisse être entérinée.

En tout cas oui, vous aurez fait avancer les choses pour d’autres personnes présentes et à venir :slight_smile:

3 Likes

Bienvenue dans la toile de confiance, et merci pour votre aide involontaire.

1 Like

Effectivement ! Le fork est en train de se produire … avec jeanjean dedans.

edit : ah ben non, même pas ! jeanjean est rentré dans les 2 branches actuelles, il est donc garanti de rester membre pendant 1 an minimum. Bienvenue @Jeanjean :slight_smile:

3 Likes