Skip to content

smith-members

Cédric Moreau requested to merge feature/smith-members into master

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 // TODOs

Impacts si adoptée :

  1. la palette duniter-wot n'est plus instanciée (ni membership ni certification ) : réalisé dans cette MR
  2. 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 sur go_online()
    • fournit un trait OnSmithDelete qui notifie authority-members qu'un Smith a perdu son statut et donc qu'une autorité, éventuellement online, doit être exclue (via OutgoingAuthorities)
  • en amont :
    • définit un trait IsWoTMember implémenté par la palette membership qui fournit qui est membre de la WoT (car seuls les membres peuvent devenir Smith)
    • implémente OnIdtyChange de la palette identity afin de retirer le statut Smith à qui perd le statut membre de la WoT

image.png

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 :

  1. Être invité par un Smith existant
  2. Accepter l'invitation
  3. 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.

Edited by Cédric Moreau

Merge request reports