From 2a8597b32dccd9b57f4a698b479e808a0625f69e Mon Sep 17 00:00:00 2001 From: Arman The Parman <77603167+ArmanTheParman@users.noreply.github.com> Date: Sat, 15 Jun 2024 19:34:47 +1000 Subject: Update 01.md Small grammatical change for easier reading --- 01.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to '01.md') diff --git a/01.md b/01.md index b51fdf0..cdd8b90 100644 --- a/01.md +++ b/01.md @@ -43,7 +43,7 @@ To obtain the `event.id`, we `sha256` the serialized event. The serialization is ``` To prevent implementation differences from creating a different event ID for the same event, the following rules MUST be followed while serializing: -- No whitespace, line breaks or other unnecessary formatting should be included in the output JSON. +- Whitespace, line breaks or other unnecessary formatting should not be included in the output JSON. - No characters except the following should be escaped, and instead should be included verbatim: - A line break, `0x0A`, as `\n` - A double quote, `0x22`, as `\"` -- cgit v1.2.3 From a52d170c8cc5c99cf658d184922dcfe4e8177660 Mon Sep 17 00:00:00 2001 From: Arman The Parman <77603167+ArmanTheParman@users.noreply.github.com> Date: Sun, 16 Jun 2024 19:20:00 +1000 Subject: Update 01.md This is not a correction but a suggestion... When I first read it, it wasn't clear that metadata is specifically for a user and not inclusive of other things (eg not metadata about a photo). Adding this one extra word here would have helped me understand that immediately. --- 01.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to '01.md') diff --git a/01.md b/01.md index cdd8b90..d47c261 100644 --- a/01.md +++ b/01.md @@ -87,7 +87,7 @@ As a convention, all single-letter (only english alphabet letters: a-z, A-Z) key Kinds specify how clients should interpret the meaning of each event and the other fields of each event (e.g. an `"r"` tag may have a meaning in an event of kind 1 and an entirely different meaning in an event of kind 10002). Each NIP may define the meaning of a set of kinds that weren't defined elsewhere. This NIP defines two basic kinds: -- `0`: **metadata**: the `content` is set to a stringified JSON object `{name: , about: , picture: }` describing the user who created the event. [Extra metadata fields](24.md#kind-0) may be set. A relay may delete older events once it gets a new one for the same pubkey. +- `0`: **user's metadata**: the `content` is set to a stringified JSON object `{name: , about: , picture: }` describing the user who created the event. [Extra metadata fields](24.md#kind-0) may be set. A relay may delete older events once it gets a new one for the same pubkey. - `1`: **text note**: the `content` is set to the **plaintext** content of a note (anything the user wants to say). Content that must be parsed, such as Markdown and HTML, should not be used. Clients should also not parse content as those. And also a convention for kind ranges that allow for easier experimentation and flexibility of relay implementation: -- cgit v1.2.3 From c576737ba42772a561c6ebfd9faf0baae6d19b17 Mon Sep 17 00:00:00 2001 From: Arman The Parman <77603167+ArmanTheParman@users.noreply.github.com> Date: Mon, 17 Jun 2024 05:33:49 +1000 Subject: parentheses > commas (#1308) * Update 01.md A few small changes that can potentially help a broader audience (non-developers) follow the meaning. * monospace hex Co-authored-by: Asai Toshiya --------- Co-authored-by: fiatjaf_ Co-authored-by: Asai Toshiya --- 01.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to '01.md') diff --git a/01.md b/01.md index cdd8b90..aa7fda2 100644 --- a/01.md +++ b/01.md @@ -43,16 +43,16 @@ To obtain the `event.id`, we `sha256` the serialized event. The serialization is ``` To prevent implementation differences from creating a different event ID for the same event, the following rules MUST be followed while serializing: -- Whitespace, line breaks or other unnecessary formatting should not be included in the output JSON. -- No characters except the following should be escaped, and instead should be included verbatim: - - A line break, `0x0A`, as `\n` - - A double quote, `0x22`, as `\"` - - A backslash, `0x5C`, as `\\` - - A carriage return, `0x0D`, as `\r` - - A tab character, `0x09`, as `\t` - - A backspace, `0x08`, as `\b` - - A form feed, `0x0C`, as `\f` - UTF-8 should be used for encoding. +- Whitespace, line breaks or other unnecessary formatting should not be included in the output JSON. +- The following characters in the content field must be escaped as shown, and all other characters must be included verbatim: + - A line break (`0x0A`), use `\n` + - A double quote (`0x22`), use `\"` + - A backslash (`0x5C`), use `\\` + - A carriage return (`0x0D`), use `\r` + - A tab character (`0x09`), use `\t` + - A backspace, (`0x08`), use `\b` + - A form feed, (`0x0C`), use `\f` ### Tags -- cgit v1.2.3 From 1728f93d17fe399fa6e0911e7bb69d2e159ca572 Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Mon, 17 Jun 2024 12:38:57 -0300 Subject: "user metadata" and fix table on readme. --- 01.md | 2 +- 05.md | 2 +- README.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) (limited to '01.md') diff --git a/01.md b/01.md index 94db77a..60d9785 100644 --- a/01.md +++ b/01.md @@ -87,7 +87,7 @@ As a convention, all single-letter (only english alphabet letters: a-z, A-Z) key Kinds specify how clients should interpret the meaning of each event and the other fields of each event (e.g. an `"r"` tag may have a meaning in an event of kind 1 and an entirely different meaning in an event of kind 10002). Each NIP may define the meaning of a set of kinds that weren't defined elsewhere. This NIP defines two basic kinds: -- `0`: **user's metadata**: the `content` is set to a stringified JSON object `{name: , about: , picture: }` describing the user who created the event. [Extra metadata fields](24.md#kind-0) may be set. A relay may delete older events once it gets a new one for the same pubkey. +- `0`: **user metadata**: the `content` is set to a stringified JSON object `{name: , about: , picture: }` describing the user who created the event. [Extra metadata fields](24.md#kind-0) may be set. A relay may delete older events once it gets a new one for the same pubkey. - `1`: **text note**: the `content` is set to the **plaintext** content of a note (anything the user wants to say). Content that must be parsed, such as Markdown and HTML, should not be used. Clients should also not parse content as those. And also a convention for kind ranges that allow for easier experimentation and flexibility of relay implementation: diff --git a/05.md b/05.md index f3a051c..a1d488d 100644 --- a/05.md +++ b/05.md @@ -6,7 +6,7 @@ Mapping Nostr keys to DNS-based internet identifiers `final` `optional` -On events of kind `0` (`user's metadata`) one can specify the key `"nip05"` with an [internet identifier](https://datatracker.ietf.org/doc/html/rfc5322#section-3.4.1) (an email-like address) as the value. Although there is a link to a very liberal "internet identifier" specification above, NIP-05 assumes the `` part will be restricted to the characters `a-z0-9-_.`, case-insensitive. +On events of kind `0` (`user metadata`) one can specify the key `"nip05"` with an [internet identifier](https://datatracker.ietf.org/doc/html/rfc5322#section-3.4.1) (an email-like address) as the value. Although there is a link to a very liberal "internet identifier" specification above, NIP-05 assumes the `` part will be restricted to the characters `a-z0-9-_.`, case-insensitive. Upon seeing that, the client splits the identifier into `` and `` and use these values to make a GET request to `https:///.well-known/nostr.json?name=`. diff --git a/README.md b/README.md index 067c436..02773a5 100644 --- a/README.md +++ b/README.md @@ -90,7 +90,7 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos ## Event Kinds | kind | description | NIP | | ------------- | -------------------------- | ------------------------ | -| `0` | User's Metadata | [01](01.md) | +| `0` | User Metadata | [01](01.md) | | `1` | Short Text Note | [01](01.md) | | `2` | Recommend Relay | 01 (deprecated) | | `3` | Follows | [02](02.md) | -- cgit v1.2.3 From 4aa18e329a8858ed46727b970c28652c5a0f7b43 Mon Sep 17 00:00:00 2001 From: Arjen Stens <18398758+ArjenStens@users.noreply.github.com> Date: Sun, 23 Jun 2024 02:40:57 +0200 Subject: Clarify which kinds have lifetime of 'regular' (#1315) * Clarify which kinds have lifetime of 'regular' * Missed space * Document kind 41 as replaceable * Revert "Document kind 41 as replaceable" This reverts commit eead2f5a749cfee6de131944e0e73350759e28b4. --- 01.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to '01.md') diff --git a/01.md b/01.md index 60d9785..c11a095 100644 --- a/01.md +++ b/01.md @@ -92,7 +92,7 @@ Kinds specify how clients should interpret the meaning of each event and the oth And also a convention for kind ranges that allow for easier experimentation and flexibility of relay implementation: -- for kind `n` such that `1000 <= n < 10000`, events are **regular**, which means they're all expected to be stored by relays. +- for kind `n` such that `1000 <= n < 10000 || 4 <= n < 45 || n == 1 || n == 2`, events are **regular**, which means they're all expected to be stored by relays. - for kind `n` such that `10000 <= n < 20000 || n == 0 || n == 3`, events are **replaceable**, which means that, for each combination of `pubkey` and `kind`, only the latest event MUST be stored by relays, older versions MAY be discarded. - for kind `n` such that `20000 <= n < 30000`, events are **ephemeral**, which means they are not expected to be stored by relays. - for kind `n` such that `30000 <= n < 40000`, events are **parameterized replaceable**, which means that, for each combination of `pubkey`, `kind` and the `d` tag's first value, only the latest event MUST be stored by relays, older versions MAY be discarded. -- cgit v1.2.3 From f6b08429a270fbae71f0ae1689a5adf8fa91c543 Mon Sep 17 00:00:00 2001 From: Jon Staab Date: Thu, 27 Jun 2024 17:00:16 -0700 Subject: Clarify what happens when a duplicate subscription is sent, remove CLOSED on duplicate subscription --- 01.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to '01.md') diff --git a/01.md b/01.md index c11a095..d298046 100644 --- a/01.md +++ b/01.md @@ -131,7 +131,7 @@ Clients can send 3 types of messages, which must be JSON arrays, according to th } ``` -Upon receiving a `REQ` message, the relay SHOULD query its internal database and return events that match the filter, then store that filter and send again all future events it receives to that same websocket until the websocket is closed. The `CLOSE` event is received with the same `` or a new `REQ` is sent using the same ``, in which case relay MUST overwrite the previous subscription. +Upon receiving a `REQ` message, the relay SHOULD return events that match the filter. Any new events it receives SHOULD be sent to that same websocket until the connection is closed, a `CLOSE` event is received with the same ``, or a new `REQ` is sent using the same `` (in which case a new subscription is created, replacing the old one). Filter attributes containing lists (`ids`, `authors`, `kinds` and tag filters like `#e`) are JSON arrays with one or more values. At least one of the arrays' values must match the relevant field in an event for the condition to be considered a match. For scalar event attributes such as `authors` and `kind`, the attribute from the event must be contained in the filter list. In the case of tag attributes such as `#e`, for which an event may have multiple values, the event and filter condition values must have at least one item in common. @@ -169,7 +169,6 @@ This NIP defines no rules for how `NOTICE` messages should be sent or treated. * `["OK", "b1a649ebe8...", false, "pow: difficulty 26 is less than 30"]` * `["OK", "b1a649ebe8...", false, "error: could not connect to the database"]` - `CLOSED` messages MUST be sent in response to a `REQ` when the relay refuses to fulfill it. It can also be sent when a relay decides to kill a subscription on its side before a client has disconnected or sent a `CLOSE`. This message uses the same pattern of `OK` messages with the machine-readable prefix and human-readable message. Some examples: - * `["CLOSED", "sub1", "duplicate: sub1 already opened"]` * `["CLOSED", "sub1", "unsupported: filter contains unknown elements"]` * `["CLOSED", "sub1", "error: could not connect to the database"]` * `["CLOSED", "sub1", "error: shutting down idle subscription"]` -- cgit v1.2.3 From 8c47577ecb6b3ae6ad840e5b4d187a3f3a6b97c8 Mon Sep 17 00:00:00 2001 From: Cody Casterline Date: Fri, 5 Jul 2024 09:31:23 -0700 Subject: More precisely document since/until bounds. (#1284) * More precisely document since/until bounds. Lower in this document, this is expressed as "since <= created_at <= until". But the English description said that these values had to be "newer than" or "older than". These two were in conflict. I assume the inclusive behavior is the intended one, since that documentation was added later to clarify. This just makes both cases match. * Update 01.md Co-authored-by: Alex Gleason * Update 01.md Co-authored-by: Alex Gleason --------- Co-authored-by: Alex Gleason --- 01.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to '01.md') diff --git a/01.md b/01.md index c11a095..c7d7273 100644 --- a/01.md +++ b/01.md @@ -125,8 +125,8 @@ Clients can send 3 types of messages, which must be JSON arrays, according to th "authors": , "kinds": , "#": , - "since": , - "until": , + "since": = to this to pass>, + "until": , "limit": } ``` -- cgit v1.2.3 From 9c54549f1842245b842d8a66f3bade744da24189 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Thu, 18 Jul 2024 22:16:45 -0500 Subject: NIP-01: sort events by id after created_at --- 01.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to '01.md') diff --git a/01.md b/01.md index c7d7273..1da6e83 100644 --- a/01.md +++ b/01.md @@ -143,7 +143,7 @@ All conditions of a filter that are specified must match for an event for it to A `REQ` message may contain multiple filters. In this case, events that match any of the filters are to be returned, i.e., multiple filters are to be interpreted as `||` conditions. -The `limit` property of a filter is only valid for the initial query and MUST be ignored afterwards. When `limit: n` is present it is assumed that the events returned in the initial query will be the last `n` events ordered by the `created_at`. It is safe to return less events than `limit` specifies, but it is expected that relays do not return (much) more events than requested so clients don't get unnecessarily overwhelmed by data. +The `limit` property of a filter is only valid for the initial query and MUST be ignored afterwards. When `limit: n` is present it is assumed that the events returned in the initial query will be the last `n` events ordered by the `created_at`. Newer events should appear first, and in the case of ties the event with the lowest id (first in lexical order) should be first. It is safe to return less events than `limit` specifies, but it is expected that relays do not return (much) more events than requested so clients don't get unnecessarily overwhelmed by data. ### From relay to client: sending events and notices -- cgit v1.2.3 From ca3c52e3e74f0a4679f1c6c0d9ac6461ea748d2d Mon Sep 17 00:00:00 2001 From: fiatjaf_ Date: Tue, 20 Aug 2024 12:56:05 -0300 Subject: rename "parameterized replaceable event" to "addressable event" (#1418) --- 01.md | 4 ++-- 15.md | 2 +- 19.md | 2 +- 23.md | 2 +- 29.md | 2 +- 33.md | 2 +- 38.md | 2 +- 51.md | 2 +- 52.md | 2 +- 53.md | 2 +- 54.md | 2 +- 57.md | 2 +- 58.md | 2 +- 71.md | 2 +- 75.md | 4 ++-- 78.md | 2 +- 99.md | 2 +- 17 files changed, 19 insertions(+), 19 deletions(-) (limited to '01.md') diff --git a/01.md b/01.md index 1da6e83..73c7e8f 100644 --- a/01.md +++ b/01.md @@ -78,8 +78,8 @@ This NIP defines 3 standard tags that can be used across all event kinds with th - The `e` tag, used to refer to an event: `["e", <32-bytes lowercase hex of the id of another event>, ]` - The `p` tag, used to refer to another user: `["p", <32-bytes lowercase hex of a pubkey>, ]` - The `a` tag, used to refer to a (maybe parameterized) replaceable event - - for a parameterized replaceable event: `["a", :<32-bytes lowercase hex of a pubkey>:, ]` - - for a non-parameterized replaceable event: `["a", :<32-bytes lowercase hex of a pubkey>:, ]` + - for an addressable event: `["a", :<32-bytes lowercase hex of a pubkey>:, ]` + - for a normal replaceable event: `["a", :<32-bytes lowercase hex of a pubkey>:, ]` As a convention, all single-letter (only english alphabet letters: a-z, A-Z) key tags are expected to be indexed by relays, such that it is possible, for example, to query or subscribe to events that reference the event `"5c83da77af1dec6d7289834998ad7aafbd9e2191396d75ec3cc27f5a77226f36"` by using the `{"#e": ["5c83da77af1dec6d7289834998ad7aafbd9e2191396d75ec3cc27f5a77226f36"]}` filter. diff --git a/15.md b/15.md index 6daa801..2a4e2c2 100644 --- a/15.md +++ b/15.md @@ -300,7 +300,7 @@ This event leverages naddr to enable comprehensive customization and sharing of Bids are simply events of kind `1021` with a `content` field specifying the amount, in the currency of the auction. Bids must reference an auction. > [!NOTE] -> Auctions can be edited as many times as desired (they are "parameterized replaceable events") by the author - even after the start_date, but they cannot be edited after they have received the first bid! This is enforced by the fact that bids reference the event ID of the auction (rather than the product UUID), which changes with every new version of the auctioned product. So a bid is always attached to one "version". Editing the auction after a bid would result in the new product losing the bid! +> Auctions can be edited as many times as desired (they are "addressable events") by the author - even after the start_date, but they cannot be edited after they have received the first bid! This is enforced by the fact that bids reference the event ID of the auction (rather than the product UUID), which changes with every new version of the auctioned product. So a bid is always attached to one "version". Editing the auction after a bid would result in the new product losing the bid! ### Event `1022`: Bid confirmation diff --git a/19.md b/19.md index cce9e64..3ea8e11 100644 --- a/19.md +++ b/19.md @@ -43,7 +43,7 @@ These possible standardized `TLV` types are indicated here: - depends on the bech32 prefix: - for `nprofile` it will be the 32 bytes of the profile public key - for `nevent` it will be the 32 bytes of the event id - - for `naddr`, it is the identifier (the `"d"` tag) of the event being referenced. For non-parameterized replaceable events, use an empty string. + - for `naddr`, it is the identifier (the `"d"` tag) of the event being referenced. For normal replaceable events use an empty string. - `1`: `relay` - for `nprofile`, `nevent` and `naddr`, _optionally_, a relay in which the entity (profile or event) is more likely to be found, encoded as ascii - this may be included multiple times diff --git a/23.md b/23.md index 382df83..d8fb51a 100644 --- a/23.md +++ b/23.md @@ -6,7 +6,7 @@ Long-form Content `draft` `optional` -This NIP defines `kind:30023` (a _parameterized replaceable event_) for long-form text content, generally referred to as "articles" or "blog posts". `kind:30024` has the same structure as `kind:30023` and is used to save long form drafts. +This NIP defines `kind:30023` (an _addressable event_) for long-form text content, generally referred to as "articles" or "blog posts". `kind:30024` has the same structure as `kind:30023` and is used to save long form drafts. "Social" clients that deal primarily with `kind:1` notes should not be expected to implement this NIP. diff --git a/29.md b/29.md index c2b86f1..f867268 100644 --- a/29.md +++ b/29.md @@ -16,7 +16,7 @@ Normally a group will originally belong to one specific relay, but the community ## Relay-generated events -Relays are supposed to generate the events that describe group metadata and group admins. These are parameterized replaceable events signed by the relay keypair directly, with the group _id_ as the `d` tag. +Relays are supposed to generate the events that describe group metadata and group admins. These are _addressable_ events signed by the relay keypair directly, with the group _id_ as the `d` tag. ## Group identifier diff --git a/33.md b/33.md index 337a1f9..9c00d42 100644 --- a/33.md +++ b/33.md @@ -6,4 +6,4 @@ Parameterized Replaceable Events `final` `mandatory` -Moved to [NIP-01](01.md). +Renamed to "Addressable events" and moved to [NIP-01](01.md). diff --git a/38.md b/38.md index 4f2c06d..d841d76 100644 --- a/38.md +++ b/38.md @@ -13,7 +13,7 @@ This NIP enables a way for users to share live statuses such as what music they ## Live Statuses -A special event with `kind:30315` "User Status" is defined as an *optionally expiring* _parameterized replaceable event_, where the `d` tag represents the status type: +A special event with `kind:30315` "User Status" is defined as an *optionally expiring* _addressable event_, where the `d` tag represents the status type: For example: diff --git a/51.md b/51.md index 7e43121..f7a468e 100644 --- a/51.md +++ b/51.md @@ -16,7 +16,7 @@ When new items are added to an existing list, clients SHOULD append them to the ## Standard lists -Standard lists use non-parameterized replaceable events, meaning users may only have a single list of each kind. They have special meaning and clients may rely on them to augment a user's profile or browsing experience. +Standard lists use normal replaceable events, meaning users may only have a single list of each kind. They have special meaning and clients may rely on them to augment a user's profile or browsing experience. For example, _mute list_ can contain the public keys of spammers and bad actors users don't want to see in their feeds or receive annoying notifications from. diff --git a/52.md b/52.md index bedf613..c6d6b96 100644 --- a/52.md +++ b/52.md @@ -6,7 +6,7 @@ Calendar Events `draft` `optional` -This specification defines calendar events representing an occurrence at a specific moment or between moments. These calendar events are _parameterized replaceable_ and deletable per [NIP-09](09.md). +This specification defines calendar events representing an occurrence at a specific moment or between moments. These calendar events are _addressable_ and deletable per [NIP-09](09.md). Unlike the term `calendar event` specific to this NIP, the term `event` is used broadly in all the NIPs to describe any Nostr event. The distinction is being made here to discern between the two terms. diff --git a/53.md b/53.md index 0b1cb81..15bdbc9 100644 --- a/53.md +++ b/53.md @@ -12,7 +12,7 @@ Service providers want to offer live activities to the Nostr network in such a w ### Live Event -A special event with `kind:30311` "Live Event" is defined as a _parameterized replaceable event_ of public `p` tags. Each `p` tag SHOULD have a **displayable** marker name for the current role (e.g. `Host`, `Speaker`, `Participant`) of the user in the event and the relay information MAY be empty. This event will be constantly updated as participants join and leave the activity. +A special event with `kind:30311` "Live Event" is defined as an _addressable event_ of public `p` tags. Each `p` tag SHOULD have a **displayable** marker name for the current role (e.g. `Host`, `Speaker`, `Participant`) of the user in the event and the relay information MAY be empty. This event will be constantly updated as participants join and leave the activity. For example: diff --git a/54.md b/54.md index 0c2dd1c..cf22544 100644 --- a/54.md +++ b/54.md @@ -6,7 +6,7 @@ Wiki `draft` `optional` -This NIP defines `kind:30818` (a _parameterized replaceable event_) for long-form text content similar to [NIP-23](23.md), but with one important difference: articles are meant to be descriptions, or encyclopedia entries, of particular subjects, and it's expected that multiple people will write articles about the exact same subjects, with either small variations or completely independent content. +This NIP defines `kind:30818` (an _addressable event_) for long-form text content similar to [NIP-23](23.md), but with one important difference: articles are meant to be descriptions, or encyclopedia entries, of particular subjects, and it's expected that multiple people will write articles about the exact same subjects, with either small variations or completely independent content. Articles are identified by lowercase, normalized ascii `d` tags. diff --git a/57.md b/57.md index d04eeff..1c0b314 100644 --- a/57.md +++ b/57.md @@ -36,7 +36,7 @@ A `zap request` is an event of kind `9734` that is _not_ published to relays, bu In addition, the event MAY include the following tags: - `e` is an optional hex-encoded event id. Clients MUST include this if zapping an event rather than a person. -- `a` is an optional event coordinate that allows tipping parameterized replaceable events such as NIP-23 long-form notes. +- `a` is an optional event coordinate that allows tipping addressable events such as NIP-23 long-form notes. Example: diff --git a/58.md b/58.md index 4a9ed4c..438574b 100644 --- a/58.md +++ b/58.md @@ -9,7 +9,7 @@ Badges Three special events are used to define, award and display badges in user profiles: -1. A "Badge Definition" event is defined as a parameterized replaceable 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. diff --git a/71.md b/71.md index 2743b2b..be1587c 100644 --- a/71.md +++ b/71.md @@ -6,7 +6,7 @@ Video Events `draft` `optional` -This specification defines video events representing a dedicated post of externally hosted content. These video events are _parameterized replaceable_ and delete requestable per [NIP-09](09.md). +This specification defines video events representing a dedicated post of externally hosted content. These video events are _addressable_ and delete-requestable per [NIP-09](09.md). Unlike a `kind 1` event with a video attached, Video Events are meant to contain all additional metadata concerning the subject media and to be surfaced in video-specific clients rather than general micro-blogging clients. The thought is for events of this kind to be referenced in a Netflix, YouTube, or TikTok like nostr client where the video itself is at the center of the experience. diff --git a/75.md b/75.md index c16436a..a6f2bff 100644 --- a/75.md +++ b/75.md @@ -53,11 +53,11 @@ The following tags are OPTIONAL. } ``` -The goal MAY include an `r` or `a` tag linking to a URL or parameterized replaceable event. +The goal MAY include an `r` or `a` tag linking to a URL or addressable event. The goal MAY include multiple beneficiary pubkeys by specifying [`zap` tags](57.md#appendix-g-zap-tag-on-other-events). -Parameterized replaceable events can link to a goal by using a `goal` tag specifying the event id and an optional relay hint. +Addressable events can link to a goal by using a `goal` tag specifying the event id and an optional relay hint. ```json { diff --git a/78.md b/78.md index 0f2fada..abdd1b2 100644 --- a/78.md +++ b/78.md @@ -12,7 +12,7 @@ Even though interoperability is great, some apps do not want or do not need inte ## Nostr event -This NIP specifies the use of event kind `30078` (parameterized replaceable event) with a `d` tag containing some reference to the app name and context -- or any other arbitrary string. `content` and other `tags` can be anything or in any format. +This NIP specifies the use of event kind `30078` (an _addressable_ event) with a `d` tag containing some reference to the app name and context -- or any other arbitrary string. `content` and other `tags` can be anything or in any format. ## Some use cases diff --git a/99.md b/99.md index 8948287..b1b7ce9 100644 --- a/99.md +++ b/99.md @@ -6,7 +6,7 @@ Classified Listings `draft` `optional` -This NIP defines `kind:30402`: a parameterized replaceable event to describe classified listings that list any arbitrary product, service, or other thing for sale or offer and includes enough structured metadata to make them useful. +This NIP defines `kind:30402`: an addressable event to describe classified listings that list any arbitrary product, service, or other thing for sale or offer and includes enough structured metadata to make them useful. The category of classifieds includes a very broad range of physical goods, services, work opportunities, rentals, free giveaways, personals, etc. and is distinct from the more strictly structured marketplaces defined in [NIP-15](15.md) that often sell many units of specific products through very specific channels. -- cgit v1.2.3 From a736e629be5c4c9125d98bdb4965851d8110c483 Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Sat, 28 Sep 2024 12:26:48 -0300 Subject: complete renaming to "addressable" events. as noticed by @bezysoftware at https://github.com/nostr-protocol/nips/pull/1437#issuecomment-2380626514. I don't know how so many of these instances were left from the original PR at following ca3c52e3e74f0a4679f1c6c0d9ac6461ea748d2d. --- 01.md | 4 ++-- 23.md | 2 +- 32.md | 4 ++-- 38.md | 2 +- 52.md | 6 +++--- 58.md | 3 +-- 71.md | 6 +++--- 75.md | 2 +- 8 files changed, 14 insertions(+), 15 deletions(-) (limited to '01.md') diff --git a/01.md b/01.md index 9e50204..c3c0991 100644 --- a/01.md +++ b/01.md @@ -77,7 +77,7 @@ This NIP defines 3 standard tags that can be used across all event kinds with th - The `e` tag, used to refer to an event: `["e", <32-bytes lowercase hex of the id of another event>, ]` - The `p` tag, used to refer to another user: `["p", <32-bytes lowercase hex of a pubkey>, ]` -- The `a` tag, used to refer to a (maybe parameterized) replaceable event +- The `a` tag, used to refer to an addressable or replaceable event - for an addressable event: `["a", :<32-bytes lowercase hex of a pubkey>:, ]` - for a normal replaceable event: `["a", :<32-bytes lowercase hex of a pubkey>:, ]` @@ -95,7 +95,7 @@ And also a convention for kind ranges that allow for easier experimentation and - for kind `n` such that `1000 <= n < 10000 || 4 <= n < 45 || n == 1 || n == 2`, events are **regular**, which means they're all expected to be stored by relays. - for kind `n` such that `10000 <= n < 20000 || n == 0 || n == 3`, events are **replaceable**, which means that, for each combination of `pubkey` and `kind`, only the latest event MUST be stored by relays, older versions MAY be discarded. - for kind `n` such that `20000 <= n < 30000`, events are **ephemeral**, which means they are not expected to be stored by relays. -- for kind `n` such that `30000 <= n < 40000`, events are **parameterized replaceable**, which means that, for each combination of `pubkey`, `kind` and the `d` tag's first value, only the latest event MUST be stored by relays, older versions MAY be discarded. +- for kind `n` such that `30000 <= n < 40000`, events are **addressable** by their `kind`, `pubkey` and `d` tag value -- which means that, for each combination of `kind`, `pubkey` and the `d` tag value, only the latest event MUST be stored by relays, older versions MAY be discarded. In case of replaceable events with the same timestamp, the event with the lowest id (first in lexical order) should be retained, and the other discarded. diff --git a/23.md b/23.md index d8fb51a..720f6d6 100644 --- a/23.md +++ b/23.md @@ -31,7 +31,7 @@ Other metadata fields can be added as tags to the event as necessary. Here we st ### Editability -These articles are meant to be editable, so they should make use of the parameterized replaceability feature and include a `d` tag with an identifier for the article. Clients should take care to only publish and read these events from relays that implement that. If they don't do that they should also take care to hide old versions of the same article they may receive. +These articles are meant to be editable, so they should include a `d` tag with an identifier for the article. Clients should take care to only publish and read these events from relays that implement that. If they don't do that they should also take care to hide old versions of the same article they may receive. ### Linking diff --git a/32.md b/32.md index 66f0283..a99e52a 100644 --- a/32.md +++ b/32.md @@ -8,7 +8,7 @@ Labeling This NIP defines two new indexable tags to label events and a new event kind (`kind:1985`) to attach those labels to existing events. This supports several use cases, including distributed moderation, collection management, license assignment, and content classification. -New Tags: +New Tags: - `L` denotes a label namespace - `l` denotes a label @@ -146,7 +146,7 @@ Other Notes ----------- When using this NIP to bulk-label many targets at once, events may be requested for deletion using [NIP-09](09.md) and a replacement -may be published. We have opted not to use parameterizable/replaceable events for this due to the +may be published. We have opted not to use addressable/replaceable events for this due to the complexity in coming up with a standard `d` tag. In order to avoid ambiguity when querying, publishers SHOULD limit labeling events to a single namespace. diff --git a/38.md b/38.md index 8b22b2a..ece5e5f 100644 --- a/38.md +++ b/38.md @@ -46,7 +46,7 @@ Two common status types are defined: `general` and `music`. `general` represent Any other status types can be used but they are not defined by this NIP. -The status MAY include an `r`, `p`, `e` or `a` tag linking to a URL, profile, note, or parameterized replaceable event. +The status MAY include an `r`, `p`, `e` or `a` tag linking to a URL, profile, note, or addressable event. The `content` MAY include emoji(s), or [NIP-30](30.md) custom emoji(s). If the `content` is an empty string then the client should clear the status. diff --git a/52.md b/52.md index c6d6b96..cc2625a 100644 --- a/52.md +++ b/52.md @@ -20,7 +20,7 @@ This kind of calendar event starts on a date and ends before a different date in #### Format -The format uses a parameterized replaceable event kind `31922`. +The format uses an _addressable event_ of `kind:31922`. The `.content` of these events should be a detailed description of the calendar event. It is required but can be an empty string. @@ -79,7 +79,7 @@ This kind of calendar event spans between a start time and end time. #### Format -The format uses a parameterized replaceable event kind `31923`. +The format uses an _addressable event_ kind `31923`. The `.content` of these events should be a detailed description of the calendar event. It is required but can be an empty string. @@ -193,7 +193,7 @@ The RSVP MAY tag the author of the calendar event it is in response to using a ` ### Format -The format uses a parameterized replaceable event kind `31925`. +The format uses an _addressable event_ kind `31925`. The `.content` of these events is optional and should be a free-form note that adds more context to this calendar event response. diff --git a/58.md b/58.md index b6324f4..23921bd 100644 --- a/58.md +++ b/58.md @@ -13,8 +13,7 @@ user profiles: 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. -3. A "Profile Badges" event is defined as a parameterized replaceable 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. ### Badge Definition event diff --git a/71.md b/71.md index 5cf3b36..dd813e9 100644 --- a/71.md +++ b/71.md @@ -16,7 +16,7 @@ There are two types of video events represented by different kinds: horizontal a #### Format -The format uses a parameterized replaceable event kind `34235` for horizontal videos and `34236` for vertical videos. +The format uses an _addressable event_ kind `34235` for horizontal videos and `34236` for vertical videos. The `.content` of these events is a summary or description on the video content. @@ -91,14 +91,14 @@ A video event view is a response to a video event to track a user's view or prog ### Format -The format uses a parameterized replaceable event kind `34237`. +The format uses an _addressable event_ kind `34237`. The `.content` of these events is optional and could be a free-form note that acts like a bookmark for the user. The list of tags are as follows: * `a` (required) reference tag to kind `34235` or `34236` video event being viewed * `d` (required) same as `a` reference tag value -* `viewed` (optional, repeated) timestamp of the user's start time in seconds, timestamp of the user's end time in seconds +* `viewed` (optional, repeated) timestamp of the user's start time in seconds, timestamp of the user's end time in seconds ```json diff --git a/75.md b/75.md index 885c391..ad933d5 100644 --- a/75.md +++ b/75.md @@ -77,7 +77,7 @@ Clients MAY display funding goals on user profiles. When zapping a goal event, clients MUST include the relays in the `relays` tag of the goal event in the zap request `relays` tag. -When zapping a parameterized replaceable event with a `goal` tag, clients SHOULD tag the goal event id in the `e` tag of the zap request. +When zapping an addressable event with a `goal` tag, clients SHOULD tag the goal event id in the `e` tag of the zap request. ## Use cases -- cgit v1.2.3 From ce2234e0baac9d64f7044ec1c4a5cc7210fd2fc2 Mon Sep 17 00:00:00 2001 From: Jon Staab Date: Mon, 30 Sep 2024 09:17:22 -0700 Subject: Clarify tag filters --- 01.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to '01.md') diff --git a/01.md b/01.md index c3c0991..d62f317 100644 --- a/01.md +++ b/01.md @@ -81,7 +81,7 @@ This NIP defines 3 standard tags that can be used across all event kinds with th - for an addressable event: `["a", :<32-bytes lowercase hex of a pubkey>:, ]` - for a normal replaceable event: `["a", :<32-bytes lowercase hex of a pubkey>:, ]` -As a convention, all single-letter (only english alphabet letters: a-z, A-Z) key tags are expected to be indexed by relays, such that it is possible, for example, to query or subscribe to events that reference the event `"5c83da77af1dec6d7289834998ad7aafbd9e2191396d75ec3cc27f5a77226f36"` by using the `{"#e": ["5c83da77af1dec6d7289834998ad7aafbd9e2191396d75ec3cc27f5a77226f36"]}` filter. +As a convention, all single-letter (only english alphabet letters: a-z, A-Z) key tags are expected to be indexed by relays, such that it is possible, for example, to query or subscribe to events that reference the event `"5c83da77af1dec6d7289834998ad7aafbd9e2191396d75ec3cc27f5a77226f36"` by using the `{"#e": ["5c83da77af1dec6d7289834998ad7aafbd9e2191396d75ec3cc27f5a77226f36"]}` filter. Only the first value in any given tag is indexed. ### Kinds -- cgit v1.2.3