-
@ yugo
2025-01-19 04:53:01NIP-28 と NIP-29 はどちらも「特定の集まりに向けたチャット機能」を提供する点では似ているが、根本的に異なるのは「参加や閲覧に制限がない誰でも書き込める公開チャンネル(NIP-28)」か「メンバーシップや権限・ロールを管理できるグループ(NIP-29)」かというところだ。
以下の3点に分けて説明する。 1. 参加や書き込みの自由度 2. 管理やモデレーションの主体 3. ユースケース
参加や書き込みの自由度 - NIP-28は誰でも書き込める設計 - Public Chatはその名の通りパブリックであることが前提で、メンバーシップの概念もない。参加や閲覧に制限がないため、誰でも自由に書き込むことができる。 - NIP-29はロールやメンバーシップがある - NIP-29にはメンバーシップや権限管理(ロール)の概念があり、書き込むにはグループに参加する必要がある。 - 公開/非公開、オープン参加/承認制などの設定をリレー側で柔軟に切り替えられる。そのため、publicタグを設定すれば読むだけは誰でもできるようにする一方でclosedの場合は書き込みに承認が必要…といった柔軟なルール設定ができる。 - また、管理者によるユーザーの追加・削除 (kind:9000, kind:9001) や、リレー自身によるグループ設定 (kind:39000 など) がある。Telegram や Slack の「特定メンバーだけ書き込める」「管理者が追加や除名を行う」ようなイメージ。
管理やモデレーションをリレー/クライアントのどちらで行うか - NIP-28: クライアント側で軽微なモデレーションを行う - NIP-28では、リレーはあくまで Nostr イベントを中継しているだけで、メッセージを消す・投稿者を締め出す等の強制管理は想定していない。 - そのため、リレー側が強制的に検閲するわけではなく、クライアントが主にモデレーションを実行する。 - 例えば、Kind 43(Hide message)や Kind 44(Mute user)を使って「誰のメッセージを隠すか/どのユーザーをミュートするか」をユーザー単位・クライアント単位で制御することができ、コンテンツの見え方をコントロールするのはクライアントとユーザーの自由度が高い。 - NIP-29: リレーがグループを管理する - 逆に、NIP-29はリレーがグループのルールを保持し、それに違反する投稿をブロックしたり、参加ユーザーを追加・除名したりする仕組みがある。 - 複数のリレーに同じグループが存在する(フォークされる)ケースもあり得るが、どのリレーも独自に「このグループ ID ならこういうルール」と管理を行うことが可能。 - そのため、「どの pubkey(ユーザー)が投稿可か」や「グループ名・メタデータ・管理権限はどうなっているか」をリレーのルールで厳密に管理・制御することができる。 - 未管理(unmanaged)状態も許容 リレーが NIP-29 を実装していなくても"unmanaged"なグループとして動作し、誰でも参加可能になる。そこから管理されたmanagedグループに移行することもできる。
ユースケースの違い - NIP-28: オープンなコミュニティ向け 誰でも入れて、タイムライン的にコメントしていけるTelegramやDiscordのような「誰でも閲覧・参加できるチャンネル」を、分散・検閲耐性をもった形で実現したい場合。
- NIP-29: クローズド or ロール付きのコミュニティ向け
Slack やプライベート Discord、あるいは有料購読者限定グループのように「メンバーシップ制」や「誰が管理者か」「参加申請をどう処理するか」をきっちり運用したい場合。
また、複数リレーで運用しつつ、どこかが落ちても他が存続するといった分散運用も想定できる。
まとめ - NIP-28 (Public Chat) - 「公開チャット」を最速で作るのに特化し、チャンネル構造とメッセージ投稿・簡易的なクライアント側モデレーションだけを定義する。 - リレーに追加のルール実装を強いないため、気軽にどこでも利用できる。 - 反面、「誰が書き込みできるか」などの参加制限は標準機能としては備わっていない。 - NIP-29 (Relay-based Groups) - リレーがグループ管理を主導し、メンバーシップ制や権限・ロールをしっかり運用できるようにする。 - 公開/非公開、オープン参加/承認制などの設定をリレー側で柔軟に切り替えられる。 - 反面、各リレーがこの NIP-29 に対応していないとメンバー権限の管理やグループのクローズド運用はできない。 - 用途に応じて、単純に「みんなで雑談する公開チャンネル」が欲しいのであれば NIP-28 を、メンバー制のプライベートグループを作りたい場合は NIP-29 を選ぶ、といった使い分けになる。
- NIP-29: クローズド or ロール付きのコミュニティ向け
Slack やプライベート Discord、あるいは有料購読者限定グループのように「メンバーシップ制」や「誰が管理者か」「参加申請をどう処理するか」をきっちり運用したい場合。