nips/27.md
Ricardo Arturo Cabral Mejía 1228533c24
NIP-27 Multicasting
2022-08-16 23:00:01 -04:00

2.0 KiB

NIP-27

Multicasting

draft optional author:cameri

A new tag m meaning multicast group allow for events to be addressed to a group of clients simultaneously. Multicast in this scenario can be one-to-many or many-to-many.

A relay MUST forward events containing m tags strictly to clients subscribed with a tag filter #m containing at least one of the values of such tags and refrain from forwarding such events to clients without such filter. The value of an m tag is case-sensitive.

A client SHOULD send events containing m tags only to relays that explicitly support NIP-27. A NIP-16 supporting client MAY test for the capability by subscribing twice to a relay with and without the tag filter #m respectively and sending an ephemeral event with a random m tag of equal value.

Events

Clients targeting a multicast group MAY include an m tag with a value set to an arbitrary string representing the multicast group.

Suppose that Alice wants to multicast an event to a very special multicast group that covers specific topics. The multicast group is identified by the following string: 00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048

Alice would construct the following message and sends it to her favorite relay which happens to support multicasting:

[
  "EVENT",
  {
    "id": "<id>",
    "pubkey": "<Alice's pubkey>",
    "created_at": 1231469640,
    "content": "Let's get the conversation started",
    "tags": [
      ["m", "00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048"],
    ],
    "sig": "<sig>"
  }
]

Subscriptions

Clients subscribing to a multicast group MUST include an #m tag filter with an array of multicast groups as values.

Suppose that Bob and Charlie both share Alice's interest and would like to stay up to date. Both would construct the following message to subscribe:

[
  "REQ",
  "<subscriptionId>",
  {
    "#m": ["00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048"]
  }
]