mirror of
https://github.com/nostr-protocol/nips.git
synced 2025-12-11 17:48:50 +00:00
Compare commits
9 Commits
nip34-thin
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
247205a155 | ||
|
|
5d64d57fc5 | ||
|
|
a6db7917f2 | ||
|
|
97d3531c44 | ||
|
|
f310614122 | ||
|
|
a4dadca077 | ||
|
|
2a33cceff6 | ||
|
|
844c6fe15c | ||
|
|
e0a2980d7a |
7
18.md
7
18.md
@@ -36,3 +36,10 @@ as a "generic repost", that can include any kind of event inside other than
|
|||||||
|
|
||||||
`kind 16` reposts SHOULD contain a `"k"` tag with the stringified kind number
|
`kind 16` reposts SHOULD contain a `"k"` tag with the stringified kind number
|
||||||
of the reposted event as its value.
|
of the reposted event as its value.
|
||||||
|
|
||||||
|
When reposting a replaceable event, the repost SHOULD include an `"a"` tag with
|
||||||
|
the event coordinate (`kind:pubkey:d-tag`) of the reposted event.
|
||||||
|
|
||||||
|
If the `"a"` tag is not present, it indicates that a specific version of a replaceable
|
||||||
|
event is being reposted, in which case the `content` field must contain the full
|
||||||
|
JSON string of the reposted event.
|
||||||
|
|||||||
4
51.md
4
51.md
@@ -26,7 +26,7 @@ For example, _mute list_ can contain the public keys of spammers and bad actors
|
|||||||
| Mute list | 10000 | things the user doesn't want to see in their feeds | `"p"` (pubkeys), `"t"` (hashtags), `"word"` (lowercase string), `"e"` (threads) |
|
| Mute list | 10000 | things the user doesn't want to see in their feeds | `"p"` (pubkeys), `"t"` (hashtags), `"word"` (lowercase string), `"e"` (threads) |
|
||||||
| Pinned notes | 10001 | events the user intends to showcase in their profile page | `"e"` (kind:1 notes) |
|
| Pinned notes | 10001 | events the user intends to showcase in their profile page | `"e"` (kind:1 notes) |
|
||||||
| Read/write relays | 10002 | where a user publishes to and where they expect mentions | see [NIP-65](65.md) |
|
| Read/write relays | 10002 | where a user publishes to and where they expect mentions | see [NIP-65](65.md) |
|
||||||
| Bookmarks | 10003 | uncategorized, "global" list of things a user wants to save | `"e"` (kind:1 notes), `"a"` (kind:30023 articles), `"t"` (hashtags), `"r"` (URLs) |
|
| Bookmarks | 10003 | uncategorized, "global" list of things a user wants to save | `"e"` (kind:1 notes), `"a"` (kind:30023 articles) |
|
||||||
| Communities | 10004 | [NIP-72](72.md) communities the user belongs to | `"a"` (kind:34550 community definitions) |
|
| Communities | 10004 | [NIP-72](72.md) communities the user belongs to | `"a"` (kind:34550 community definitions) |
|
||||||
| Public chats | 10005 | [NIP-28](28.md) chat channels the user is in | `"e"` (kind:40 channel definitions) |
|
| Public chats | 10005 | [NIP-28](28.md) chat channels the user is in | `"e"` (kind:40 channel definitions) |
|
||||||
| Blocked relays | 10006 | relays clients should never connect to | `"relay"` (relay URLs) |
|
| Blocked relays | 10006 | relays clients should never connect to | `"relay"` (relay URLs) |
|
||||||
@@ -52,7 +52,7 @@ Aside from their main identifier, the `"d"` tag, sets can optionally have a `"ti
|
|||||||
| --- | --- | --- | --- |
|
| --- | --- | --- | --- |
|
||||||
| Follow sets | 30000 | categorized groups of users a client may choose to check out in different circumstances | `"p"` (pubkeys) |
|
| Follow sets | 30000 | categorized groups of users a client may choose to check out in different circumstances | `"p"` (pubkeys) |
|
||||||
| Relay sets | 30002 | user-defined relay groups the user can easily pick and choose from during various operations | `"relay"` (relay URLs) |
|
| Relay sets | 30002 | user-defined relay groups the user can easily pick and choose from during various operations | `"relay"` (relay URLs) |
|
||||||
| Bookmark sets | 30003 | user-defined bookmarks categories , for when bookmarks must be in labeled separate groups | `"e"` (kind:1 notes), `"a"` (kind:30023 articles), `"t"` (hashtags), `"r"` (URLs) |
|
| Bookmark sets | 30003 | user-defined bookmarks categories , for when bookmarks must be in labeled separate groups | `"e"` (kind:1 notes), `"a"` (kind:30023 articles) |
|
||||||
| Curation sets | 30004 | groups of articles picked by users as interesting and/or belonging to the same category | `"a"` (kind:30023 articles), `"e"` (kind:1 notes) |
|
| Curation sets | 30004 | groups of articles picked by users as interesting and/or belonging to the same category | `"a"` (kind:30023 articles), `"e"` (kind:1 notes) |
|
||||||
| Curation sets | 30005 | groups of videos picked by users as interesting and/or belonging to the same category | `"e"` (kind:21 videos) |
|
| Curation sets | 30005 | groups of videos picked by users as interesting and/or belonging to the same category | `"e"` (kind:21 videos) |
|
||||||
| Kind mute sets | 30007 | mute pubkeys by kinds<br>`"d"` tag MUST be the kind string | `"p"` (pubkeys) |
|
| Kind mute sets | 30007 | mute pubkeys by kinds<br>`"d"` tag MUST be the kind string | `"p"` (pubkeys) |
|
||||||
|
|||||||
2
58.md
2
58.md
@@ -11,7 +11,7 @@ user profiles:
|
|||||||
|
|
||||||
1. A "Badge Definition" event is defined as an addressable event with kind `30009` having a `d` tag with a value that uniquely identifies the badge (e.g. `bravery`) published by the badge issuer. Badge definitions can be updated.
|
1. A "Badge Definition" event is defined as an addressable event with kind `30009` having a `d` tag with a value that uniquely identifies the badge (e.g. `bravery`) published by the badge issuer. Badge definitions can be updated.
|
||||||
|
|
||||||
2. A "Badge Award" event is a kind `8` event with a single `a` tag referencing a "Badge Definition" event and one or more `p` tags, one for each pubkey the badge issuer wishes to award. Awarded badges are immutable and non-transferrable.
|
2. A "Badge Award" event is a kind `8` event with a single `a` tag referencing a "Badge Definition" event and one or more `p` tags, one for each pubkey the badge issuer wishes to award. Awarded badges are immutable and non-transferable.
|
||||||
|
|
||||||
3. A "Profile Badges" event is defined as an _addressable event_ with kind `30008` with a `d` tag with the value `profile_badges`.
|
3. A "Profile Badges" event is defined as an _addressable event_ with kind `30008` with a `d` tag with the value `profile_badges`.
|
||||||
Profile badges contain an ordered list of pairs of `a` and `e` tags referencing a `Badge Definition` and a `Badge Award` for each badge to be displayed.
|
Profile badges contain an ordered list of pairs of `a` and `e` tags referencing a `Badge Definition` and a `Badge Award` for each badge to be displayed.
|
||||||
|
|||||||
2
59.md
2
59.md
@@ -99,6 +99,8 @@ AUTH, and refuse to serve wrapped events to non-recipients.
|
|||||||
|
|
||||||
When adding expiration tags to both `seal` and `gift wrap` layers, implementations SHOULD use independent random timestamps for each layer. Using different `created_at` values increases timing variance and helps protect against metadata correlation attacks.
|
When adding expiration tags to both `seal` and `gift wrap` layers, implementations SHOULD use independent random timestamps for each layer. Using different `created_at` values increases timing variance and helps protect against metadata correlation attacks.
|
||||||
|
|
||||||
|
Since signing keys are random, relays SHOULD delete `kind 1059` events whose p-tag matches the signer of
|
||||||
|
[NIP-09](09.md) deletions or [NIP-62](62.md) vanish requests.
|
||||||
|
|
||||||
## An Example
|
## An Example
|
||||||
|
|
||||||
|
|||||||
4
C0.md
4
C0.md
@@ -23,9 +23,9 @@ The `.content` field contains the actual code snippet text.
|
|||||||
- `extension` - File extension (without the dot). Examples: "js", "py", "rs"
|
- `extension` - File extension (without the dot). Examples: "js", "py", "rs"
|
||||||
- `description` - Brief description of what the code does
|
- `description` - Brief description of what the code does
|
||||||
- `runtime` - Runtime or environment specification (e.g., "node v18.15.0", "python 3.11")
|
- `runtime` - Runtime or environment specification (e.g., "node v18.15.0", "python 3.11")
|
||||||
- `license` - License under which the code is shared (e.g., "MIT", "GPL-3.0", "Apache-2.0")
|
- `license` - License under which the code (along with any related data contained within the event, when available, such as the description) is shared. This MUST be a standard [SPDX](https://spdx.org/licenses/) short identifier (e.g., "MIT", "GPL-3.0-or-later", "Apache-2.0") when available. An additional parameter containing a reference to the actual text of the license MAY be provided. This tag can be repeated, to indicate multi-licensing, allowing recipients to use the code under any license of choosing among the referenced ones
|
||||||
- `dep` - Dependency required for the code to run (can be repeated)
|
- `dep` - Dependency required for the code to run (can be repeated)
|
||||||
- `repo` - Reference to a repository where this code originates
|
- `repo` - Reference to a repository where this code originates. This MUST be a either standard URL or, alternatively, the address of a [NIP-34](34.md) Git repository announcement event in the form `"30617:<32-bytes hex a pubkey>:<d tag value>"`. If a repository announcement is referenced, a recommended relay URL where to find the event should be provided as an additional parameter
|
||||||
|
|
||||||
## Format
|
## Format
|
||||||
|
|
||||||
|
|||||||
10
EE.md
10
EE.md
@@ -1,8 +1,12 @@
|
|||||||
# NIP-EE
|
> __Warning__ `unrecommended`: superseded by the [Marmot Protocol](https://github.com/marmot-protocol/marmot)
|
||||||
|
|
||||||
## E2EE Messaging using the Messaging Layer Security (MLS) Protocol
|
NIP-EE
|
||||||
|
======
|
||||||
|
|
||||||
`draft` `optional`
|
E2EE Messaging using the Messaging Layer Security (MLS) Protocol
|
||||||
|
----------------------------------------------------------------
|
||||||
|
|
||||||
|
`final` `unrecommended` `optional`
|
||||||
|
|
||||||
This NIP standardizes how to use the [MLS Protocol](https://www.rfc-editor.org/rfc/rfc9420.html) with Nostr for efficient and E2EE (end-to-end encrypted) direct and group messaging.
|
This NIP standardizes how to use the [MLS Protocol](https://www.rfc-editor.org/rfc/rfc9420.html) with Nostr for efficient and E2EE (end-to-end encrypted) direct and group messaging.
|
||||||
|
|
||||||
|
|||||||
18
README.md
18
README.md
@@ -108,7 +108,7 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos
|
|||||||
- [NIP-BE: Nostr BLE Communications Protocol](BE.md)
|
- [NIP-BE: Nostr BLE Communications Protocol](BE.md)
|
||||||
- [NIP-C0: Code Snippets](C0.md)
|
- [NIP-C0: Code Snippets](C0.md)
|
||||||
- [NIP-C7: Chats](C7.md)
|
- [NIP-C7: Chats](C7.md)
|
||||||
- [NIP-EE: E2EE Messaging using MLS Protocol](EE.md)
|
- [NIP-EE: E2EE Messaging using MLS Protocol](EE.md) --- **unrecommended**: superseded by the [Marmot Protocol](https://github.com/marmot-protocol/marmot)
|
||||||
|
|
||||||
## Event Kinds
|
## Event Kinds
|
||||||
| kind | description | NIP |
|
| kind | description | NIP |
|
||||||
@@ -135,9 +135,9 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos
|
|||||||
| `21` | Video Event | [71](71.md) |
|
| `21` | Video Event | [71](71.md) |
|
||||||
| `22` | Short-form Portrait Video Event | [71](71.md) |
|
| `22` | Short-form Portrait Video Event | [71](71.md) |
|
||||||
| `30` | internal reference | [NKBIP-03] |
|
| `30` | internal reference | [NKBIP-03] |
|
||||||
| `31` | external web reference | [NKBIP-03] |
|
| `31` | external web reference | [NKBIP-03] |
|
||||||
| `32` | hardcopy reference | [NKBIP-03] |
|
| `32` | hardcopy reference | [NKBIP-03] |
|
||||||
| `33` | prompt reference | [NKBIP-03] |
|
| `33` | prompt reference | [NKBIP-03] |
|
||||||
| `40` | Channel Creation | [28](28.md) |
|
| `40` | Channel Creation | [28](28.md) |
|
||||||
| `41` | Channel Metadata | [28](28.md) |
|
| `41` | Channel Metadata | [28](28.md) |
|
||||||
| `42` | Channel Message | [28](28.md) |
|
| `42` | Channel Message | [28](28.md) |
|
||||||
@@ -145,9 +145,9 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos
|
|||||||
| `44` | Channel Mute User | [28](28.md) |
|
| `44` | Channel Mute User | [28](28.md) |
|
||||||
| `62` | Request to Vanish | [62](62.md) |
|
| `62` | Request to Vanish | [62](62.md) |
|
||||||
| `64` | Chess (PGN) | [64](64.md) |
|
| `64` | Chess (PGN) | [64](64.md) |
|
||||||
| `443` | KeyPackage | [EE](EE.md) |
|
| `443` | KeyPackage | [Marmot](marmot) |
|
||||||
| `444` | Welcome Message | [EE](EE.md) |
|
| `444` | Welcome Message | [Marmot](marmot) |
|
||||||
| `445` | Group Event | [EE](EE.md) |
|
| `445` | Group Event | [Marmot](marmot) |
|
||||||
| `818` | Merge Requests | [54](54.md) |
|
| `818` | Merge Requests | [54](54.md) |
|
||||||
| `1018` | Poll Response | [88](88.md) |
|
| `1018` | Poll Response | [88](88.md) |
|
||||||
| `1021` | Bid | [15](15.md) |
|
| `1021` | Bid | [15](15.md) |
|
||||||
@@ -209,7 +209,7 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos
|
|||||||
| `10020` | Media follows | [51](51.md) |
|
| `10020` | Media follows | [51](51.md) |
|
||||||
| `10030` | User emoji list | [51](51.md) |
|
| `10030` | User emoji list | [51](51.md) |
|
||||||
| `10050` | Relay list to receive DMs | [51](51.md), [17](17.md) |
|
| `10050` | Relay list to receive DMs | [51](51.md), [17](17.md) |
|
||||||
| `10051` | KeyPackage Relays List | [EE](EE.md) |
|
| `10051` | KeyPackage Relays List | [Marmot](marmot) |
|
||||||
| `10063` | User server list | [Blossom][blossom] |
|
| `10063` | User server list | [Blossom][blossom] |
|
||||||
| `10096` | File storage server list | [96](96.md) (deprecated) |
|
| `10096` | File storage server list | [96](96.md) (deprecated) |
|
||||||
| `10166` | Relay Monitor Announcement | [66](66.md) |
|
| `10166` | Relay Monitor Announcement | [66](66.md) |
|
||||||
@@ -296,6 +296,8 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos
|
|||||||
[Tidal-nostr]: https://wikistr.com/tidal-nostr
|
[Tidal-nostr]: https://wikistr.com/tidal-nostr
|
||||||
[geocaching]: https://nostrhub.io/naddr1qvzqqqrcvypzppscgyy746fhmrt0nq955z6xmf80pkvrat0yq0hpknqtd00z8z68qqgkwet0vdskx6rfdenj6etkv4h8guc6gs5y5
|
[geocaching]: https://nostrhub.io/naddr1qvzqqqrcvypzppscgyy746fhmrt0nq955z6xmf80pkvrat0yq0hpknqtd00z8z68qqgkwet0vdskx6rfdenj6etkv4h8guc6gs5y5
|
||||||
[nostr-epoxy]: https://github.com/Origami74/nostr-epoxy-reverse-proxy
|
[nostr-epoxy]: https://github.com/Origami74/nostr-epoxy-reverse-proxy
|
||||||
|
[marmot]: https://github.com/marmot-protocol/marmot
|
||||||
|
|
||||||
|
|
||||||
## Message types
|
## Message types
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user