Compare commits

..

9 Commits

Author SHA1 Message Date
JeffG
247205a155 Replace NIP-EE with Marmot (#2154) 2025-12-11 11:54:19 -03:00
mattn
5d64d57fc5 fix typos (#2152) 2025-12-08 07:59:59 -03:00
Awiteb
a6db7917f2 Update NIP-EE header formatting (#2145) 2025-12-03 08:35:23 -08:00
Awiteb
97d3531c44 update NIP-18 headings (#2144) 2025-12-04 00:59:58 +09:00
KotlinGeekDev
f310614122 Complete removal of hashtag and url tags from bookmarks. (#2141) 2025-12-01 20:12:23 -05:00
Cody Tseng
a4dadca077 Improve generic reposts for replaceable events (#2132) 2025-12-01 17:07:37 -08:00
Valentino Giudice
2a33cceff6 Improve NIP-C0 (#2138) 2025-11-26 09:05:45 -03:00
Vitor Pamplona
844c6fe15c NIP-51: Removes hashtags and r tags from bookmarks (#2133) 2025-11-21 20:04:54 -03:00
Vitor Pamplona
e0a2980d7a NIP-59: Adds GiftWrap deletion requests (#2131) 2025-11-21 07:11:35 -03:00
7 changed files with 34 additions and 21 deletions

13
18.md
View File

@@ -21,9 +21,9 @@ reposted.
## Quote Reposts ## Quote Reposts
Mentions to [NIP-21](21.md) entities like `nevent`, `note` and `naddr` on any Mentions to [NIP-21](21.md) entities like `nevent`, `note` and `naddr` on any
event must be converted into `q` tags. The `q` tag ensures quote reposts are event must be converted into `q` tags. The `q` tag ensures quote reposts are
not pulled and included as replies in threads. It also allows you to easily not pulled and included as replies in threads. It also allows you to easily
pull and count all of the quotes for a post. The syntax follows pull and count all of the quotes for a post. The syntax follows
`["q", "<event-id> or <event-address>", "<relay-url>", "<pubkey-if-a-regular-event>"]` `["q", "<event-id> or <event-address>", "<relay-url>", "<pubkey-if-a-regular-event>"]`
@@ -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.

6
51.md
View File

@@ -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) |
@@ -39,8 +39,6 @@ For example, _mute list_ can contain the public keys of spammers and bad actors
| DM relays | 10050 | Where to receive [NIP-17](17.md) direct messages | `"relay"` (see [NIP-17](17.md)) | | DM relays | 10050 | Where to receive [NIP-17](17.md) direct messages | `"relay"` (see [NIP-17](17.md)) |
| Good wiki authors | 10101 | [NIP-54](54.md) user recommended wiki authors | `"p"` (pubkeys) | | Good wiki authors | 10101 | [NIP-54](54.md) user recommended wiki authors | `"p"` (pubkeys) |
| Good wiki relays | 10102 | [NIP-54](54.md) relays deemed to only host useful articles | `"relay"` (relay URLs) | | Good wiki relays | 10102 | [NIP-54](54.md) relays deemed to only host useful articles | `"relay"` (relay URLs) |
| Git authors | 10017 | code (people who produce NIP-34 events) follow list | `"p"` (pubkeys -- with optional relay hint and petname) |
| Git repositories | 10018 | [NIP-34](34.md) followed repositories | `"a"` (kind:30617 repository announcement event) |
### Sets ### Sets
@@ -54,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
View File

@@ -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
View File

@@ -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
View File

@@ -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
View File

@@ -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.

View File

@@ -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