-
Notifications
You must be signed in to change notification settings - Fork 6k
BIP85: add Nostr application #2126
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from all commits
d3512bd
371277d
1ce5ca8
cdf115e
819db6a
c1ba10e
1e8baf0
13f307b
1925e8a
6049828
e6df9db
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -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 | ||
| </pre> | ||
|
|
||
| ==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: <code>m/83696968'/128002'/{identity}'/{account_index}'</code> | ||
|
|
||
| Each <code>identity</code> is an independent, unlinkable Nostr key namespace, and each <code>account_index</code> is a distinct key within that identity. | ||
|
|
||
| Identity index <code>0'</code> and account index <code>0'</code> 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 <code>identity >= 1'</code> and <code>account_index >= 1'</code>. | ||
|
|
||
| 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 <code>nsec</code> 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] | ||
|
Comment on lines
-439
to
-440
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. No need to change this section. It's showing up as a net delete; we should leave it as is.
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think this was in reaction to my comment. See: #2126 (comment)
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Sure but it drops two lines too many, not just the two new ones (which would show up as no diff) but two existing ones.
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Right, but why are there three reference implementations in the first place? Unless they are references for different aspects of BIP85, shouldn’t there just be one? |
||
|
|
||
| ==Changelog== | ||
|
|
||
| ===2.1.0 (2026-05-15)=== | ||
|
|
||
| ====Added==== | ||
|
|
||
| * Nostr application 128002' | ||
|
|
||
| ===2.0.0 (2025-09-19)=== | ||
|
|
||
| ====Fixed==== | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.