Avec @1000i100 on a discuté de deux fonctionnalités qui, ensemble, amélioreraient la simplicité d’usage et la sécurité d’un petit compte portefeuille embarqué (sur un téléphone avec code PIN faible par exemple).
[EDIT 1000i100, si ça te va tu peux supprimé la mention de l’édit pour la lisibilité]
L’intension
Reproduire le comportement des plafonds de paiement des cartes bancaires afin de limiter les dégâts en cas de vol.
Ainsi il devient possible d’utiliser au quotidien un compte portefeuille moins sécurisé (code pin court voir sans code pin si on veut imiter les paiements sans contact), sans avoir besoin de se reconnecter régulièrement à un compte de haute sécurité pour approvisionner le compte quotidien. En ne se connectant pas régulièrement au compte de haute sécurité, on peut se permettre d’avoir une sécurisation réellement élevée sans que ce soit contraignant au quotidien, et ça évite d’user cette haute sécurité en s’authentifiant de partout dessus, donc depuis le même terminal que le compte d’usage quotididien.
[FIN EDIT 1000i100]
Compte plafonné
Un compte pourrait définir son plafond. Le surplus d’une transaction dépassant le plafond serait envoyé sur un compte indiqué (typiquement le compte membre, ou un portefeuille plus sécurisé).
Cela éviterait de placer accidentellement (fausse manip, paiement reçu) trop d’argent sur un compte vulnérable.
Overhead runtime:
- 16 octets de storage par compte (pour tous les comptes) si on le met dans duniter-account
- 48 octets de storage par compte plafonné si c’est une palette à part, plus une lecture storage pour chaque transaction
Je verrais cette fonctionnalité dans duniter-account puisque c’est un test à réaliser à chaque transaction et que l’overhead dans AccountData est faible.
Alimentation glissante
On pourrait définir un compte à alimenter régulièrement (de manière glissante) pour un certain montant par jour. Un extrinsic du compte destinataire déclencherait un versement d’un montant calculé en fonction du temps écoulé depuis le dernier versement.
Le montant calculé serait proportionnel à la durée depuis le dernier versement, avec pour maximum le montant correspondant à une période donnée. Par exemple si on configure 100G1 sur 10 jours, pour toute durée de 10 jours ou plus on verse 100G1. Pour 5 jours on verse 50G1.
Ainsi, on n’a plus besoin de s’authentifier sur son compte membre pour alimenter son portefeuille, ce qui est un gain de sécurité.
Overhead runtime: 80 octets de storage par versement automatique.
Je mettrais plutôt cette fonctionnalité dans une palette à part, puisqu’elle ne nécessite que quelques extrinsics supplémentaires.
Edit: barré des trucs, réorganisé paragraphes, corrigé coût runtime