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)
dansIdtyValue
initialisé à(0,0)
À chaque extrinsic on applique les conditions suivantes jusqu’à paiement des frais ou
exonération des frais
- si
account_id
n’est pas présent dans la mapaccount_id → idty_index
le compte paie les frais - pour l’identité reliée au compte, on incrémente
amount
de(current_block - last_use) × factor
avec une valeur maximale égale àQ
- on met à jour
last_use
àcurrent_block
- on décrémente
amount
d’une valeurx
égale au minimumentre 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 à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.