NIP-29 グループ

NIP-29 グループ:メンバーのみが書き込めるクローズドなチャット空間。モデレーションイベントとリレー署名付きスナップショットでグループの状態を管理します。

グループを有効化する

  1. nostrfy genkey を実行して relay.private_key を設定します (必須 — これがないとグループメタデータは生成されません)。
  2. リレーを再起動します。

グループの仕組み

グループはイベントによって作成・管理されます。これらのモデレーションイベントから、リレーはクライアントが表示に使うリレー署名付きスナップショットを生成します:

イベント説明
kind:9007グループを作成(作成者が管理者になる)
kind:9000 / 9001メンバーを追加(ロール付き)/メンバーを削除
kind:9002メタデータを編集(名前、説明、公開/非公開など)
kind:9005イベントを削除(モデレーション)
kind:9008グループを削除(保存されたイベントは消去される)
kind:9009招待コードを作成
kind:9010ピン留めリストを更新
kind:9021 / 9022参加リクエスト/退出リクエスト

リレー署名付きスナップショット

  • kind:39000 — グループメタデータ(名前、可視性設定など)
  • kind:39001 — 管理者リスト
  • kind:39002 — メンバーリスト
  • kind:39005 — ピン留めされたイベント

グループの可視性設定

タグ意味
privateメンバーのみがメッセージを読める
restrictedメンバーのみが書き込める
hiddenメタデータは非メンバーに非表示になります
closed参加リクエストは自動承認されない(招待コードが必要)
livekitグループに LiveKit 音声/ビデオルームがある

サブグループ

グループは階層化できます — parent/child タグでネストします。循環は自動的に拒否されます。

グループからの退出
kind:9022 を使えば、最後の管理者を含むあらゆるメンバーが退出でき、退出したメンバーは自動的に削除されます。最後の管理者が退出すると、グループには管理者がいなくなります。事前に別の管理者を指名するか、kind:9008 でグループを削除するか、リレー自身の鍵(relay.private_key、NIP-11 の self pubkey)でモデレーションイベントに署名して管理者不在のグループを復旧してください。手順は トラブルシューティング を参照してください。