Implémentation des quotas

Ok, donc je note les points suivants :

  • exonération partielle ou binaire de la transaction qui amène à un dépassement
  • nécessité ou non d’exonérer des comptes non membres
  • manière d’ajouter des données dans duniter-account

Pour ce dernier point, comment fonctionnerait le provider ? Parce que si c’est une Map, ça fait une recherche dans la map pour chaque transaction, ça me paraît un peu lourd.


Je reformuler ta proposition pour pouvoir comparer plus facilement

On ajoute le champ

  • quotas: (last_use: BlockNumber, amount: Balance) dans IdtyValue initialisé à (0,0)

À chaque extrinsic on applique les conditions suivantes jusqu’à :red_square: paiement des frais ou :green_square: exonération des frais

  • si account_id n’est pas présent dans la map account_id → idty_index le compte paie les frais :red_square:
  • pour l’identité reliée au compte, on incrémente amount de (current_block - last_use) × factor avec une valeur maximale égale à Q :arrow_down_small:
  • on met à jour last_use à current_block :arrow_down_small:
  • on décrémente amount d’une valeur x égale au minimum :arrow_down_small: entre la valeur des frais et la valeur de amount
  • le compte paie les frais d’une valeur réduite de x (:green_square: / :red_square: en fonction du montant)

On a deux paramètres

  • la valeur de Q (similaire à gift dans l’implémentation précédente)
  • la valeur de factor (qui est égale à 1 / period de l’implémentation précédente)

On peut toujours faire de factor une fonction de last_use et de amount si on veut changer le comportement.

1 Like