diff options
Diffstat (limited to '53.md')
| -rw-r--r-- | 53.md | 30 |
1 files changed, 14 insertions, 16 deletions
| @@ -6,17 +6,17 @@ Live Activities | |||
| 6 | 6 | ||
| 7 | `draft` `optional` | 7 | `draft` `optional` |
| 8 | 8 | ||
| 9 | ## Abstract | ||
| 10 | |||
| 11 | Service providers want to offer live activities to the Nostr network in such a way that participants can easily logged and queried by clients. This NIP describes a general framework to advertise the involvement of pubkeys in such live activities. | 9 | Service providers want to offer live activities to the Nostr network in such a way that participants can easily logged and queried by clients. This NIP describes a general framework to advertise the involvement of pubkeys in such live activities. |
| 12 | 10 | ||
| 13 | # Live Event | 11 | ## Concepts |
| 12 | |||
| 13 | ### Live Event | ||
| 14 | 14 | ||
| 15 | A special event with `kind:30311` "Live Event" is defined as a _parameterized replaceable event_ of public `p` tags. Each `p` tag SHOULD have a **displayable** marker name for the current role (e.g. `Host`, `Speaker`, `Participant`) of the user in the event and the relay information MAY be empty. This event will be constantly updated as participants join and leave the activity. | 15 | A special event with `kind:30311` "Live Event" is defined as a _parameterized replaceable event_ of public `p` tags. Each `p` tag SHOULD have a **displayable** marker name for the current role (e.g. `Host`, `Speaker`, `Participant`) of the user in the event and the relay information MAY be empty. This event will be constantly updated as participants join and leave the activity. |
| 16 | 16 | ||
| 17 | For example: | 17 | For example: |
| 18 | 18 | ||
| 19 | ```js | 19 | ```json |
| 20 | { | 20 | { |
| 21 | "kind": 30311, | 21 | "kind": 30311, |
| 22 | "tags": [ | 22 | "tags": [ |
| @@ -38,7 +38,7 @@ For example: | |||
| 38 | ["relays", "wss://one.com", "wss://two.com", ...] | 38 | ["relays", "wss://one.com", "wss://two.com", ...] |
| 39 | ], | 39 | ], |
| 40 | "content": "", | 40 | "content": "", |
| 41 | ...other fields | 41 | ... |
| 42 | } | 42 | } |
| 43 | ``` | 43 | ``` |
| 44 | 44 | ||
| @@ -52,7 +52,7 @@ Live Activity management clients are expected to constantly update `kind:30311` | |||
| 52 | 52 | ||
| 53 | The activity MUST be linked to using the [NIP-19](19.md) `naddr` code along with the `a` tag. | 53 | The activity MUST be linked to using the [NIP-19](19.md) `naddr` code along with the `a` tag. |
| 54 | 54 | ||
| 55 | ## Proof of Agreement to Participate | 55 | ### Proof of Agreement to Participate |
| 56 | 56 | ||
| 57 | Event owners can add proof as the 5th term in each `p` tag to clarify the participant's agreement in joining the event. The proof is a signed SHA256 of the complete `a` Tag of the event (`kind:pubkey:dTag`) by each `p`'s private key, encoded in hex. | 57 | Event owners can add proof as the 5th term in each `p` tag to clarify the participant's agreement in joining the event. The proof is a signed SHA256 of the complete `a` Tag of the event (`kind:pubkey:dTag`) by each `p`'s private key, encoded in hex. |
| 58 | 58 | ||
| @@ -60,30 +60,28 @@ Clients MAY only display participants if the proof is available or MAY display p | |||
| 60 | 60 | ||
| 61 | This feature is important to avoid malicious event owners adding large account holders to the event, without their knowledge, to lure their followers into the malicious owner's trap. | 61 | This feature is important to avoid malicious event owners adding large account holders to the event, without their knowledge, to lure their followers into the malicious owner's trap. |
| 62 | 62 | ||
| 63 | # Live Chat Message | 63 | ### Live Chat Message |
| 64 | 64 | ||
| 65 | Event `kind:1311` is live chat's channel message. Clients MUST include the `a` tag of the activity with a `root` marker. Other Kind-1 tags such as `reply` and `mention` can also be used. | 65 | Event `kind:1311` is live chat's channel message. Clients MUST include the `a` tag of the activity with a `root` marker. Other Kind-1 tags such as `reply` and `mention` can also be used. |
| 66 | 66 | ||
| 67 | ```js | 67 | ```json |
| 68 | { | 68 | { |
| 69 | "id": "<32-bytes lowercase hex-encoded SHA-256 of the the serialized event data>", | ||
| 70 | "pubkey": "<32-bytes lowercase hex-encoded public key of the event creator>", | ||
| 71 | "created_at": "<Unix timestamp in seconds>", | ||
| 72 | "kind": 1311, | 69 | "kind": 1311, |
| 73 | "tags": [ | 70 | "tags": [ |
| 74 | ["a", "30311:<Community event author pubkey>:<d-identifier of the community>", "<Optional relay url>", "root"], | 71 | ["a", "30311:<Community event author pubkey>:<d-identifier of the community>", "<Optional relay url>", "root"], |
| 75 | ], | 72 | ], |
| 76 | "content": "Zaps to live streams is beautiful." | 73 | "content": "Zaps to live streams is beautiful.", |
| 74 | ... | ||
| 77 | } | 75 | } |
| 78 | ``` | 76 | ``` |
| 79 | 77 | ||
| 80 | # Use Cases | 78 | ## Use Cases |
| 81 | 79 | ||
| 82 | Common use cases include meeting rooms/workshops, watch-together activities, or event spaces, such as [live.snort.social](https://live.snort.social) and [nostrnests.com](https://nostrnests.com). | 80 | Common use cases include meeting rooms/workshops, watch-together activities, or event spaces, such as [live.snort.social](https://live.snort.social) and [nostrnests.com](https://nostrnests.com). |
| 83 | 81 | ||
| 84 | # Example | 82 | ## Example |
| 85 | 83 | ||
| 86 | Live Streaming | 84 | ### Live Streaming |
| 87 | 85 | ||
| 88 | ```json | 86 | ```json |
| 89 | { | 87 | { |
| @@ -107,7 +105,7 @@ Live Streaming | |||
| 107 | } | 105 | } |
| 108 | ``` | 106 | ``` |
| 109 | 107 | ||
| 110 | Live Streaming chat message | 108 | ### Live Streaming chat message |
| 111 | 109 | ||
| 112 | ```json | 110 | ```json |
| 113 | { | 111 | { |