diff options
Diffstat (limited to '45.md')
| -rw-r--r-- | 45.md | 31 |
1 files changed, 31 insertions, 0 deletions
| @@ -0,0 +1,31 @@ | |||
| 1 | NIP-45 | ||
| 2 | ====== | ||
| 3 | |||
| 4 | Event Counts | ||
| 5 | -------------- | ||
| 6 | |||
| 7 | `draft` `optional` `author:staab` | ||
| 8 | |||
| 9 | Relays may support the `COUNT` verb, which provide a mechanism for obtaining event counts. | ||
| 10 | |||
| 11 | ## Motivation | ||
| 12 | |||
| 13 | Some queries a client may want to execute against connected relays are prohibitively expensive, for example, in order to retrieve follower counts for a given pubkey, a client must query all kind-3 events referring to a given pubkey and count them. The result may be cached, either by a client or by a separate indexing server as an alternative, but both options erode the decentralization of the network by creating a second-layer protocol on top of Nostr. | ||
| 14 | |||
| 15 | ## Filters and return values | ||
| 16 | |||
| 17 | This NIP defines a verb called `COUNT`, which accepts a subscription id and a filter as specified in [NIP 01](01.md). | ||
| 18 | |||
| 19 | Counts are returned using a `COUNT` response in the form `{count: <integer>}`. Relays may use probabilistic counts to reduce compute requirements. | ||
| 20 | |||
| 21 | Examples: | ||
| 22 | |||
| 23 | ``` | ||
| 24 | # Followers count | ||
| 25 | ["COUNT", "", {kinds: [3], '#p': [<pubkey>]}] | ||
| 26 | ["COUNT", "", {count: 238}] | ||
| 27 | |||
| 28 | # Count posts and reactions | ||
| 29 | ["COUNT", "", {kinds: [1, 7], authors: [<pubkey>]}] | ||
| 30 | ["COUNT", "", {count: 5}] | ||
| 31 | ``` | ||