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)dansIdtyValueinitialisé à(0,0)
À chaque extrinsic on applique les conditions suivantes jusqu’à
paiement des frais ou
exonération des frais
- si
account_idn’est pas présent dans la mapaccount_id → idty_indexle compte paie les frais
- pour l’identité reliée au compte, on incrémente
amountde(current_block - last_use) × factoravec une valeur maximale égale àQ
- on met à jour
last_useàcurrent_block
- on décrémente
amountd’une valeurxégale au minimum
entre la valeur des frais et la valeur de amount - le compte paie les frais d’une valeur réduite de
x(
/
en fonction du montant)
On a deux paramètres
- la valeur de
Q(similaire àgiftdans l’implémentation précédente) - la valeur de
factor(qui est égale à1 / periodde 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.