smith-members
Closes #168 (closed).
Présentation
Nouvelle palette visant à remplacer l'implémentation actuelle de la WoT Smith.
Avancement :
-
events -
replace duniter-wot<Instance2> by smith-members -
integration tests -
benchmarks (écriture + lancement local) -
benchmarks (sur machine de référence) -
remove duniter-wot + certifications + membership instance parameters -
clean // TODO
s
Impacts si adoptée :
- la palette
duniter-wot
n'est plus instanciée (nimembership
nicertification
) : réalisé dans cette MR - la palette
membership
, exploitée seulement pour la WoT principale, pourrait disparaître (voir explication ici) : non réalisé dans cette MR
Architecture
La palette s'intercale entre la palette membership
et authority-members
.
Son rôle est de définir qui est Smith, c'est-à-dire qui fait partie du groupe de personnes capables d'interagir avec la palette authority-members
et plus spécifiquement la méthode go_online()
.
La palette :
- en aval :
- implémente IsMember de
authority-members
pour avoir un contrôle surgo_online()
- fournit un trait
OnSmithDelete
qui notifieauthority-members
qu'un Smith a perdu son statut et donc qu'une autorité, éventuellement online, doit être exclue (via OutgoingAuthorities)
- implémente IsMember de
- en amont :
- définit un trait
IsWoTMember
implémenté par la palettemembership
qui fournit qui est membre de la WoT (car seuls les membres peuvent devenir Smith) - implémente
OnIdtyChange
de la paletteidentity
afin de retirer le statut Smith à qui perd le statut membre de la WoT
- définit un trait
Fonctionnement
Je suis parti de l'idée que nous souhaitions conserver une toile Smith à peu près sur les mêmes règles que l'actuelle, à savoir :
- il faut être Membre (de la WoT) pour devenir Smith
- devenir Smith se fait par certification
J'ai toutefois changé quelques éléments :
- les certifications n'expirent plus, mais sont perdues par leur bénéficiaire s'il perd le statut de Smith
- les certifications (et invitations) ne sont possibles que pour les Smith online (c-à-d au statut d'Autorité au sens de la palette
authority-members
) - il n'y a plus de concept d'adhésion, remplacé par l'acception d'une invitation et le maintien du statut grâce à
go_online()
Processus d'inscription
Pour devenir Smith un membre de la WoT doit :
- Être invité par un Smith existant
- Accepter l'invitation
- Recevoir suffisamment de certifications
Et c'est tout. A partir du moment où l'étape 3 est atteinte, le Smith peut :
- devenir autorité : il lui faut simplement faire un
go_online()
- inviter et certifier d'autres smiths
Limites
Un Smith ne peut pas rester éternellement Smith et offline. Le but d'être Smith est de mettre en place un nœud validateur.
De ce fait, un Smith expire au bout de SmithInactivityMaxDuration
sessions. Dans ce cas, le Smith arbore un statut Excluded
et perd toutes ses certifications.
Toutefois, les certifications valides (c-à-d celles dont le bénéficiaire est Smith) restent comptabilisées au cas où le smith exclu redevenait Smith par la suite : il ne faudrait pas qu'il puisse artificiellement gonfler son stock par entrée/sortie du cercle des smiths.
Redevenir Smith
Un Smith exclu peut redevenir Smith. Mais il doit recommencer tout le processus et recevoir des certifications en repartant de zéro.
Stock de certifications
Chaque Smith dispose d'un stock de MaxByIssuer
certifications valides qu'il peut émettre.
Les certifications n'ont plus de date d'expiration : celles-ci sont données "à vie de Smith non exclu". L'idée est de récompenser le comportement de Smith actif, c'est-à-dire qui est online de façon stable (ou devient offline pendant de courtes durées).
Un Smith exclu peut redevenir Smith. Ce processus d'entrée/sortie n'influe pas sur le stock d'émission MaxByIssuer
qui reste le même peu importe le nombre d'entrée/sortie de la toile Smith effectuées. Ce qui augmente ou diminue son stock de certification est uniquement lié à l'émission des certifications réalisées, ou à la perte de statut Smith des autres membres forgerons.