diff options
Diffstat (limited to '45.md')
| -rw-r--r-- | 45.md | 26 |
1 files changed, 19 insertions, 7 deletions
| @@ -4,7 +4,7 @@ NIP-45 | |||
| 4 | Event Counts | 4 | Event Counts |
| 5 | -------------- | 5 | -------------- |
| 6 | 6 | ||
| 7 | `draft` `optional` `author:staab` | 7 | `draft` `optional` |
| 8 | 8 | ||
| 9 | Relays may support the verb `COUNT`, which provides a mechanism for obtaining event counts. | 9 | Relays may support the verb `COUNT`, which provides a mechanism for obtaining event counts. |
| 10 | 10 | ||
| @@ -16,24 +16,36 @@ Some queries a client may want to execute against connected relays are prohibiti | |||
| 16 | 16 | ||
| 17 | This NIP defines the verb `COUNT`, which accepts a subscription id and filters as specified in [NIP 01](01.md) for the verb `REQ`. Multiple filters are OR'd together and aggregated into a single count result. | 17 | This NIP defines the verb `COUNT`, which accepts a subscription id and filters as specified in [NIP 01](01.md) for the verb `REQ`. Multiple filters are OR'd together and aggregated into a single count result. |
| 18 | 18 | ||
| 19 | ``` | 19 | ```json |
| 20 | ["COUNT", <subscription_id>, <filters JSON>...] | 20 | ["COUNT", <subscription_id>, <filters JSON>...] |
| 21 | ``` | 21 | ``` |
| 22 | 22 | ||
| 23 | Counts are returned using a `COUNT` response in the form `{"count": <integer>}`. Relays may use probabilistic counts to reduce compute requirements. | 23 | Counts are returned using a `COUNT` response in the form `{"count": <integer>}`. Relays may use probabilistic counts to reduce compute requirements. |
| 24 | In case a relay uses probabilistic counts, it MAY indicate it in the response with `approximate` key i.e. `{"count": <integer>, "approximate": <true|false>}`. | ||
| 24 | 25 | ||
| 25 | ``` | 26 | ```json |
| 26 | ["COUNT", <subscription_id>, {"count": <integer>}] | 27 | ["COUNT", <subscription_id>, {"count": <integer>}] |
| 27 | ``` | 28 | ``` |
| 28 | 29 | ||
| 29 | Examples: | 30 | ## Examples: |
| 30 | 31 | ||
| 31 | ``` | 32 | ### Followers count |
| 32 | # Followers count | 33 | |
| 34 | ```json | ||
| 33 | ["COUNT", <subscription_id>, {"kinds": [3], "#p": [<pubkey>]}] | 35 | ["COUNT", <subscription_id>, {"kinds": [3], "#p": [<pubkey>]}] |
| 34 | ["COUNT", <subscription_id>, {"count": 238}] | 36 | ["COUNT", <subscription_id>, {"count": 238}] |
| 37 | ``` | ||
| 35 | 38 | ||
| 36 | # Count posts and reactions | 39 | ### Count posts and reactions |
| 40 | |||
| 41 | ```json | ||
| 37 | ["COUNT", <subscription_id>, {"kinds": [1, 7], "authors": [<pubkey>]}] | 42 | ["COUNT", <subscription_id>, {"kinds": [1, 7], "authors": [<pubkey>]}] |
| 38 | ["COUNT", <subscription_id>, {"count": 5}] | 43 | ["COUNT", <subscription_id>, {"count": 5}] |
| 39 | ``` | 44 | ``` |
| 45 | |||
| 46 | ### Count posts approximately | ||
| 47 | |||
| 48 | ``` | ||
| 49 | ["COUNT", <subscription_id>, {"kinds": [1]}] | ||
| 50 | ["COUNT", <subscription_id>, {"count": 93412452, "approximate": true}] | ||
| 51 | ``` | ||