nips/63.md
2024-03-31 11:43:16 -04:00

1.7 KiB

NIP-63

Signed Filters

draft optional

Event kind 33012 is used to represent one or more Nostr filters.

The d tag represents the subscription id and the filter tag contains the JSON-stringified NIP-01 filter.

The optional relays tag contains the destination relays the filter was designed to download events from.

The optional authorized pubkey contains the pubkey authorized to re-use this filter and receive events on behalf of the user.

{
  "kind": 33012,
  "tags": [
    ["d", "<subscription_id>"],
    ["filter", "<filter1>"],
    ["filter", "<filter2>"],
    ["authorized", "<32-bytes lowercase hex of a pubkey>"], 
    ["relays", "<relay1>", "<relay2>", ...],
    ["expiration", "<unix timestamp>"],
  ],
  "content": "",
  // ...other fields
}

They are submitted to supporting relays via SREQ command, with the following format:

["SREQ", <kind-33012>, <kind-33012>, ...]

Supporting relays interpret the filter tags in the same way they do with REQ while automatically authenticating the signer.

Relays MUST authenticate the authorized key if present.

Relays MUST verify if they are included in the relays list if present.

Relays MUST comply with the expiration to limit the reuse of the filter.

Motivation

Push Notification servers can use these events to query private relays on behalf of users and push events down to mobile phones.

The goal is to be able to support AUTH from multiple users in the same connection. As a side effect, this approach removes the user AUTH round trip (but not the delegation AUTH).

Trusted proxies can use these event types to query relays on behalf of the user.