RFC: conventions for Hierarchical Deterministic Wallets

Conventions implemented in dubp-rs-libs and used in ğecko.

4 J'aime

Je suis en train d’essayer d’implémenter les HD wallets dans DuniterPy.

Grâce aux exemples de la RFC sur le Dewif version 4, j’ai une clef publique correspondante à une seed en BIP32.

Si je crée une instance de keypair avec la bibliothèque Python dédiée bip-utils, à partir
de la seed fournie, je ne trouve pas la bonne clef publique.

Attendu :

0xb7d3a54e1c20172cd38e0d803776a3bacf11f895ef8ef846043a0d628431c872 # keypair seed
0xd1fec6ddf6e887e40bd77d459131ee5a6bec1194341b9393ead606363bb7b060 # public key

Obtenu:

0xb7d3a54e1c20172cd38e0d803776a3bacf11f895ef8ef846043a0d628431c872 # keypair seed
0x03dc552245207a51f5a750b7af955c8f574561d62da33ecad1c5e65337694f2ddc # public key

La bibliothèque me propose un paramètre que je laisse par défaut :

def FromSeed(seed_bytes, key_net_ver = Bip32Conf.KEY_NET_VER.Main()):

puis différentes formes de la clef publique :

  • RawCompressed (que j’utilise)
  • RawUncompressed
  • ToExtended

As-tu une idée de ce qui cloche ?

Peux-tu ajouter des exemples dans la RFC des HD wallets, pour ajouter des tests unitaires dans nos implémentations ?

1 J'aime

Normal ce n’est pas du BIP32 qu’or utilise. BIP32 est une norme conçue pour l’algo de signature du Bitcoin: Seck256p1.

Nous nous utilisons la norme Bip32-Ed25519

Le PDF des spec est également dispo ici pour ceux qui n’ont pas de compte sur ieee.org (c’est aussi mon cas).

Il te faut utiliser une lib de crypto qui implémente cette spec en particulier, où l’implémentée toi-même.

Perso je l’ai implémentée moi-même, le PDF re fait que 5 pages ça se lit bien. Et il est possible d’utiliser directement les fonctions de NaCl, c’est expliqué dans le PDF :slight_smile:

Ok, je vais faire ça :slight_smile:

Tu à une implémentation en pur python ici :

1 J'aime