mirror of
https://github.com/nostr-protocol/nips.git
synced 2024-11-13 23:39:08 -05:00
9e13889dee
* 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.
44 lines
1.9 KiB
Markdown
44 lines
1.9 KiB
Markdown
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.
|