Nostr Implementation Possibilities
Go to file
2023-03-27 19:40:08 +03:00
01.md remove tiny duplicate text 2023-03-16 20:54:00 -03:00
02.md Update 02.md 2023-03-06 16:37:42 -03:00
03.md Several NIP examples (3, 11) weren't quoting the field keys (JSON keys must be quoted) 2023-01-18 09:42:32 -03:00
04.md Added NIP-04 metadata leak warning 2023-03-23 15:40:41 -03:00
05.md Revert "Merge pull request #227 from erikwestra/nip-05-security-proposal" 2023-02-09 16:59:50 -05:00
06.md migrate nips from main nostr repo. 2022-05-01 07:48:57 -03:00
07.md add flamingo extension. 2023-03-07 07:26:41 -03:00
08.md refactor NIP-27 for simplicity -- but also include very verbose considerations and an example. 2023-03-25 21:59:01 -03:00
09.md fix erroneous reference to pubkey 2023-01-15 17:53:34 -03:00
10.md relay hint language update (#291) 2023-02-23 16:20:10 -03:00
11.md Add cameri as author 2023-03-19 16:22:45 -03:00
12.md change NIP-12 so only single-letter tags are indexed. 2022-07-10 15:33:07 -03:00
13.md Minor grammar fixes 2022-12-17 22:28:49 -03:00
14.md Nip-14 for subject tag 2022-05-24 07:33:11 -05:00
15.md finalize some NIPs we will not going to change anymore. 2022-11-22 14:52:34 -03:00
16.md events cannot really be replaced 2023-03-26 13:52:08 -03:00
19.md mention possibility of pubkey on nevent. 2023-03-15 08:06:33 -03:00
20.md NIP-20: fix a typo 2023-03-02 21:36:15 -03:00
21.md add NIP-21, nostr: url scheme. 2023-01-25 13:08:20 -03:00
22.md NIP-22: use nip-20; minor updates 2023-01-07 17:53:24 -03:00
23.md Fix a typo in link to NIP-33 2023-03-26 07:14:43 -03:00
25.md NIP25: allow for emojis to be considered dislikes 2023-01-11 17:47:26 -03:00
26.md Minor change to make delegation token/string naming consistent 2023-02-14 14:33:50 -03:00
27.md Fix typo in NIP-27 2023-03-26 15:44:12 -03:00
28.md make explicit that root event tag is compulsory 2023-03-08 07:31:32 -03:00
33.md events cannot really be replaced 2023-03-26 13:52:08 -03:00
36.md NIP-36 - sensitive content / content-warning (#82) 2022-12-01 20:41:15 -03:00
39.md NIP-39: minor readability changes 2023-03-13 04:43:17 +03:00
40.md Update 40.md 2022-12-16 12:03:07 +01:00
42.md Update 42.md 2023-01-11 00:05:15 -03:00
46.md Update 46.md 2023-03-15 19:40:40 -03:00
50.md Fix NIP-50 typo 2023-02-01 07:06:25 -03:00
51.md NIP-51: remove self-referential link 2023-03-13 07:44:00 +03:00
56.md NIP-56: Reporting (#205) 2023-02-07 18:15:38 -03:00
57.md mention that the zap pubkey must be hex. 2023-03-23 17:12:29 -03:00
58.md docs: add nip-58 badge event and profile badges (#229) 2023-02-22 22:11:55 -03:00
65.md More explicit explanation of the meaning of read and write relays 2023-02-19 17:56:30 -03:00
78.md NIP-78: app-specific data. 2023-03-01 10:03:25 -03:00
README.md Add event kind ranges table 2023-03-27 19:40:08 +03:00

NIPs

NIPs stand for Nostr Implementation Possibilities. They exist to document what may be implemented by Nostr-compatible relay and client software.

Event Kinds

kind description NIP
0 Metadata 1
1 Short Text Note 1
2 Recommend Relay 1
3 Contacts 2
4 Encrypted Direct Messages 4
5 Event Deletion 9
7 Reaction 25
8 Badge Award 58
40 Channel Creation 28
41 Channel Metadata 28
42 Channel Message 28
43 Channel Hide Message 28
44 Channel Mute User 28
1984 Reporting 56
9734 Zap Request 57
9735 Zap 57
10000 Mute List 51
10001 Pin List 51
10002 Relay List Metadata 65
22242 Client Authentication 42
24133 Nostr Connect 46
30000 Categorized People List 51
30001 Categorized Bookmark List 51
30008 Profile Badges 58
30009 Badge Definition 58
30023 Long-form Content 23
30078 Application-specific Data 78

Event Kind Ranges

kind description NIP
1000-9999 Regular Events 16
10000-19999 Replaceable Events 16
20000-29999 Ephemeral Events 16
30000-39999 Parameterized Replaceable Events 33

Message Types

Client to Relay

type description NIP
EVENT used to publish events 1
REQ used to request events and subscribe to new updates 1
CLOSE used to stop previous subscriptions 1
AUTH used to send authentication events 42

Relay to Client

type description NIP
EVENT used to send events requested to clients 1
NOTICE used to send human-readable messages to clients 1
EOSE used to notify clients all stored events have been sent 15
OK used to notify clients if an EVENT was successful 20
AUTH used to send authentication challenges 42

Please update these lists when proposing NIPs introducing new event kinds.

When experimenting with kinds, keep in mind the classification introduced by NIP-16.

Standardized Tags

name value other parameters NIP
e event id (hex) relay URL, marker 1, 10
p pubkey (hex) relay URL 1
a coordinates to an event relay URL 33, 23
r a reference (URL, etc) 12
t hashtag 12
g geohash 12
nonce random 13
subject subject 14
d identifier 33
expiration unix timestamp (string) 40

Criteria for acceptance of NIPs

  1. They should be implemented in at least two clients and one relay -- when applicable.
  2. They should make sense.
  3. They should be optional and backwards-compatible: care must be taken such that clients and relays that choose to not implement them do not stop working when interacting with the ones that choose to.
  4. There should be no more than one way of doing the same thing.
  5. Other rules will be made up when necessary.

License

All NIPs are public domain.