Je viens proposer une idée qui est pas mal présente dans d’autres crypto mais qui est absente de l’écosystème Duniter.
L’idée est d’utiliser des HD (Hierarchical Deterministic) wallets pour générer des adresses à la volée. Le principal cas d’utilisation est d’avoir une nouvelle adresse à chaque réception d’argent pour rendre plus difficile une analyse de la blockchain dans le but de savoir combien possède chaqu’un.
Ce système pourrait être entièrement compatible avec le modèle actuel et ne nécessiterai qu’une surcouche. Las clés dérivées de la master seed pourraient être utilisées pour générer le couple (secret id, password)
. Une autre possibilité est d’utiliser la seed comme secret id
, et la clé dérivée comme password
.
Ce système ne fonctionnerai cependant qu’avec les adresses “simple portefeuille”, vu que les comptes membres sont associés à une clé unique et non modifiable. Ce n’est pas vraiment un problème avec les transactions sans frais de Duniter : le compte membre co-créé le DU, et régulièrement on peut envoyer une certaine somme sur une adresse qui nous servira à faire les paiements. Dès la transaction suivante, il devient compliqué de dire vers qui va l’argent. Pour brouiller encore plus les pistes l’ordre des outputs pourraient être aléatoire, pour ne pas avoir le “reste” de son input toujours en dernière position. Il serait alors difficile de savoir à qui appartient les adresses de destination (une nouvelle adresse unique générée à chaque fois), mais en plus on ne pourrait pas distinguer l’adresse de destination et l’adresse où est envoyé le reste.
En conclusion, ce système permettrais d’augmenter de manière importante l’anonymité des transactions. De plus l’utilisateur n’aurais à retenir que la seed pour accéder à toutes ses adresses. Vu que cette seed devrait être cryptographiquement forte, on pourrait imaginer un système analogue à d’autres cryptomonnaies comme le wallet Coinomi, qui stocke la seed chiffrée avec un mot de passe sur l’appareil. Pour toute transaction, on demande à l’utilisateur de saisir son mot de passe pour déchiffrer la seed et regénérer les clés privés voulues. La méthode de dérivation des HD wallets permettent aussi d’avoir une seed “publique” permettant de générer toutes les clés publiques correspondantes. Cette seed pourrait être stockée en clair et permettrait de voir les montants sans entrer de mot de passe.
Voila le lien du BIP (Bitcoin Improvement Proposal) correspondant aux HD wallets.
Mon explication est peut-être un peu brouillonne, n’hésitez pas à me poser des questions ou à donner votre avis sur cette idée.
EDIT : Ca pourrait aussi être utile pour cette idée de @cgeek au niveau de la clé privée membre pour le calcul de blocs :