Attribution du droit a calculer des blocs


#1

Je relance la question de l’attribution du droit a calculer des blocs, on avait déjà discuté de ça sur ce forum mais je ne retrouve plus le thread :

un groupe de membres malveillants qui disposent d’une puissance de calcul collossale peut prendre le contrôle total de la monnaie avec un nombre de clé membre égal a la taille de la fenêtre d’exclusion + 1.
La fenêtre d’exclusion a une taille d’un tiers des calculateurs, donc environ 10 actuellement. Ce que veut dire qu’avec une douzaine de clé membres un supercalculateur prends le contrôle total de la g1.

Afin d’éviter ça, il avait été émis l’idée de limiter le droit d’écriture des blocs a seulement certains types de membres : notamment il faut que ce soit un type de membre difficilement générable par sybil.

Nous pourrions pour rester simple décider que :

  • Seul les membres référents peuvent écrire des blocs.

Ou :

  • Seul les membres ayant émis et reçus 2Y[n] certifs peuvent écrire des blocs. (ça, protège mieux).

Ou jouer sur la connectivité (nouveau nom pour la qualité)

  • Seul les membres ayant une connectivité supérieure ou égale a X peuvent écrire des blocs. Connectivité qui ne serait calculée que lors de l’inscription et du renouvellement d’adhésion, au même moment que l’évaluation de la règle de distance. Ça me semble être la meilleure méthode, a condition de trouver une bonne valeur pour X que l’on pourrait nommer connectivityToCalculate par exemple.

EDit : pour rappel la connectivité de tout les membres est visualisable ici : https://g1-monit.librelois.fr/gaussianWotQuality?lg=fr

EDIT 2: une propriété des faux comptes d’une région sybil est d’avoir une connectivité très faible, il peuvent en revanche facilement émettre beaucoup de certifications et en obtenir beaucoup en s’en donnant entre eux, donc les limite référent ou 2Y[N] ne me semblent pas assez solides.
Exiger une connectivité de 1 ce serait déjà très protecteur.


Liens faibles / intermédiaires / forts
Discussion autour de la RFC5 (devenue fygg)
Question sur la toile de confiance
Question sur la toile de confiance
Question sur la toile de confiance
#2

Comment est calculée la connectivité/qualité ?

Sinon oui 10 membres c’est trop peu. J’ai de nouvelles idées pour rendre les noeuds calculateurs encore moins gourmant en ressources, mais pas sur que ça suffise.


#3

C’est le rapport entre le taux de membres référents rendus atteignables par une certification de ce membre et le taux de membres référents qu’il faut atteindre pour respecter la règle de distance.

Concrètement pour la calculer on utilise wotb, pour calculer la connectivité d’un membre A :
dans une copie de la wot (format wotb) on ajoute un noeud N et on lui donne 1 certif A->N puis on applique la fonction d’évaluation de la distance avec résultats détaillés. La connectivité de A est alors :

Connectivity(A) = (nbReached/nbSentries)/xpercent

Cette grandeur a plusieurs propriétés remarquables :

  1. Lorsqu’elle est supérieure ou égale à 1, cela signifie que recevoir une certification de ce membre suffit a respecter la règle de distance.
  2. Dans une région sybil, les faux compte ont une connectivité très faible (bien inférieure a 1).

On pourrait d’ailleurs, je pense, utiliser cette grandeur pour concevoir un algo de détection de région sybil mais c’est un autre sujet :slight_smile:

EDIT : A noter que la connectivité d’un membre A peut aussi se calculer comment étant la proportion de membres référents atteints pour se membre A pour une distance stepMax-1 (toujours diviser par xpercent), le calcul est donc beaucoup plus rapide et donc dans la pratique c’est comme ça que je la calcule dans g1-monit.


#4

En gros c’est : si ce membre certifie X, quelle distance aura X ? Vraiment une très bonne propriété en effet =D

Dans quel format est enregistré la wot actuellement ? Tu aurais moyen d’écrire un parseur pour le modèle en Rust que je puisse tester ma nouvelle implémentation avec des données réelles ?


Implémentation de Duniter en Rust?
#5

Je suis en train de la testée ta crate avec des données réelles, je recréer le fichier wot a partir des blocs que je reçoit via ws2p donc ça prend du temps. Une fois que j’aurais avancé je pourrais comparer avec les résultats de g1-monit pour voir si c’est consistent.
J’ai déjà appliquer ta crate au bloc genesis et les résultats sont identiques a g1-monit pour la toile initiale donc je pense qu’on est bon :wink:


a scindé ce sujet #6

6 messages ont été intégrés dans un sujet existant : Implémentation de Duniter en Rust?


#7

C’est à dire qu’il n’existe pas de corrélation/causalité entre “cet individu a une forte connectivité sociale” et “cet individu a les capacités techniques de monter un noeud Duniter”.


#8

Et en quoi est ce un problème ? On ne parle pas ici de la capacité d’un membre a bien faire qqch mais du niveau de criticité de chaque droits : c’est à dire de l’impact d’un mauvais usage de ce droit. Et a l’échelle d’un membre le mauvais usage du droit au calcul d"es blocs (par exemple en donnant sa clé de calcul a une personne gérant un supercalculateur) est beaucoup, plus grave que de certifier quelques faux compte.


#9

Oui, c’est bien ce que je dis. Vouloir lier le droit de calculer des blocs à la sociabilité du membre, c’est absurde. Ce n’est pas un bon critère pour distinguer les droits des membres entre eux.


#10

En effet mais ce n’est pas gênant car ce n’est pas la réflexion de départ : la corrélation (et même plus la causalité) elle est entre la création de faux comptes et la connectivités de ceux-ci.

Alors d’une part la connectivité n’a pas de rapport avec la sociabilité, c’est plutôt le dergré de centralité qui a un rapport avec la sociabilité, ce qui est très différent.
Tu peut etre complétement sauvage et n’avoir certifier personne, si tu est certifié par une seule personne a forte connectivité tu aura une forte conenctivité.

D’autre part tu prend le problème a l’envers et présupposant qu’il faudra une justification naturelle ou élégante a la ségrégation des droits, ce n’est pas le cas. je t’invite a relire mon post d’origine sur le sujet, l’idée d’utiliser la connectivité est une protection contre un type d’attaque bien précis et fatal contre la monnaie : Attribution du droit a calculer des blocs


#11

Quelques points d’attention quand même :

  • il faut, si on veut participer à la toile une fois certifié, l’être par les bonnes personnes. Ca implique de ne plus certifier simplement parce qu’on “connait bien la personne”, mais parce qu’on souhaite donner le droit de calcul à tel ou telle personnes
  • si le minimum est trop élevé, ça raréfiera encore plus les calculateurs potentiels si il faut faire des efforts particuliers pour obtenir ce droit de calcul
  • et enfin, les régions “isolées” de la WoT ne peuvent plus participer aux évolutions du réseau.

Cette règle peut être intéressante malgré tout. Par contre, la connectivité minimum devrait être suffisamment faible pour n’exclure que des zones de la WoT qui ressemble à des attaques sybilles. Une sorte de règle “Dans le doute, ces membres sont exclus. A eux de se rapprocher de la toile pour montrer que ce ne sont pas des robots”.


#12

Je suis d’accord, toute la question est de trouver le bon seuil :slight_smile:
Un seuil de 1 est peut être un peu fort en effet.


#13

Ben si quand même un peu, vu que tu as défini la connectivité comme un rapport au nombre de référents atteints :

Or pour que les référent atteignent une personne, il faut qu’il soit certifié, donc “sociabilisé” (reconnu par ses pairs). Ou alors tu mets un sens derrière “sociabilité” que je ne comprends pas.

Du reste, je suis d’accord avec le fait qu’il faut trouver des mécanismes pour protéger le droit d’écriture. La connectivité peut être un critère intéressant, oui.


#14

Oui en fait pour moi la sociabilité correspond plutôt au degré de centralité, donc au poids de la personne dans la toile. En gros quelqu’un de sociable pour moi c’est quelqu’un qui est souvent sur le plus court chemin entre deux membres, ce qui n’a rien a voir avec la connectivité.
On peut avoir une connectivité très forte et une centralité très faible, donc une connectivité forte n’implique pas d’être sociable.
En revanche l’implication inverse est vrai : quelqu’un de très sociale aura une forte connectivité (et une forte centralité bien sûr).

Par exemple, si carole fabre certifie une amie perso qui n’est jamais venu a un apéro et qui a juste 4 autres certifs mais qui ne connait que ces 5 personnes la et qui ne rencontre pas d’autres personnes : elle aura quand même une très forte connectivité, par contre sa centralité sera nulle.


#15

Oui OK, c’est un point de vue qui se défend, merci pour les précisions. Sans cette explication je trouvais qu’@Inso se faisait un peu rembarrer gratuitement :slight_smile: