Currency-Monit : Monitoring d'une monnaie et de sa toile de confiance

wotex
monit
willmembers
blockcount
modules

#12

J’avais du mal à imaginer le code qui te provoquait le bug, du coup j’ai pris le PC puis cloné la branche dev-module et fait un git reset --hard HEAD^ pour retomber sur le commit [enh] fix #4 où il me semble que tu rencontrais le bug.

Depuis tu as créé la branche dev-wotb6, mais je faisais déjà mes essais avant donc je n’ai pas vérifié celle-ci.

Sauf que je ne tombe pas sur ton erreur, le code s’exécute correctement, il n’y d’erreur nulle part. Tu fais l’appel correctement, et le module contient bien la méthode detailedDistance().


#13

Je pense qu’il n’y avait aucun soucis de code depuis le début, par contre yarn ou npm a dû s’emmeler les pinceaux, te forçant à utiliser la version 0.5.x de wotb alors que tu as expressément demandé la 0.6.x.

Je pense cela car au début en clonant la branche dev-module, je me suis retrouvé avec des modules de duniter@1.4.x, encore en développement …

Je te conseille de supprimer totalement le dossier node_modules, puis de relancer yarn ou npm.


#14

Merci c’est cette phrase qui m’a donner l’idée que mon problème ne venait peut être ni de mon code ni de wotb mais de mon environnement.
Du coup j’ai recloner mon dépôt sur un autre répertoire donc en recompilant tout comme il faut et ça a fonctionner :grinning:

Oui je crois aussi que c’est exactement cela, j’ai encore peu d’expérience avec ces outils et donc je n’aurais jamais imaginé en premier ressort qu’ils puissent êtres responsables de mon problème :innocent:

Du coup ça fonctionne parfaitement, en capture d’écran les données [nbSuccess/nbSentries] (nbReached :


#15

Je t’avoue que comme j’avais testé le bon fonctionnement de wotb 0.6.x sur currency-monit avant d’annoncer cela ici, je me disais que le problème venait forcément du code que tu utilisais.

Bien mal m’en pris, le problème était encore ailleurs !

Et niveau perfs, tu trouves cela comment ?

Sinon, Duniter 1.4 ne sortira pas avant fin Juillet à mon avis, donc il y aura un peu d’attente pour bénéficier de cette mise à jour. Mais peut-être que tu comptes déployer cette fonction sur ton nœud g1-monit.elois.org ?


#16

En fait ce qui m’a froissé c’est le fait de croire que je t’avais mal lu, il peut m’arriver de mal comprendre, mais je lis toujours en entier tes explications avant de te déranger ! Et d’ailleurs je te remercie encore pour le temps que tu passe à m’aider et pour les nouvelles fonctionnalités de wotb :slight_smile:

Pour l’instant je ne ressent aucune différence dans le temps d’exécution de willMembers, c’est donc de très bonnes perf comme je m’y attendais :slight_smile:

Cela demanderai que je lance mon nœud g1-monit en mode dev via run.js, oui je pense que je n’attendrais pas fin juillet pour le faire :slight_smile:


#17

Currency-Monit version 0.3 déployé sur https://g1-monit.elois.org et http://g1-test-monit.elois.org !

Cette nouvelle version ne pourra hélas être packagée en module que pour duniter 1.4.x car elle utilise une version plus récente de wotb qui n’est pas intégrée a duniter 1.3.x … ceux qui le souhaite peuvent toutefois l’installée en mode dev depuis le dépot.

EDIT : suite à un bug j’ai créer une version correctrice 0.3.1 par contre avec toutes ces manip la piscine de g1-monit s’est vidée donc la page willMembers est vide, soyez patient, elle redeviendra complète d’ici demain.

EDIT 2 :page willMembers rétablie ouf ! Cette page restait vide suite a une regression de la version 0.3.1, il m’a donc fallu déployer un correctif 0.3.2 :stuck_out_tongue:

Il y a beaucoup de nouvelles informations concernant l’état de la toile de confiance sur les pages willMembers et members :slight_smile:

Mon objectif est d’afficher des indicateurs nous permettant de jauger finement l’état de tension de la toile.
Il y a notamment 2 indicateurs globaux qui m’ont sembler pertinent pour évaluer l’état global de la toile :

  • la proportion de couples orientés pour lesquels il existe un chemin de 5 pas ou moins : 59.66%
  • la qualité moyenne : actuellement 1.06

Explications:

Qualité d’un membre

Ce que je nomme qualité d’un membre (je pourrais changer le terme si vous m’en proposez un plus pertinent) c’est le rapport entre le taux de membres référents rendu atteignables par une certification de ce membre et le taux de membres référents qui faut atteindre pour respecter la règle de distance.
Je vais donner un exemple pour que ce soit plus clair :
prenons une toile avec 10 membres référents et xpercent=0.8. Et bien la qualité d’un membre dans une telle toile c’est le rapport entre le nombre de membres référents qu’il permet de joindre en moins de 5 pas et 8. Donc si un membre bob permet de joindre 4 référents il aura une qualité de 0.5.
Et si bob permet de joindre les 10 référents il aura une qualité de 10/8=1.25.

Qu’entend-je par “permet de joindre”, quand je dit que Bob permet de joindre x membres référents j’entend que si Bob certifie une nouvelle identité (qui n’est certifiée que par Bob) alors il y aura x membres référents pour lequels il existera un chemin de moins de 5 pas de eux vers la nouvelle indentité.

Ainsi, un membre ayant une qualité supérieure un égale à 1, pourrait faire rentrer un nouveau a lui seul sil la règle sigQty n’existait pas.

Lorsque la qualité moyenne est supérieure à 1 c’est que la règle de distance n’est pas contraignante, lorsque la qualité moyenne s’approche de 1, la règle de distance va devenir contraignantes pour quelques cas minoritaires, et lorsque la qualité moyenne devient inférieure à 1, alors la règle de distance devient contraignante pour la majorité des identités (par identités j’entend nouveaux+membres souhaitant ce renouveller!)

Actuellement la qualité moyenne est de 1.06, ce qui signifie que la règle de distance n’est pas contraignante, donc la toile n’est pas “trop” tendue, mais 1.06 c’est proche de 1, donc si tout les membres ne certifient que vers l’extérieur a partir de maintenant alors la règle de distance pourrais redevenir contraignante rapidement (ce qui peut être une situation souhaitable et voulue dans certains cas, c’est aussi une liberté des membres que de tendre ou détendre la toile).

Degré de centralité

Il y a aussi un second critère qui me semble pertinent, cette fois ci inspiré de la théorie des graphes, c’est la centralité d’intermédiarité, que je nomme juste centralité pour faire simple, visible sur la page membres :

Le degré de centralité d’un membre (au sens de l’intermédiarité), c’est le nombre de fois qu’il apparaît sur le plus court chemin entre deux membres. Ce nombre mesure vraiment le degré de contribution d’un membre a la densité de la toile.
Vous pouvez classer les membres par centralité dans currency-monit : https://g1-monit.elois.org/members?lg=fr&d=400&sort_by=centrality&order=desc

Le degré de centralité moyen n’a de sens que comparativement à la taille de la toile, vous devez donc le comparer au nombre de couples de membres (N^2-N). Par exemple au 4 juillet 2017 dans la toile Ğ1 la centralité moyenne est de 395.45 et le nombre de couples de membres est 31506 donc cela signifie qu’un membre fait en moyenne le lien entre 1,25% des couples de membres. Mais même ce nombre n’a pas de sens car plus la toile grandira plus un membre représentera une part relative de membres faible.

Donc plutôt que de considérer le degré de centralité moyen, il me semble plus pertinent de considérer la proportion de couples orientés pour lesquels il existe un chemin satisfaisant la règle de distance (donc de 5 pas ou moins).
Pourquoi orientés ? parce que les couples (Bob->Alice) et (Alice->Bob) sont différents, les chemins sont unidirectionnels dans une toile duniter, donc dire qu’un chemin existe de Bob vers Alice ne signifie pas nécessairement qu’il existe un chemin d’Alice vers Bob !
Dans la toile Ğ1 du 4 juillet 2017, il existe un chemin satisfaisant la règle de distance pour 59.66% des couples orientés. On peut considérer que ce nombre est un facteur de densité, si la toile était parfaitement dense, ll existerai un chemin satisfaisant la règle de distance pour 100% des couples orientés, on peut donc considérer que la toile Ğ1 est actuellement dense à 60% :slight_smile:


Soupçon de faux compte et/ou mauvaises certifications
#18

Wow je ne sais pas si c’est l’effet rmll mais ces jours-ci ya un monde fou qui requête g1-monit via tor,
pour rappel donc g1-monit est accessible en service caché à cette adresse : http://ylckrwzkggcf4smt.onion

Bon du coup j’ai quand même les log mais je n’ai pas votre ip c’est déjà ça :stuck_out_tongue:


#19

Bien vu, très bien vu même. Très bonne idée cet indicateur !

Comme tu dis, cela reste une moyenne. Donc en moyenne la règle de distance n’est pas contraignante, mais cela n’exclue pas localement qu’elle le soit, malgré une qualité moyenne > 1.

Bon après, avec la règle sigQty = 5, la contrainte de distance est passée “facilement” malgré tout, même si cela n’exclue toujours pas des cas isolés, je me rappelle d’un nouvel entrant qui restait à la porte malgré 6 certifications.

Mais bref, bonne idée :slight_smile:

Il doit y avoir un petit bug quelque part (#57), car Alfybe apparaît en multiples doublons à la fin de la liste.

Mis à part cela, le fait de voir “le pont” @kimamila en tête de liste semble cohérent avec cette définition de centralité !


#20

Bon indicateur individuel qui signifie : une certification de ce membre ne sera pas contrainte par la règle de distance.

La moyenne est très souvent un indicateur très peu porteur d’information, aussi je suggère des pistes pour améliorer cet indicateur individuel vers un indicateur global plus pertinent :

  • Une répartition graphique de l’indicateur par membre, mais pas classé du plus haut vers le plus bas, mais en plaçant le plus haut au centre (sous forme de gaussienne). Pour ce faire : classer du plus bas au plus haut dans une table (par exemple 200 membres), et placer le premier dans la table sur le 1 du graphe, puis le second sur le 200 du graphe, le 3ème en place n°2 du graphe, le 4ème en place n°99 etc… On verra ainsi une répartition où l’indicateur le plus élevé sera au centre.
  • Un indicateur en % = (nombre de membres > 1) / nombre total de membres, plus pertinent que la moyenne
  • Un indicateur en % plus fin : (nombre de membres > 1,5) / Nb total, ( 1,5 >nombre de membres > 1) / Nb total

Les deux derniers indicateurs consistent à tracer des lignes horizontales sur le graphe, qui donne donc à lui tout seul une indication la plus fine possible de la (WoT Ğ | cet indicateur de qualité), et donc le graphe ferait tout.


#21

Merci c’est une excellente idée :slight_smile:

Je l’avais déjà vu mais je n’ai pas encore eu le temps d’investiger !


#22

Je pense que les multiples occurrences d’Alfybe remplacent en fait de vrais membres qui du coup n’apparaissent pas (ceux qui n’ont certifié personne je pense).


#24

4 messages ont été déplacés vers un nouveau sujet : Blabla “Duniter est buggué”


#26

Nouvelle version de currency-monit installable sur votre noeud duniter 1.3.x :slight_smile:

Il s’agit d’un fork de la version de dev qui supprime uniquement les fonctionnalités liés à la nouvelle version de wotb, ainsi ceux d’entre vous qui utilisent le module currency-monit sur leur noeud duniter pourrons profiter des autres avancés et corrections de bug sans avoir besoin d’attendre la prochaine version majeure de duniter.

Utilisateurs de duniter-desktop

Si vous avez déjà installé le module duniter-currency-monit, vous devez d’abord le désinstaller pour installer la nouvelle version, pour cela il vous suffit de le passer en mode Off sur la page module de votre interface web.

Ensuite, copiez le lien suivant en bas de la page module de votre interface web :
https://github.com/duniter/duniter-currency-monit/archive/0.3.6.tar.gz
Puis cliquez sur INSTALL THIS MODULE
Enfin redémarrez votre nœud duniter.

Utilisateurs de duniter-server

vous pouvez réinstaller le module avec les 2 commandes suivantes :

duniter unplug 'duniter-currency-monit'
duniter plug https://github.com/duniter/duniter-currency-monit/archive/0.3.6.tar.gz

Puis le lancer en mode direct_start :

duniter currency-monit [host] [port]

Votre module currency-monit sera alors accessible a l’adresse host:port (localhost:10500 par défaut)


#27

Testé, ça tourne :slight_smile:

Par contre mon nœud ne dit pas le même chose que g1-monit.elois.org, je t’ai ajouté un ticket#58 pour tenter de comprendre ce qui se passe. Je pense que c’est g1-monit qui affiche la bonne info.


#28

Vincent, Alain (uid jardin) viens de devenir le 41ème co-écrivain de la blockchain Ğ1 le 10 Juillet 2017 à 13h53 (heure BC) en calculant le block #34112 : https://g1-monit.elois.org/blockCount?lg=fr


#29

Pour information, j’ai installé le module sur mon nœud et il est en libre accès à cette adresse
https://duniter.help-web-low.fr/monit/


#30

Génial ça va répartir la charge ^^
Et ça nous fera un 3ème point de vue sur les données en piscine :slight_smile:

@cgeek @Pafzedog êtes vous d’accord pour que je publie les adresses d’accès a vos modules currency-monit sur le 1er post de ce thread ?


#31

absolument d’accord :slight_smile:


#32

merci pour le boulot ^^


#33

Aucun problème !