From 0acfd0e84badd3bc54f680e3617ab045a844919c Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Sat, 4 Feb 2023 07:16:16 -0300 Subject: declare `nref` on NIP-33. remove need for NIP-01 bridge event. --- 33.md | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to '33.md') diff --git a/33.md b/33.md index 6b05bd0..314cc83 100644 --- a/33.md +++ b/33.md @@ -12,10 +12,10 @@ Implementation -------------- The value of a tag is defined as the first parameter of a tag after the tag name. -A *parameterized replaceable event* is defined as an event with a kind `30000 <= n < 40000`. +A *parameterized replaceable event* is defined as an event with a kind `30000 <= n < 40000`. Upon a parameterized replaceable event with a newer timestamp than the currently known latest replaceable event with the same kind and first `d` tag value being received, the old event -SHOULD be discarded and replaced with the newer event. +SHOULD be discarded and replaced with the newer event. A missing or a `d` tag with no value should be interpreted equivalent to a `d` tag with the value as an empty string. Events from the same author with any of the following `tags` replace each other: @@ -30,6 +30,20 @@ replace each other: Clients SHOULD NOT use `d` tags with multiple values and SHOULD include the `d` tag even if it has no value to allow querying using the `#d` filter. +Referencing and tagging +----------------------- + +Normally (as per NIP-01, NIP-12) the `"p"` tag is used for referencing public keys and the +`"e"` tag for referencing event ids and the `note`, `npub`, `nprofile` or `nevent` are their +equivalents for event tags (i.e. an `nprofile` is generally translated into a tag +`["p", "", ""]`). + +To support linking to parameterized replaceable events, the `nref` code is introduced on +NIP-19. It includes the public key of the event author and the `d` tag (and relays) such that +the referenced combination of public key and `d` tag can be found. + +The equivalent in `tags` to the `nref` code is the tag `"f"`, comprised of `["f", ":", ""]`. + Client Behavior --------------- -- cgit v1.2.3 From 16b50a481fa7c373ba8dfbdc92c3b880fecd235a Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Sun, 5 Feb 2023 20:23:59 -0300 Subject: rename `nref` to `nitem` and use the `i` tag. --- 19.md | 8 ++++---- 23.md | 15 +++++++-------- 33.md | 4 ++-- 3 files changed, 13 insertions(+), 14 deletions(-) (limited to '33.md') diff --git a/19.md b/19.md index f3dd2b8..caf60f9 100644 --- a/19.md +++ b/19.md @@ -35,7 +35,7 @@ These are the possible bech32 prefixes with `TLV`: - `nprofile`: a nostr profile - `nevent`: a nostr event - `nrelay`: a nostr relay - - `nref`: a nostr parameterized replaceable event coordinate (NIP-33) + - `nitem`: a nostr parameterized replaceable event coordinate (NIP-33) These possible standardized `TLV` types are indicated here: @@ -44,12 +44,12 @@ These possible standardized `TLV` types are indicated here: - 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 `nrelay`, this is the relay URL - - for `nref`, it is the identifier (the `"d"` tag) of the event being referenced + - for `nitem`, it is the identifier (the `"d"` tag) of the event being referenced - for `nprofile`, `nevent` and `nrelay` this may be included only once. - `1`: `relay` - - for `nprofile`, `nevent` and `nref`, a relay in which the entity (profile or event) is more likely to be found, encoded as UTF-8. This may be included multiple times + - for `nprofile`, `nevent` and `nitem`, a relay in which the entity (profile or event) is more likely to be found, encoded as UTF-8. This may be included multiple times - `2`: `author` - - for `nref`, the 32 bytes of the pubkey of the event + - for `nitem`, the 32 bytes of the pubkey of the event ## Examples diff --git a/23.md b/23.md index 1559788..d1353af 100644 --- a/23.md +++ b/23.md @@ -24,13 +24,13 @@ These articles are meant to be editable, so they should make use of the replacea ### Linking -The article may be linked to using the NIP-19 `nref` code along with the `"f"` tag (see NIP-33 and NIP-19). +The article may be linked to using the NIP-19 `nitem` code along with the `"i"` tag (see NIP-33 and NIP-19). ### References -Writing clients should implement support for parsing pasted NIP-19 `nref` identifiers and adding them automatically to the list of `.tags` of the event, replacing the actual content with a string like `#[tag_index]` in the same way as NIP-08 -- or, if the reference is in the form of a URL (for example, `[click here](nref1...)`) then they should be replaced with just the tag number directly as if link with that name existed at the bottom of the Markdown (for example, `[click here][0]`). +Writing clients should implement support for parsing pasted NIP-19 `nitem` identifiers and adding them automatically to the list of `.tags` of the event, replacing the actual content with a string like `#[tag_index]` in the same way as NIP-08 -- or, if the reference is in the form of a URL (for example, `[click here](nitem1...)`) then they should be replaced with just the tag number directly as if link with that name existed at the bottom of the Markdown (for example, `[click here][0]`). -Reader clients should parse the Markdown and replace these references with either internal links so the referenced events can be accessed directly, with NIP-21 `nostr:nref1...` links or direct links to web clients that will handle these references. +Reader clients should parse the Markdown and replace these references with either internal links so the referenced events can be accessed directly, with NIP-21 `nostr:nitem1...` links or direct links to web clients that will handle these references. The idea here is that having these tags is that reader clients can display a list of backreferences at the bottom when one article mentions another. @@ -44,9 +44,9 @@ Article text: title: Lorem Ipsum --- -Lorem [ipsum][4] dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +Lorem [ipsum][3] dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. -Read more at #[3]. +Read more at #[2]. ``` Derived event: @@ -58,10 +58,9 @@ Derived event: "title": "Lorem Ipsum\\n---\\n\\nLorem [ipsum][4] dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\n\nRead more at #[3].", "tags": [ ["d", "lorem-ipsum"], - ["t", "lorem"], - ["t", "ipsum"], + ["t", "plceholder"], ["e", "b3e392b11f5d4f28321cedd09303a748acfd0487aea5a7450b3481c60b6e4f87", "wss://relay.example.com"], - ["f", "a695f6b60119d9521934a691347d9f78e8770b56da16bb255ee286ddf9fda919:ipsum", "wss://relay.nostr.org"] + ["i", "30023:a695f6b60119d9521934a691347d9f78e8770b56da16bb255ee286ddf9fda919:ipsum", "wss://relay.nostr.org"] ], "pubkey": "...", "id": "..." diff --git a/33.md b/33.md index 314cc83..5b8ad66 100644 --- a/33.md +++ b/33.md @@ -38,11 +38,11 @@ Normally (as per NIP-01, NIP-12) the `"p"` tag is used for referencing public ke equivalents for event tags (i.e. an `nprofile` is generally translated into a tag `["p", "", ""]`). -To support linking to parameterized replaceable events, the `nref` code is introduced on +To support linking to parameterized replaceable events, the `nitem` code is introduced on NIP-19. It includes the public key of the event author and the `d` tag (and relays) such that the referenced combination of public key and `d` tag can be found. -The equivalent in `tags` to the `nref` code is the tag `"f"`, comprised of `["f", ":", ""]`. +The equivalent in `tags` to the `nitem` code is the tag `"i"`, comprised of `["i", "::", ""]`. Client Behavior --------------- -- cgit v1.2.3 From b4493aa56abdea4b05780651e7af06ea13bbfafa Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Mon, 13 Feb 2023 08:47:23 -0300 Subject: rename coordinates: nitem->naddr, "i"->"a" --- 19.md | 10 +++++----- 23.md | 8 ++++---- 33.md | 4 ++-- README.md | 1 + 4 files changed, 12 insertions(+), 11 deletions(-) (limited to '33.md') diff --git a/19.md b/19.md index 2caf8bd..ab3b578 100644 --- a/19.md +++ b/19.md @@ -35,7 +35,7 @@ These are the possible bech32 prefixes with `TLV`: - `nprofile`: a nostr profile - `nevent`: a nostr event - `nrelay`: a nostr relay - - `nitem`: a nostr parameterized replaceable event coordinate (NIP-33) + - `naddr`: a nostr parameterized replaceable event coordinate (NIP-33) These possible standardized `TLV` types are indicated here: @@ -44,14 +44,14 @@ These possible standardized `TLV` types are indicated here: - 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 `nrelay`, this is the relay URL - - for `nitem`, it is the identifier (the `"d"` tag) of the event being referenced + - for `naddr`, it is the identifier (the `"d"` tag) of the event being referenced - `1`: `relay` - - for `nprofile`, `nevent` and `nitem`, a relay in which the entity (profile or event) is more likely to be found, encoded as ascii + - for `nprofile`, `nevent` and `naddr`, a relay in which the entity (profile or event) is more likely to be found, encoded as ascii - this may be included multiple times - `2`: `author` - - for `nitem`, the 32 bytes of the pubkey of the event + - for `naddr`, the 32 bytes of the pubkey of the event - `3`: `kind` - - for `nitem`, the 32-bit unsigned integer of the kind, big-endian + - for `naddr`, the 32-bit unsigned integer of the kind, big-endian ## Examples diff --git a/23.md b/23.md index 0c9923d..0648a35 100644 --- a/23.md +++ b/23.md @@ -31,13 +31,13 @@ These articles are meant to be editable, so they should make use of the replacea ### Linking -The article may be linked to using the NIP-19 `nitem` code along with the `"i"` tag (see NIP-33 and NIP-19). +The article may be linked to using the NIP-19 `naddr` code along with the `"a"` tag (see NIP-33 and NIP-19). ### References -Clients that support publishing NIP-23 events should implement support for parsing pasted NIP-19 `nitem` identifiers and adding them automatically to the list of `.tags` of the event, replacing the actual content with a string like `#[tag_index]` in the same way as NIP-08 -- or, if the reference is in the form of a URL (for example, `[click here](nitem1...)`) then they should be replaced with just the tag number directly as if link with that name existed at the bottom of the Markdown (for example, `[click here][0]`). +Clients that support publishing NIP-23 events should implement support for parsing pasted NIP-19 `naddr` identifiers and adding them automatically to the list of `.tags` of the event, replacing the actual content with a string like `#[tag_index]` in the same way as NIP-08 -- or, if the reference is in the form of a URL (for example, `[click here](naddr1...)`) then they should be replaced with just the tag number directly as if link with that name existed at the bottom of the Markdown (for example, `[click here][0]`). -Reader clients should parse the Markdown and replace these references with either internal links so the referenced events can be accessed directly, with NIP-21 `nostr:nitem1...` links or direct links to web clients that will handle these references. +Reader clients should parse the Markdown and replace these references with either internal links so the referenced events can be accessed directly, with NIP-21 `nostr:naddr1...` links or direct links to web clients that will handle these references. The idea here is that having these tags is that reader clients can display a list of backreferences at the bottom when one article mentions another. @@ -56,7 +56,7 @@ The same principles can be applied to `nevent1...`, `note1...`, `nprofile1...` o ["published_at", "1296962229"], ["t", "placeholder"], ["e", "b3e392b11f5d4f28321cedd09303a748acfd0487aea5a7450b3481c60b6e4f87", "wss://relay.example.com"], - ["i", "30023:a695f6b60119d9521934a691347d9f78e8770b56da16bb255ee286ddf9fda919:ipsum", "wss://relay.nostr.org"] + ["a", "30023:a695f6b60119d9521934a691347d9f78e8770b56da16bb255ee286ddf9fda919:ipsum", "wss://relay.nostr.org"] ], "pubkey": "...", "id": "..." diff --git a/33.md b/33.md index 5b8ad66..409ce4f 100644 --- a/33.md +++ b/33.md @@ -38,11 +38,11 @@ Normally (as per NIP-01, NIP-12) the `"p"` tag is used for referencing public ke equivalents for event tags (i.e. an `nprofile` is generally translated into a tag `["p", "", ""]`). -To support linking to parameterized replaceable events, the `nitem` code is introduced on +To support linking to parameterized replaceable events, the `naddr` code is introduced on NIP-19. It includes the public key of the event author and the `d` tag (and relays) such that the referenced combination of public key and `d` tag can be found. -The equivalent in `tags` to the `nitem` code is the tag `"i"`, comprised of `["i", "::", ""]`. +The equivalent in `tags` to the `naddr` code is the tag `"a"`, comprised of `["a", "::", ""]`. Client Behavior --------------- diff --git a/README.md b/README.md index 42cbc0c..c88d949 100644 --- a/README.md +++ b/README.md @@ -92,6 +92,7 @@ When experimenting with kinds, keep in mind the classification introduced by [NI | ---------- | ----------------------- | ----------------- | ------------------------ | | e | event id (hex) | relay URL, marker | [1](01.md), [10](10.md) | | p | pubkey (hex) | relay URL | [1](01.md) | +| a | coordinates to an event | relay URL | [33](33.md), [23](23.md) | | r | a reference (URL, etc) | | [12](12.md) | | t | hashtag | | [12](12.md) | | g | geohash | | [12](12.md) | -- cgit v1.2.3