Durt: Lib Duniter en dart

Voici un nouveau venu dans les libs Duniter:

Dans l’état actuel, cette lib doit déjà me permettre de me passer du binding DubpRust pour Gecko, et ainsi en théorie compiler Gecko pour web et desktop :slight_smile:

Mais avant de me remettre sur Gecko, je vais continuer d’ajouter des chose à cette lib, notamment les requêtes GVA primordiales (déjà balance et idty, je dois ajouter la méthode de paiement simplifié et l’historique).

Je pense également y ajouter les requêtes Cesium+.
J’ai commencé un client cli en dart qui aurait pour vocation à terme de remplacer Jaklis du coup.


Une différence à noter concernant les HD Wallets générés par cette lib, par rapport à DubpRust:
Suite aux derniers conseils d’élois, je n’utilise plus scrypt pour passer de l’étape mnémonic → Seed, mais directement PBKDF2, de manière à rester collé au standard BIP39.

Elois estime avoir fait une erreur à vouloir utiliser scrypt à la place de PBKDF2, car ça complexifie l’implémentation en s’écartant du standard.
Mais je ne suis pas fermé, on peut en discuter, c’est à nous de décider.

L’une des conséquences est que pour rester sécurisé, on devrait passer à des Mnemonic de 24 mots au lieu de 12.
Pour le moment je suis resté à 12 mots le temps qu’on se décide et pour ne pas avoir à toucher à l’UI de Gecko, mais il faudrait changer.

L’avantage, c’est qu’on serait full bip39, et ainsi, les mnemonic d’autres cryptos pourront servir pour la G1, et inversement.


Autre chose, cette lib permet de générer des wallets de type Cesium (salt + password), et de les stocker en format DEWIF.
Comme la RFC 13 ne prends pas en compte ce cas, j’ai donc décidé de stocker la seed au lieu du mnemonic (comme c’était le cas à la base).

La taille de la seed étant supérieur à l’entropy du mnemonic (quoi que pour des 24 mots il faudra voir), j’ai donc dû changer la méthode de calcul du padding.
Au lieux de (32 - entropyLength) je suis passé à (40 - seedLength).
Pourquoi 40 ? Totalement au pif, juste une valeur supérieur à la taille de la seed qui fait elle même 32 octets.
J’ajusterai si on se décide à standardisé ça.


Je pense bien maintenir cette lib et l’améliorer au fur et à mesure, en y externalisant les composants métier Duniter de Gecko.
Au fur et à mesure que les développements liés à la migration Substrate avanceront, j’implémenterai le nécessaire à cette lib.


Donc voilà, à ceux qui souhaitent développer un nouveau client G1 en Dart/Flutter, que se soit un CLI dart, un client Desktop, web ou mobile en Flutter, la voie est libre :slight_smile:

6 Likes