Classement Elo des noeuds

Je viens de penser à la possibilité de classement Elo des noeuds, chaque nouveau calcul de bloc d’un noeud peut etre évalué comme une victoire relativement à la moyenne Elo des autres noeuds, ceci donnant des points au gagnant et soustrayant les points aux autres.

Ce classement permettrait d’évaluer une difficulté individuelle fine pour chaque clé, permettant une très grande amélioration de la rotation du calcul.

En effet le classement Elo permet de connaître la force relative d’un noeud, et donc sa force de calcul, constamment réévaluée relativement à la moyenne.

Actuellement le processus revient à faire monter drastiquement la difficulté, comme si on classait le noeud à un Elo stratosphérique d’un coup, puis on redescend progressivement sa difficulté comme si on le ramenait à un niveau débutant. Ceci ne permet pas aux noeud peu puissant de jouer à leur niveau. En instaurant un Elo on aurait accès à une évaluation prouvée de la force relative du noeud, et donc on ouvre la possibilité à une évaluation très fine de la difficulté, permettant ainsi une finesse individuelle fine, donc une meilleure rotation.

5 Likes

Bonjour galuel,

Tu fait référence à un type de classement qui fait partie de ton champs habituel de connaissance, puisque cela viens des échecs. mais tous le monde ne connais pas le monde (merveilleux) des échecs !!!

Pour préciser ce qu’est un classement ELO, on peut consulter la page wikipedia

dans le classement ELO, c’est la comparaison des forces de deux joueurs au moyen d’un grand nombre de partie d’échec qui permet d’établir une loi de probabilité permettant le classement de l’ensemble des joueurs et de là, d’établir une statistique sur le résultat d’une rencontre entre deux joueurs qui n’auraient jamais encore joué ensemble.

quel serait l’élément de comparaison assimilable à une partie d’échecs à prendre en compte pour les nœuds?

Pour les noeuds on part d’un Elo moyen prédéfini, par exemple 2000 pts. A chaque fois qu’un noeud Ex trouve un bloc on considère qu’il a gagné une partie face à tous les autres (la branlée quoi !)

Tous les autres noeuds Ey sont considérés perdants d’un nombre de points Vy = f(Ex,Ey) (voir la formule simple du Elo pour f). Et Ex se voit crédité de la somme des Vy. Ainsi à chaque bloc le Elo de tous les noeuds actifs est modifié et la somme des points gagnés et perdus est nulle de sorte que mécaniquement la moyenne restera toujours à 2000 pts.

On peut simuler le calcul Elo sur la base des blocs existants (il faut toutefois connaître pour chaque bloc la liste des noeuds actifs qui doit être définie).

1 Like

Ce procédé peut être intéressant pour le calcul du handicap, en revanche il ne permet pas de nous protéger d’une ferme de calcul géante comme le fait actuellement le facteur d’exclusion. Il faudra donc maintenir le facteur d’exclusion dans tout les cas.

Concernant l’application éventuelle pour le calcul du handicap, j’ai toutefois des réserves, notamment sur la quantité de données nécessaires au calcul ? Et comment cela s’intègre a la notion de fenêtre courante ?

Aujourd’hui le handicap se base uniquement sur l’historique de la fenêtre courante, ce qui permet a un membre dont la puissance aurait drastiquement chutée (changement de machine) de ne pas continuer a subir un handicap qui ne serait plus légitime. Mais surtout actuellement on n’a besoin que de deux variables pour calculer un handicap : nombre de blocs trouvés par le membre dans la fenetre courante et la médiane de la fenêtre courante.

Ce calcul étant obligatoirement effectué a chaque bloc il doit rester simple et rapide, de plus il y a déjà d’autres idées pour affiner le calcul de la difficulté personnalisée (https://git.duniter.org/nodes/typescript/duniter/issues/1169).
Je suggère donc qu’on réfléchisse éventuellement au classement Elo pour le protocole v11 et qu’on reste sur le changement de formule #1169 a court-terme :slight_smile:

4 Likes

Pourquoi pas, il faudra alors réfléchir à la forme qu’il prend :

  • un calcul “simple” a chaque bloc ne nécessitant pas beaucoup d’informations
  • un calcul plus complexe nécessitant beaucoup d’informations, et qui pourrait être fait de manière régulière (mais pas tous les blocs) et inséré par un ensemble de nœuds via un oracle.
1 Like

Le Elo est un calcul vraiment simple. Plus longtemps un noeud ne trouve pas de blocs, plus il “perd”, plus son Elo baisse, et donc plus sa difficulté baisse, et donc plus la probabilité qu’il trouve un bloc monte. Inversement pour celui qui calcule beaucoup de blocs.

Le fait de changer de machine fait que le classement Elo va s’adapter pour retrouver une valeur stable. Le Elo n’est pas un truc linéaire, et permet de calculer une probabilité de gain très précise.

2 Likes

Je ne connais pas bien le Elo, mais vu ce que tu dis Galuel je dirais que seule f change par rapport au mécanisme actuel.

J’ai bien compris. Je parle plutôt du nombre d’informations nécéssaires en entrées, pour économiser de la place.

Dans la logique des tokens, est-ce qu’on ne pourrait pas avoir un token stockant l’Elo de chaque membre, le sa consommation nécéssaire pour proposer un bloc et intégrant le calcul de nouvel Elo (montant) et gérer la perte d’Elo uniquement avec le nombre de blocs passés depuis le dernier calcul du membre ? Les autres membres calculants n’aurait pas besoin de stocker ni de fournir l’Elo des autres membres, chaqu’un stocke et fourni son Elo sur demande, et de ce fait on a une économie de données (stockage, réseau) et un fonctionnement interne au système (non assuré par le protocole en lui même, mais par des scripts et tokens).

C’est juste, mais pour être plus précis je dirais que le Elo apporte une évaluation différentielle là où le mécanisme actuel est un peu binaire (discret).

Avec le Elo on peut arriver à des difficultés fines et durables qui rendent le jeu bien plus symétrique entre les noeuds qui atteignent des chances de cacul similaire (augmenter la difficulté d’un noeud fera baisser son Elo, la tendance sera de faire évoluer le Elo autour de 2000 pour tout noeud).

1 Like

Super ces idées de rendre fondamentalement possible l’utilisation de tout petit noeud à coté de plus gros. :slight_smile:

et une question : la difficulté est calculée par noeud, ou par compte membre ?

je m’explique : quelqu’un qui aurait de très nombreux noeuds sur son seul compte membre pourrait-il (quasi) monopoliser l’écriture de la blockchain en écrivant successivement sur ses différents noeuds ?

Par compte membre. Le nombre de machines ne devrait pas (dé)avantager un membre.

Pourquoi 2000?

Il me semble même qu’il ne peut y avoir qu’un seul nœud qui fonctionne à chaque instant par compte membre… Je me trompe ?

Non non moi j’en ai 3 :wink:

Ah, super, je vais pouvoir en faire tout plein ! :wink:

3000 ou 7777 fonctionnent parfaitement bien aussi.