doc: update deriving

This commit is contained in:
Vlad Stan 2023-04-10 09:56:13 +03:00 committed by GitHub
parent 16968809f2
commit fe7536de20
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

10
704.md
View File

@ -22,9 +22,11 @@ This means that each participant has to:
Each client has a `master` key (denoted with `m`). This key can be the profile `nsec...`, but it is not mandatory.
## Deriving the direct message parent key
[BIP32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki) is used to derive the paths. A client can generate multiple `direct message parent keys`, one for each peer that it is communicating with.
Nostr `coin_type'` is `1237'` (see [NIP-06](https://github.com/nostr-protocol/nips/blob/master/06.md)). This NIP defines purpose `25709'` (`dm` -> `0x646d` -> `25709`) for deriving `Direct Messages` related keys.
[BIP32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki) is used to derive the paths. A client can generate multiple `direct message parent keys`, one for each peer that it is communicating with. Nostr `coin_type'` is `1237'` (see [NIP-06](https://github.com/nostr-protocol/nips/blob/master/06.md)). In this NIP we define the purpose `25709'` (`dm` -> `0x646d` -> `25709`) for deriving `Direct Messages` related keys.
`m/25709'/1237'/[<account>']`
When client `Alice` wants to build its `dm parent key` for `Bob` it has to:
- get the public key of `Bob` (in hex). Eg: `3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d`.
- split the public key hex string in 8 chunks:
- `3bf0c63f`, `cb934634`, `07af97a5`, `e5ee64fa`, `883d107e`, `f9e55847`, `2c4eb9aa`, `aefa459d`
- derive the `dm parent key`: `m/25709'/1237'/p1'/p2'/.../p8'`