Description des Wallet Descriptors

This commit is contained in:
NicolasCantu 2024-02-14 15:26:59 +01:00
parent bc763998bf
commit c96154ab36
2 changed files with 27 additions and 5 deletions

View File

@ -7,9 +7,9 @@
* 6. [Fonctionnalité de récupération de mot de passe](#Fonctionnalitdercuprationdemotdepasse)
* 7. [Gestion de session basée sur un cache](#Gestiondesessionbasesuruncache)
* 8. [Gestion des clés de l'identité (aussi les clés des transactions SP)](#GestiondesclsdelidentitaussilesclsdestransactionsSP)
* 8.1. [Génération des clés privées (création des identités numériques)](#Gnrationdesclsprivescrationdesidentitsnumriques)
* 8.1.1. [HD Wallet (BIP32 + BIP44)](#HDWalletBIP32BIP44)
* 8.1.2. [Connexions avec une identité crée (`recover`)](#Connexionsavecuneidentitcrerecover)
* 8.1. [Génération des clés privées (création des identités numériques)](#Gnrationdesclsprivescrationdesidentitsnumriques)
* 8.1.1. [HD Wallet (BIP32 + BIP44)](#HDWalletBIP32BIP44)
* 8.1.2. [Connexions avec une identité crée (`recover`)](#Connexionsavecuneidentitcrerecover)
* 9. [Exemples de Code](#ExemplesdeCode)
<!-- vscode-markdown-toc-config
@ -44,7 +44,7 @@ Chaque relais permet d'accéder à la liste des process, de créer, recomposer (
Le système offrira la possibilité de se connecter via des services tiers (tels que OAuth2, avec Google, GitHub, etc.), permettant une intégration fluide avec les écosystèmes existants sans dégrader l'expérience utilisateur.
Pour cela, les flux de 4NK agissent en "proxy" transparent devant les flux API des services concernés, et les tokens d'accès sont ajoutés aux données de `member`.
Pour cela, les flux de 4NK agissent en "proxy" transparent devant les flux API des services concernés, et les tokens d'accès sont ajoutés aux données de `member`. En parrallèle des flux existant, les hash des requêtes API et de leurs réponses sont signés des clés des parties prenantes pour une vérification de la conformité des données par rapport aux process 4NK.
## 6. <a name='Fonctionnalitdercuprationdemotdepasse'></a>Fonctionnalité de récupération de mot de passe
@ -60,7 +60,7 @@ Le système ne maintiendra pas de session traditionnelle sur le serveur. La navi
### 8.1. <a name='Gnrationdesclsprivescrationdesidentitsnumriques'></a>Génération des clés privées (création des identités numériques)
#### 8.1.1. <a name='HDWalletBIP32BIP44'></a>HD Wallet (BIP32 + BIP44)
#### 8.1.1. <a name='HDWalletBIP32BIP44'></a>Wallet
Les transactions SP ont besoin de 2 clés privées Bitcoin, l'une critique sur la dépense des jetons, l'autre qui lève la confidentialité (partageable dans certains cas) :
@ -89,6 +89,26 @@ Dans l'ordre on génère donc :
5. Clé privée de dépense mainnet `spend_mainnet`.
6. Clé privée de scan du mainnet `scan_mainnet`.
##### Descripteurs de wallet
Les descripteurs de wallet sont une méthode standardisée pour décrire les scripts que le wallet peut utiliser pour dépenser des bitcoins. Ils fournissent une manière compacte et compréhensible de représenter les scripts, incluant les informations sur le type d'adresse (par exemple, P2PKH, P2SH, P2WPKH, etc.), et les clés ou chemins de clés impliqués.
```plaintext
wpkh([cprv1/44'/1'/0'/0/0]spend_recover) # cprv1 pour la clé privée `spend_recover`
wpkh([cprv2/44'/1'/0'/0/1]scan_recover) # cprv2 pour la clé privée `scan_recover`
wpkh([cprv3/44'/1'/0'/0/2]spend_revoke) # cprv3 pour la clé privée `spend_revoke`
wpkh([cprv4/44'/1'/0'/0/3]scan_revoke) # cprv4 pour la clé privée `scan_revoke`
wpkh([cprv5/84'/0'/0'/0/0]spend_mainnet) # cprv5 pour la clé privée `spend_mainnet`
wpkh([cprv6/84'/0'/0'/0/1]scan_mainnet) # cprv6 pour la clé privée `scan_mainnet`
```
Ici, `wpkh` signifie "witness public key hash" (SegWit), [clé_priveN/84'/M'/0'/0/n] est le chemin de dérivation avec `N` la référence à la clé privée, `M` est `1` pour signet custom (normalement 1 représenterait testnet, mais un signet custom peut avoir une convention différente) et `0` pour mainnet, `n` est l'index de l'adresse, et `xpubN` représente l'extended public key correspondant à la clé privée. Le `/0/*` à la fin indique que ce sont des adresses de réception (change addresses seraient `/1/*`).
Ici, cprvN représente un placeholder pour le chemin de dérivation de chaque clé privée. Les clé_priveN sont des placeholders pour les clés privées réelles, et le reste de la structure reste comme expliqué précédemment.
Ici il s'agit du format de stockage des privées, ce pourquoi la clé privée est indiquée dans le descripteur au lieu de la `xpub` plus classiquement utilisées pour ne pas exposer les clés privées.
##### Génération des adresses SP
Le relais partage leur liste de relais au setup du SDK (Wasm), cette liste est stockée en cache sous forme d'objets `SharedPeer`.

View File

@ -37,6 +37,8 @@ Voir [Doc_references.md](Doc_references.md).
* <https://river.com/learn/terms/b/bip-44-derivation-paths-for-p2pkh>
* <https://github.com/bitcoin/bitcoin/blob/master/doc/descriptors.md>
* <https://github.com/bitcoin/bips/blob/master/bip-0380.mediawiki>
* <https://en.bitcoin.it/wiki/BIP_0032>
* <https://en.bitcoin.it/wiki/BIP_0044>
## 5. <a name='Bitcoinprotocols'></a>Bitcoin protocols