nips/README.md

91 lines
4.5 KiB
Markdown
Raw Normal View History

2022-05-01 10:48:57 +00:00
# NIPs
NIPs stand for **Nostr Implementation Possibilities**. They exist to document what MUST, what SHOULD and what MAY be implemented by [Nostr](https://github.com/fiatjaf/nostr)-compatible _relay_ and _client_ software.
2022-05-01 11:02:54 +00:00
- [NIP-01: Basic protocol flow description](01.md)
- [NIP-02: Contact List and Petnames](02.md)
- [NIP-03: OpenTimestamps Attestations for Events](03.md)
- [NIP-04: Encrypted Direct Message](04.md)
- [NIP-05: Mapping Nostr keys to DNS-based internet identifiers](05.md)
- [NIP-06: Basic key derivation from mnemonic seed phrase](06.md)
2022-05-06 23:54:45 +00:00
- [NIP-07: `window.nostr` capability for web browsers](07.md)
2022-05-01 11:02:54 +00:00
- [NIP-08: Handling Mentions](08.md)
- [NIP-09: Event Deletion](09.md)
2022-05-05 16:07:49 +00:00
- [NIP-10: Conventions for clients' use of `e` and `p` tags in text events.](10.md)
2022-05-01 11:02:54 +00:00
- [NIP-11: Relay Information Document](11.md)
- [NIP-12: Generic Tag Queries](12.md)
- [NIP-13: Proof of Work](13.md)
- [NIP-14: Subject tag in text events.](14.md)
- [NIP-15: End of Stored Events Notice](15.md)
- [NIP-16: Event Treatment](16.md)
2022-12-17 16:16:13 +00:00
- [NIP-19: bech32-encoded entities](19.md)
- [NIP-20: Command Results](20.md)
2023-01-24 13:23:00 +00:00
- [NIP-21: `nostr:` URL scheme](21.md)
2022-08-13 17:54:28 +00:00
- [NIP-22: Event created_at Limits](22.md)
- [NIP-25: Reactions](25.md)
2022-11-28 20:31:50 +00:00
- [NIP-26: Delegated Event Signing](26.md)
2022-09-11 00:52:09 +00:00
- [NIP-28: Public Chat](28.md)
2023-01-04 13:26:08 +00:00
- [NIP-33: Parameterized Replaceable Events](33.md)
- [NIP-36: Sensitive Content](36.md)
2022-12-17 16:16:13 +00:00
- [NIP-40: Expiration Timestamp](40.md)
- [NIP-42: Authentication of clients to relays](42.md)
2022-05-01 10:48:57 +00:00
## Event Kinds
2022-10-08 11:13:20 +00:00
| kind | description | NIP |
|-------------|-----------------------------|------------------------|
| 0 | Metadata | [1](01.md), [5](05.md) |
| 1 | Text | [1](01.md) |
| 2 | Recommend Relay | [1](01.md) |
| 3 | Contacts | [2](02.md) |
| 4 | Encrypted Direct Messages | [4](04.md) |
| 5 | Event Deletion | [9](09.md) |
| 7 | Reaction | [25](25.md) |
| 40 | Channel Creation | [28](28.md) |
| 41 | Channel Metadata | [28](28.md) |
| 42 | Channel Message | [28](28.md) |
| 43 | Channel Hide Message | [28](28.md) |
| 44 | Channel Mute User | [28](28.md) |
| 45-49 | Public Chat Reserved | [28](28.md) |
| 22242 | Client Authentication | [42](42.md) |
2022-10-08 11:13:20 +00:00
| 10000-19999 | Replaceable Events Reserved | [16](16.md) |
| 20000-29999 | Ephemeral Events Reserved | [16](16.md) |
| 30000-39999 | Param. Repl. Events Reserved| [33](33.md) |
## Message types
### Client to Relay
| type | description | NIP |
|-------|-----------------------------------------------------|-------------|
| EVENT | used to publish events | [1](01.md) |
| REQ | used to request events and subscribe to new updates | [1](01.md) |
| CLOSE | used to stop previous subscriptions | [1](01.md) |
| AUTH | used to send authentication events | [42](42.md) |
### Relay to Client
2022-10-08 11:13:20 +00:00
| type | description | NIP |
|--------|---------------------------------------------------------|-------------|
| EVENT | used to send events requested to clients | [1](01.md) |
| NOTICE | used to send human-readable messages to clients | [1](01.md) |
| EOSE | used to notify clients all stored events have been sent | [15](15.md) |
| OK | used to notify clients if an EVENT was successuful | [20](20.md) |
2023-01-07 22:53:42 +00:00
| AUTH | used to send authentication challenges | [42](42.md) |
Please update these lists when proposing NIPs introducing new event kinds.
2022-05-02 12:30:30 +00:00
2022-07-11 18:40:58 +00:00
When experimenting with kinds, keep in mind the classification introduced by [NIP-16](16.md).
2022-05-02 12:30:30 +00:00
## Criteria for acceptance of NIPs
2023-01-02 10:16:59 +00:00
1. They should be implemented in at least two clients and one relay -- when applicable.
2022-05-02 12:30:30 +00:00
2. They should make sense.
2022-11-29 14:41:46 +00:00
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.
2023-01-02 10:16:59 +00:00
4. There should be no more than one way of doing the same thing.
5. Other rules will be made up when necessary.
2022-05-02 12:30:30 +00:00
## License
All NIPs are public domain.