upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--65.md59
-rw-r--r--README.md1
2 files changed, 60 insertions, 0 deletions
diff --git a/65.md b/65.md
new file mode 100644
index 0000000..1a947eb
--- /dev/null
+++ b/65.md
@@ -0,0 +1,59 @@
1NIP-65
2======
3
4Feed Advertisements
5-------------------
6
7`draft` `optional` `author:mikedilger`
8
9A special replaceable event meaning "Feed Advertisement" is defined as an event with kind `10002` having a list of `r` tags, one for each relay the author posts their outgoing "feed" to.
10
11The content is not used.
12
13A feed consists of events that the author posts and wishes for their followers to "follow". Normally these would be kind-1 Text Note events but is not limited as such.
14
15Clients SHOULD, as with all replaceable events, use only the most recent kind-10002 event they can find.
16
17Clients SHOULD presume that if their user has a pubkey in their ContactList (kind 3) that it is because they wish to see this author's "feed" events. But clients MAY presume otherwise.
18
19Clients SHOULD interpret these Feed Advertisements as being the best relays to source the "feed" events from the author of the feed advertisement.
20
21### Motivation
22
23There is a common nostr use case where users wish to follow the content produced by other users. This is evidenced by the implicit meaning of the Contact List in [NIP-02](02.md)
24
25Because users don't often share the same sets of relays, ad-hoc solutions have arisen to get that content, but these solutions negatively impact scalability and decentralization:
26
27 - Most people are sending their posts to the same most popular relays in order to be more widely seen
28 - Many people are pulling from a large number of relays (including many duplicate events) in order to get more data
29 - Events are being copied between relays, oftentimes to many different relays
30
31### Purposes
32
33The purpose of this NIP is to help clients find the events of the people they follow, and to help nostr scale better.
34
35### Suggestions
36
37It is suggested that people spread their kind-10002 events to many relays, but to post their normal feed notes to a much smaller number of relays. It is suggested that clients offer a way for users to spread their Feed Advertisements to many more relays than they normally post to.
38
39Authors may post events outside of the feed that they wish their followers to follow by posting them to relays outside of those listed in their "Feed Advertisement". For example, an author may want to reply to someone without all of their followers watching, but in many cases they want all their replies to show up in their "feed".
40
41It is suggsted that relays allow any user to write their own kind-10002 event (optionally with AUTH to verify it is their own) even if they are not otherwise subscribed to the relay because
42
43 - finding where someone posts is rather important
44 - these events do not have content that needs management
45 - relays only need to store one replaceable event per pubkey to offer this service
46
47### Example
48
49```json
50{
51 "kind": 10002,
52 "tags": [
53 ["r", "wss://alicerelay.example.com"],
54 ["r", "wss://brando-relay.com"],
55 ["r", "wss://expensive-relay.example2.com"],
56 ],
57 "content": "",
58 ...other fields
59```
diff --git a/README.md b/README.md
index 829e61b..9767f0d 100644
--- a/README.md
+++ b/README.md
@@ -48,6 +48,7 @@ NIPs stand for **Nostr Implementation Possibilities**. They exist to document wh
48| 43 | Channel Hide Message | [28](28.md) | 48| 43 | Channel Hide Message | [28](28.md) |
49| 44 | Channel Mute User | [28](28.md) | 49| 44 | Channel Mute User | [28](28.md) |
50| 45-49 | Public Chat Reserved | [28](28.md) | 50| 45-49 | Public Chat Reserved | [28](28.md) |
51| 10002 | Feed Advertisement | [65](65.md) |
51| 22242 | Client Authentication | [42](42.md) | 52| 22242 | Client Authentication | [42](42.md) |
52| 10000-19999 | Replaceable Events Reserved | [16](16.md) | 53| 10000-19999 | Replaceable Events Reserved | [16](16.md) |
53| 20000-29999 | Ephemeral Events Reserved | [16](16.md) | 54| 20000-29999 | Ephemeral Events Reserved | [16](16.md) |