upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--19.md43
1 files changed, 43 insertions, 0 deletions
diff --git a/19.md b/19.md
new file mode 100644
index 0000000..9235196
--- /dev/null
+++ b/19.md
@@ -0,0 +1,43 @@
1NIP-19
2======
3
4bech32-encoded entities
5-----------------------
6
7`draft` `optional` `author:jb55` `author:fiatjaf` `author:Semisol`
8
9This NIP specifies all bech32-encoded entities.
10
11## Bare keys and ids
12
13To 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.
14
15These are the possible bech32 prefixes:
16
17 - `npub`: public keys
18 - `nsec`: private keys
19 - `note`: note ids
20
21Example: the hex public key `3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d` translates to `npub180cvv07tjdrrgpa0j7j7tmnyl2yr6yr7l8j4s3evf6u64th6gkwsyjh6w6`.
22
23The 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.
24
25## Shareable identifiers with extra metadata
26
27When 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.
28
29For 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`.
30
31These are the possible bech32 prefixes with `TLV`:
32
33 - `nprofile`: a nostr profile
34 - `nevent`: a nostr event
35
36These possible standardized `TLV` types are indicated here:
37
38- `0`: `special`
39 - depends on the bech32 prefix:
40 - for `nprofile` it will be the 32 bytes of the profile public key
41 - for `nevent` it will be the 32 bytes of the event id
42- `1`: `relay`
43 - 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.