NIP-53
Live Activites
Youtubeのライブ配信(配信+チャット)のような場をNostr上で実現するための仕様。 概要
サービスプロバイダは、クライアントによって参加者を簡単に記録・クエリできるような方法で、Nostrネットワークにライブアクティビティを提供したい。このNIPは、そのようなライブアクティビティに対する公開鍵(を持つ人)の参加を公表するための一般的なフレームワークについて記述するものである。
ライブイベント
kind: 30311を持つ特別なイベント「ライブイベント」を、パラメータつき上書き可能イベントとして定義する。それぞれのpタグは、イベントに参加しているユーザの現在のロール(例: Host, Speaker, Participant)を表す表示可能な名前を持つべきである(SHOULD)。リレー情報は空でもよい(MAY)。このイベントはアクティビティに参加者が参加・退出するたびに、絶えず更新される。
例えば:
code:30311.json
{
"kind": 30311,
"tags": [
],
"content": "",
...other fields
}
それぞれのアクティビティに対して、区別可能なdタグを用いるべきである。他のすべてのタグは任意である。
(サービス)プロバイダは参加者リストを小さく(例: 1000人以下)保つべきであり(SHOULD)、制限に達した際はどの参加者をイベントに参加させるかを選択すべきである(SHOULD)。クライアントは(参加者の)総覧を期待すべきではない。アクティビティが終了したら、このイベントを削除してもよいし、アクティビティを総括し非同期的なコンテンツ(例: イベントの記録)を提供するためにイベントを更新してもよい。
クライアントはkind: 30311のイベントを全般的に、または所定のフォローリストとステータスに絞り込んで購読することが期待される。クライアントは、アクティビティの参加者のロールやアクティビティに参加するためのアクセスポイントを表示してもよい(MAY)。
ライブアクティビティ管理用クライアントはkind: 30311のイベントを(ライブ)イベントが開催されている間じゅう絶えず更新することが期待される。クライアントはstatusがliveのイベントのうち、(statusが)endedに更新されないまま1時間が経過したものを終了したとみなしてもよい(MAY)。startsとendsのタイムスタンプは、それぞれstatusがliveになったとき、liveでなくなったときに更新されるべきである(SHOULD)。
訳注: この段落の2文目(Clients MAY choose to consider...)にはおそらく言葉の欠落がある(イベントをどのようにみなすかを説明する言葉が抜けている)ため、適当に補った
アクティビティは、NIP-19のnaddrコードとaタグを併用してリンクされなければならない(MUST)。 参加承諾の証明
イベント主催者は各pタグの5番目の要素として、参加者がイベントへの参加を承諾したのを明確にするための証明を追加できる。イベントを指すaタグ(kind:pubkey:dTag)全体のSHA256ハッシュに対する各p(参加者)の秘密鍵による署名を16進文字列にエンコードしたものを証明とする。
クライアントは、証明がある参加者のみを表示してもよい(MAY)し、証明がない参加者を「招待された」ものとして表示してもよい(MAY)。
この機能は、悪意のあるイベント主催者が、有名人(large account holders)を、本人の知らないところで勝手にイベントに参加させ、その人のフォロワーを主催者の罠におびき寄せるといった行為を防ぐために重要である。
ライブチャットメッセージ
kind:1311のイベントはライブチャットのチャンネルメッセージを表す。クライアントは、アクティビティを指すaタグをrootマーカーつきで含めなければならない(MUST)。replyやmentionといった、他のkind:1のタグ(向けのマーカー)を用いることもできる。
code:1311.json
{
"id": "<32-bytes lowercase hex-encoded SHA-256 of the the serialized event data>",
"pubkey": "<32-bytes lowercase hex-encoded public key of the event creator>",
"created_at": "<Unix timestamp in seconds>",
"kind": 1311,
"tags": [
],
"content": "Zaps to live streams is beautiful."
}
使用例
よくある使用例としては、ミーティングルーム/ワークショップ、動画鑑賞会(watch-together activities)、live.snort.social や nostrnests.comのようなイベントスペースが挙げられる。 例