Étude de la WoT

A cause de la distance. Si tu en as 10 tu es déjà forcément dans la sphère 2 avec au moins 2 membres distants de 2.

Avec 8 (en fait 8+1 = 9 pour être précis), tu peux être dans la sphere 1 MAX. Or on cherche le max, donc on cherche à remplir au maximum toutes les spheres jusqu’à stepmax.

1 Like

Oui OK on cherche effectivement à la remplir pour produire la plus grande toile possible, sphères suivantes incluses et dépendantes de la sphère précédente.

C’est bon, j’ai compris.

Si donc on veut plus de précision, il faut donc rajouter +1 qui correspond à notre sentry de départ = Sphere(0) (un seul membre), ce qui ne change pas grand chose à quelques % près puisqu’on comprend vite qu’il faudra dans tous les cas très certainement sigStock > 50

  • Sphere(n) = (sigStock+1)*(sigStock / sigQty)^(n-1)
  • Sphere(stepmax) = (sigStock+1)*(sigStock / sigQty)^(stepmax-1)

L’étude des graphes ci-dessus (et des tableurs adaptés) permettront donc de choisir de bons paramètres en fonction de la WoT visée, on choisira une WoT(stepmax) plus grande.

WoT plus grande oui, mais dans quel ordre de grandeur ? 2x plus ? 5x plus ? 10x plus ?

Rien du tout… Pour sigStock = 50, ça fait au plus 2% par step (en fait moins). Pour 4 steps : (1,02)^4 = 1,08, c’est 8% de plus. Pour SigStock plus grand c’est encore moins. C’est négligeable c’est pour ça que je ne l’ai pas mis au départ. Ca n’a vraiment pas grand intérêt…

Il suffit de regarder la fonction pour le voir. Si on est pas convaincu => tableur.

J’ai pris le temps de relire tout ça 2-3 fois pour m’assurer de bien comprendre. J’ai encore quelques questions :

Sur la première partie

  • Y[N] est bien l’équivalent du tableau des signatures requises pour devenir sentry que cgeek avait calculé ? Pourquoi calculer Y[N] fonction de stepmax et ne pas reprendre le tableau de cgeek ?

Sur la deuxième partie

  • J’en conclu que plus la WoT possède de sentries, plus son diamètre est limité ?
  • Pourquoi 8 membres initiaux ? C’est ici un cas avec sigQty = 1 ?

Je ne vois pas d’ou vient le chiffre “2% / step” dans l’étude. La question de cgeek portait sur le taille de la WoT max à calculer en fonction de la WoT visée, j’ai l’impression que tu lui as répondu sur l’impact des sentries de départ sur la taille max ?

Pour finir

L’étude est très intéressante, on arrive enfin à un calcul précis pour déterminer le max. On va pouvoir pondérer quel paramètre impacte le plus sur la taille max finale.
Ensuite, nous pourrons analyser l’impact de chaque paramètre sur la fragilité de la WoT par rapport à l’attaque des sybils, et on pourra alors, je pense, commencer à déterminer des paramètres idéaux pour une WoT de production.

L’image de la sphère pour “voir mentalement” la WoT c’est très bien aussi. C’est effectivement beaucoup plus clair dans mon esprit, sur comment observer la WoT.

A noter que en parallèle, simuler des WoT reste pertinent car ça permet de réaliser des éléments importants. Par exemple, si il y a trop de monde à vouloir rejoindre la WoT, et que les certifications se dispersent de trop entre les membres et les individus en attente d’entrée, la WoT ne peut pas grandir. (Phénomène reproduit sur les simulations de greyzlii, cgeek et moi). L’impact est qu’il faut que les logiciels guident l’utilisateur dans l’exercice de certification, sans pour autant le faire à leur place :slight_smile:

Très de bavardages, je continue de lire la suite de l’étude avec intéret en tout cas.

2 Likes

Le tableau repose sur quel calcul ? Il est clair que Y[N] est bien en rapport avec N et stepmax (au moins, puisque stigStock le limite aussi), il faut donc établir une bonne fonction de calcul de Y[N], et ne pas prendre de nombres au hasard ou dans une liste arbitraire.

Comme les sentries sont ceux qui signent le plus, ce sont eux qui vont déterminer le diamètre de la WoT(max) au plus proche.

Comme on veut qu’en plus ils signent un maximum possible de membres dans la WoT max, on obtient aussi :

  • Y[Nmax] = SigStock/sigQty

Or (sigStock+1)*(sigStock / sigQty)^(stepmax-1) = Sphere(stepmax) = Nmax

D’où Y[Nmax] = [Nmax/(sigStock+1)][1], qui est proche de Nmax^(1/stepmax)

A noter que pour Nmax = 10 000 000 et sigStock = 150, stepmax = 4, on obtient Y[N] = 40 et sigQty = 3 ce qui expérimentalement semble concorder (un bon moyen de savoir si une formulation a de bonnes chances d’être correcte, c’est de vérifier que les chiffres obtenus dans des cas un peu connu semblent corrects).

Si on prend Y[Nmax] = Nmax^(1/stepmax) on obtient pour le même cas Y[Nmax] = 25 et sigQty = 6, ce qui semble plus sûr pour l’acceptation d’un membre.

Non. Démonstration : stepmax = 2, sigStock = 8, sigQty = 2 et Y[N] = 8, 8^2/2 = 32 membres possibles, il peut y avoir 32 sentries possibles, ça ne limite pas le diamètre. S’il n’y en a aucun, il n’y aura pas 32 membres mais moins, puisque alors 7^2 / 2 => 24 membres possibles au maximum.

Après si on prend Y[N] = N^(1/stepmax), pour 10 membres ont a Y[10] = 3, on peut avoir 0 sentry.

C’est un calcul de maximum, pas un calcul quelconque. C’est 8+1 membres initiaux pour Sphere(1) si on veut être précis. Car le sentry max (duquel on part pour calculer) signe ici 8 membres. Au delà de ces 8 nous entrons dans la Sphere(2). Le calcul du max se fait ici par raisonnement par récurrence sur les Sphere(n) pour voir quel maximum on peut atteindre pour chacune d’entre elles jusqu’à la dernière = Sphere(stepmax).

Dans l’exemple pour sigStock = 50, rajouter 1 revient à rajouter 2% à stigStock. Quand on compare ensuite les deux formulations :

  • (A) Sphere(n) = (sigStock+1)*(sigStock / sigQty)^(n-1)
  • (B) Sphere(n) = (sigStock)*(sigStock / sigQty)^(n-1)

Pour sigStock = 50, A/B =1 + 2%, d’ailleurs ça ne joue même pas à chaque step, le terme de droite étant inchangé. C’est donc simplement (A) qu’il faut prendre, et (A) ne diffère de (B) que faiblement. J’aurais mieux fait d’être précis dès le départ, car je constate que ça rajoute du texte dans le fil pour rien du tout…

Quand on se lance dans du calcul d’ordre de grandeur on fait ça à peu près à la louche… Après on peut préciser, c’est mieux…

On peut aussi voir les sphères imbriquées les unes dans les autres (comme les poupées russes), ce qui est visuellement pratique pour bien voir les distances et identifier les chemins rapidement.

C’est le sens de l’issue sur sakia et cesium.


  1. 1/(stepmax-1) ↩︎

Je me suis mal exprimé : je parlais du fait que, mettons qu’on souhaite à terme atteindre une WoT de 1M (1.000.000) de membres par le jeu des certifications moyennes. Doit-on viser les paramètres pour une WoT à 2M ? 5M ? 10M ?

Le max ne sera pas atteint, car il faut utiliser toutes les signatures + les renouveler en permance n’oublions pas… + éviter de sur-signer des membres déjà actifs (ce que ne manqueront pas de faire la plupart des membres…), pour ne pas perdre de stock de signatures.

C’est donc complexe de savoir ce qu’il faut viser car le comportement des hommes sur ce sujet est complètement inconnu il faut bien le savoir, il n’y aucun exemple vérifiable. Mais je dirais au pif au moins 10 Millions, et peut-être même très certainement 100 millions.

Ils nous disent que la moyenne de liens sociaux est de 50 (pas 150 qui est plutôt un max), si donc on se base sur les mêmes calculs avec 50 et stepmax = 4, avec sigQty = 5

  • Sphere(stepmax) = (50+1)*(50 / 5)^3 = 51 000, on ne va pas bien loin…
  • WoTmax = (150+1)*(150/5)^3 = 4 077 000 soit 80 fois plus

Avec stepmax = 5 :

  • Sphere(stepmax) = (50+1)*(50 / 5)^4 = 510 000 c’est mieux
  • WoTmax = (150+1)*(150/5)^4 = 122 310 000 soit 240 fois plus

Ce tout petit essai montre bien comment la WoTmax ne fait que très largement encadrer la WoT visée… Mais là en sus je n’ai pas fait le calcul des liens entre Y[N] sigStock etc… Il faut donc réaliser une étude numérique précise à partir des formulations données plus haut.

C’est l’un des trucs assez fort de raisonner en “max” : Galuel n’a pas du tout besoin de connaître le tableau que j’ai produit, et même mieux : il peut me dire si les valeurs que j’ai prises sont cohérentes ou non.

Si je les reprends (je rappelle que ce ne sont que des points particuliers, il existe une courbe générale) :

N         Y(N)  
10        2  
100       4  
1000      6  
10000     8  
100000    12  
1000000   20  

Je dirais que ça reste cohérent en termes de grandeurs avec ce qu’il a trouvé, en ce qu’il s’agit du nombre minimum pour être point de contrôle. Mais on peut aussi décider qu’il faille avoir une courbe plus proche du max afin de n’avoir des contraintes de distance que pour ceux où il existe un maximum de chemins, donc ayant émis le plus de certifications possibles.

1 Like

Après pour le cas précis de Duniter, il faut aussi voir que la règle de distance ne s’applique pas en continu mais en fréquence.

Ainsi :

  • tout nouveau membre qui souhaite intégrer la WoT subit la contrainte de distance
  • tout membre effectif subit la contrainte de distance tous les X temps (6 mois par exemple dans TestNet)

Et donc la WoT peut en réalité avoir des distances plus grandes que stepmax dans les faits, par exemple si une signature utilisée lors du test de distance expire avant le renouvellement du membre, alors entre cette expiration et le renouvellement, le membre pourra être à une distance bien plus élevée que stepmax.

Bien sûr, ça dépend toujours du jeu de certifications à chaque instant.

1 Like

Ca n’a pas d’importance, car la distance a une définition. Peut importe cette définition, une fois calculée et connue elle est valide. Le fait qu’un membre puisse osciller entre deux moments n’influe en rien le calcul. Il faut séparer les questions.

Encore plus simple donc, en étudiant les fonctions données, si on vise une WoT pratique (pas max) de 3 millions sur la base d’une moyenne de 50 personnes connues par membre, avec stepmax = 5 alors SigQty sera déterminé :

  • N = (sigStock+1)*(sigStock / sigQty)^(stepmax-1)
  • sigQty = sigStock/[N/(sigStock+1)][1] = 50/(3.10⁶/51)^(1/4) = 3,2 => sigQty = 4

De manière générale on doit comprendre que sigStock = 50 en moyenne implique que sigQty ne peut pas prendre n’importe quelle valeur si on vise une WoT conséquence, il faut que (sigStock / sigQty) >> 1, associé à un stepmax conséquent aussi.

Viser une WoT pratique (50 personnes connues en moyenne) de 3 millions me semble un bonne base. Ensuite, avec les formulations trouvées ci-dessus il faut réduire le nombre de paramètres effectifs à définir, puisque beaucoup d’entre eux sont automatiquement trouvés.

On peut garder en tête les données empiriques que 12, 50 et 150 personnes sont des données sur lesquelles on peut se baser pour se caler à peu près avec les données trouvées.

Avec ces données, recalculons la WoT moyenne et la WoT max :

  • maxstep = 5
  • sigStock = 150
  • sigPeriod = 1 semaine => sigValidity = sigPeriod x 150 = 2 ans et 6 mois
  • Wot moyenne = (50+1)*(50 / 4)^4 = 1 245 117
  • Wot max = (150+1)*(150 / 4)^4 = 298 608 398
  • Wot max / Wot moyenne = 240 (3^5 puisque 150 = 3*50 et que maxstep = 5)
  • Y[Nmoyen] = 1 245 117^(1/5) = 17

  1. 1/(stepmax-1) ↩︎

Ça n’influe pas sur le calcul que tu effectues ici,mais pour autant la règle ne sera pas vérifiée à tout instant et en tout point. Et donc en réalité la toile peut déborder de stepmax, qui est pourtant le facteur limitant de de Nmax. Mais je n’ai pas idée de quelle proportion ça représente, si c’est 1%, 10% ou autre chose.

C’est pas grand chose, on dira que c’est négligeable… C’est d’autant plus négligeable que la durée de validité des signatures est plus grande que la période de recalcul global des distances.

La WoT moyenne (50 signatures moyennes / membre), fonction de stepmax et sigQty :

Les valeurs > 1 000 000 sont pour 5 < stepmax < 7 et 3 < sigQty < 9

Tableur : WoT.ods (46,8 Ko)

En lignes :

Tableur : WoT.ods (21,0 Ko)

Inversion des axes / couleurs SigQty / stepmax :

Tableur : WoT.ods (28,1 Ko)

3 Likes

So, there is two parameters to limit WoT size.
To have 1 000 000 members with sigQty = 7, 10 certifications are needed. I think it’s a lot.
I think yellow and green curves are better:

  • yellow: WoT diameter 5, four certifications.
  • green: WoT diameter 6, seven certifications.

Plutôt qu’étudier une WoT avec un nombre moyen de 50 signatures par membre, il faudrait plutôt étudier une WoT avec une distribution des liens qui suit des courbes connues de probabilités.

Par exemple, comparer ce qu’on a avec des liens qui suivent une « Power Law Distribution » :
https://forum.duniter.org/uploads/default/original/1X/abaa565b33ca72a04ab0deac9705df30f9ce3e8a.png

Contre des liens qui suivent une distribution de Poisson :
https://forum.duniter.org/uploads/default/original/1X/fdc41a31f5b0d7dd7e136965d57d1b04e5f13668.png

Il y a toujours une moyenne dans les deux cas.

Oui mais la répartition des liens ne donnera pas une WoT de la même taille… Une médiane serait plus appropriée d’ailleurs non ?