diff --git a/.typos.toml b/.typos.toml index eb6e77858d..6a044709e0 100644 --- a/.typos.toml +++ b/.typos.toml @@ -16,7 +16,7 @@ extend-ignore-re = [ "prefix.*", "value: .*", "pqNTRUsign", - "Strnad", + "nsec1.*", ] [default.extend-words] @@ -29,6 +29,7 @@ Atack = "Atack" Falke = "Falke" Meni = "Meni" Ono = "Ono" +Strnad = "Strnad" Toom = "Toom" [files] diff --git a/bip-0085.mediawiki b/bip-0085.mediawiki index b0f00abbef..ad91f9f124 100644 --- a/bip-0085.mediawiki +++ b/bip-0085.mediawiki @@ -8,7 +8,7 @@ Type: Informational Assigned: 2020-03-20 License: BSD-2-Clause OR OPUBL-1.0 - Version: 2.0.0 + Version: 2.1.0 ==Abstract== @@ -423,6 +423,48 @@ OUTPUT * DERIVED ENTROPY=5e41f8f5d5d9ac09a20b8a5797a3172b28c806aead00d27e36609e2dd116a59176a738804236586f668da8a51b90c708a4226d7f92259c69f64c51124b6f6cd2 * DERIVED ROLLS=1,0,0,2,0,1,5,5,2,4 +===Nostr=== + +Application number: 128002' + +The derivation path format is: m/83696968'/128002'/{identity}'/{account_index}' + +Each identity is an independent, unlinkable Nostr key namespace, and each account_index is a distinct key within that identity. + +Identity index 0' and account index 0' are reserved for future key-management use, such as proof-of-linkage between an identity's keys, key rotation, and revocation. Their semantics are out of scope for this BIP and may be specified by a future NIP. Usable signing keys therefore start at identity >= 1' and account_index >= 1'. + +The standard application of BIP-85 produces 64 bytes of entropy. Take the first 32 bytes (the 256 most significant bits) as the Nostr private key and discard the trailing 32 bytes, as in the HEX application. This 32-byte private key is then Bech32 encoded as an nsec per NIP19. + +'''identity=1, account=1''' + +INPUT: +* MASTER BIP32 ROOT KEY: xprv9s21ZrQH143K2LBWUUQRFXhucrQqBpKdRRxNVq2zBqsx8HVqFk2uYo8kmbaLLHRdqtQpUm98uKfu3vca1LqdGhUtyoFnCNkfmXRyPXLjbKb +* PATH: m/83696968'/128002'/1'/1' + +OUTPUT +* DERIVED ENTROPY=ff6eb0fcdf1ef87a2a06b0d7884d495b486d0faa210e9f80f23fd649d6e114d27873d12f3b57c469f684e4dc9f4abf10beeacb59b385fde8e33f1947bc5c6c17 +* DERIVED NSEC=nsec1lahtplxlrmu852sxkrtcsn2ftdyx6ra2yy8flq8j8ltyn4hpznfq23uvqz + +'''identity=1, account=2''' + +INPUT: +* MASTER BIP32 ROOT KEY: xprv9s21ZrQH143K2LBWUUQRFXhucrQqBpKdRRxNVq2zBqsx8HVqFk2uYo8kmbaLLHRdqtQpUm98uKfu3vca1LqdGhUtyoFnCNkfmXRyPXLjbKb +* PATH: m/83696968'/128002'/1'/2' + +OUTPUT +* DERIVED ENTROPY=917628689652288f6983c8a01db516d0697d5198dcf9de9010597f5e322fba6e435a731d85fbcc5768c06ff95ff34bf577f63f415cb170473659753acf14722d +* DERIVED NSEC=nsec1j9mzs6yk2g5g76vrezspmdgk6p5h65vcmnuaayqst9l4uv30hfhqje0jyh + +'''identity=2, account=1''' + +INPUT: +* MASTER BIP32 ROOT KEY: xprv9s21ZrQH143K2LBWUUQRFXhucrQqBpKdRRxNVq2zBqsx8HVqFk2uYo8kmbaLLHRdqtQpUm98uKfu3vca1LqdGhUtyoFnCNkfmXRyPXLjbKb +* PATH: m/83696968'/128002'/2'/1' + +OUTPUT +* DERIVED ENTROPY=fa2e784291b1fd347ba3624672e3090cb2cee34b8567180336e3aa290d02715b8f4b18f02f07cb2aa3023afd34735282cc6594370f47e6e1fa48d8d0dda93096 +* DERIVED NSEC=nsec1lgh8ss53k87ng7arvfr89ccfpjevac6ts4n3sqekuw4zjrgzw9dsq3uelh + ==Backwards Compatibility== This specification is not backwards compatible with any other existing specification. @@ -431,16 +473,20 @@ This specification relies on BIP32 but is agnostic to how the BIP32 root key is ==References== -BIP32, BIP39 +BIP32, BIP39, [https://github.com/nostr-protocol/nips/blob/master/01.md NIP01], [https://github.com/nostr-protocol/nips/blob/master/06.md NIP06], [https://github.com/nostr-protocol/nips/blob/master/19.md NIP19] ==Reference Implementations== * 1.3.0 Python 3.x library implementation: [https://github.com/akarve/bipsea] -* 1.1.0 Python 2.x library implementation: [https://github.com/ethankosakovsky/bip85] -* 1.0.0 JavaScript library implementation: [https://github.com/hoganri/bip85-js] ==Changelog== +===2.1.0 (2026-05-15)=== + +====Added==== + +* Nostr application 128002' + ===2.0.0 (2025-09-19)=== ====Fixed====