mirror of
https://github.com/nostr-protocol/nips.git
synced 2024-11-09 22:09:06 -05:00
add NIP-19: bech32-encoding of stuff. (#57)
* add NIP-19: bech32-encoding of stuff. * add note prefix for kind-01 notes. * specify endianness. * 1 byte for T and L. * incorporate suggestions after feedback and discussions. * fix typos.
This commit is contained in:
parent
0c7b732867
commit
9e13889dee
43
19.md
Normal file
43
19.md
Normal file
|
@ -0,0 +1,43 @@
|
|||
NIP-19
|
||||
======
|
||||
|
||||
bech32-encoded entities
|
||||
-----------------------
|
||||
|
||||
`draft` `optional` `author:jb55` `author:fiatjaf` `author:Semisol`
|
||||
|
||||
This NIP specifies all bech32-encoded entities.
|
||||
|
||||
## Bare keys and ids
|
||||
|
||||
To prevent confusion and mixing between private keys, public keys and event ids, which are all 32 byte strings. bech32-(not-m) encoding with different prefixes can be used for each of these entities.
|
||||
|
||||
These are the possible bech32 prefixes:
|
||||
|
||||
- `npub`: public keys
|
||||
- `nsec`: private keys
|
||||
- `note`: note ids
|
||||
|
||||
Example: the hex public key `3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d` translates to `npub180cvv07tjdrrgpa0j7j7tmnyl2yr6yr7l8j4s3evf6u64th6gkwsyjh6w6`.
|
||||
|
||||
The bech32 encodings of keys and ids are not meant to be used inside the standard NIP-01 event formats or inside the filters, they're meant for human-friendlier display and input only. Clients should still accept keys in both hex and npubformat for now, and convert internally.
|
||||
|
||||
## Shareable identifiers with extra metadata
|
||||
|
||||
When sharing a profile or an event, an app may decide to include relay information and other metadata such that other apps can locate and display these entities more easily.
|
||||
|
||||
For these events, the contents are a binary-encoded list of `TLV` (type-length-value), with `T` and `L` being 1 byte each (`uint8`, i.e. a number in the range of 0-255), and `V` being a sequence of bytes of the size indicated by `L`.
|
||||
|
||||
These are the possible bech32 prefixes with `TLV`:
|
||||
|
||||
- `nprofile`: a nostr profile
|
||||
- `nevent`: a nostr event
|
||||
|
||||
These possible standardized `TLV` types are indicated here:
|
||||
|
||||
- `0`: `special`
|
||||
- depends on the bech32 prefix:
|
||||
- for `nprofile` it will be the 32 bytes of the profile public key
|
||||
- for `nevent` it will be the 32 bytes of the event id
|
||||
- `1`: `relay`
|
||||
- A relay in which the entity (profile or event) is more likely to be found, encoded as UTF-8. This may be included multiple times.
|
Loading…
Reference in New Issue
Block a user