Salut à tous!
Je m’intéresse depuis un certain temps aux toiles de confiance et depuis peu à duniter. Il me semble que c’est un bon projet qui peut permettre de tester en vrai des modèles de toile de confiance. Cependant j’ai l’impression que les quelques règles qui la régissent sont assez simplistes. Je les rappelle (corrigez moi si je me trompe) :
- on peut certifier x personnes (le degré sortant de chaque sommet est au maximum x)
- on doit être certifié par y personnes distinctes pour faire partie du réseau (le degré entrant de chaque sommet est au minimum y)
- on doit être à distance au maximum z de tout les membres du réseau (le diamètre du graphe est au maximum z)
Tout d’abord la certification dans la vraie vie ne peut, je pense, pas être une relation binaire. Je pense que c’est important d’avoir des niveaux de certification variable pour exprimer les nuances de la confiance entre les êtres humains! Il y a quand même une différence entre quelqu’un avec qui on a échangé des mails, eu au téléphone, croisé régulièrement ou encore un ami d’enfance.
Une toile de confiance doit résister aux attaques de type Sybil (quelqu’un qui se crée pleins d’identitées) : on doit pouvoir distinguer facilement si un ensemble de noeud fait bien partie du même groupe que l’utilisateur originel (le premier, qui a crée le réseau). On s’aperçoit tout de suite qu’il s’agit d’un problème de clustering et qu’il est probablement assez simpliste de juste prendre le nombre d’arêtes du plus court chemin comme mesure de la distance (si un attaquant organise ses marionettes en un graphe de De Bruijn par exemple, il peut créer un graphe de petit diamètre avec peu de certificats, il lui suffit alors seulement de corrompre/tromper quelques membres du réseaux et le tour est joué). Je n’ai pas encore beaucoup réfléchi à une bonne métrique (quelle définition pour un groupe) mais instinctivement il parait important de prendre en compte le nombre de chemin distincts entre les deux sommets (la coupe minimale entre les deux sommets). On pourrait même prendre en compte la distance entre les différents chemins (2 chemins composé de noeuds qui sont proches les uns des autres valent moins que 2 chemins composé de noeuds très éloignés).
J’ai parlé un peu plus haut de l’utilisateur originel et ça en a peut-être choqué certains car l’esprit de duniter c’est de ne pas s’imposer et de rester le plus libre/distribué possible alors que effectivement l’utilisateur originel (ou les) a le privilège de définir la bonne partie du réseau, celle dans laquelle on peut échanger, celle qui est certifiée. (Note: je parle au niveau conceptuel et non au niveau de la blockchain parce que oui, ceux qui ont ce pouvoir de définition dans la blockchain c’est 51% des noeuds)
Pour pallier à ça je pense qu’il est intéressant de revenir au clustering et certification graduelle. On peut imaginer que chaque cluster peut avoir sa propre monnaie/valeur d’échange au sein même d’un réseau duniter. Pourquoi vouloir décider quel cluster est le bon quand on peut juste les faire cohabiter? Les noeuds qui appartiennent à plusieurs cluster peuvent permettre l’échanger entre ces valeurs, ainsi les cas compliqué comme des clusters qui se fusionnent ou se scindent (plus rare à priori) sont gérés de manière naturelle.
Dans le même genre, si la mesure d’appartenance à un cluster est graduelle, c’est intéressant de faire la distribution du DU en fonction du degré d’apartenance au cluster. En effet je ne pense pas que ce soit contraire à l’esprit d’une monnaie libre et à la TRM: on peut voir ça comme si chaque individu (membre d’un quelconque cluster ou pas) se voyait attribuer une certaine quantité de monnaie qu’il distribue lui-même aux autres de manière proportionnelle à la confiance qu’il leur accorde.