nostr-jp / nips-ja

nostr-protocol/nipsの和訳
42 stars 18 forks source link
nostr

NIPs

NIPsは、Nostr Implementation Possibilitiesの略称である。

本文書は、Nostr互換のリレーおよびクライアントソフトウェアによって実装されうるものを文書化するために存在している。



仕様一覧

Event Kinds

kind description NIP
0 メタデータ 01
1 短文ノート 01
2 推奨リレー 01 (deprecated)
3 フォロー 02
4 暗号化されたダイレクトメッセージ 04
5 削除イベント 09
6 リポスト 18
7 リアクション 25
8 バッジ・表彰 58
9 Group Chat Message 29
10 Group Chat Threaded Reply 29
11 Group Thread 29
12 Group Thread Reply 29
13 Seal 59
16 汎用リポスト 18
40 チャンネル作成 28
41 チャンネルメタデータ 28
42 チャンネルメッセージ 28
43 チャンネル投稿ミュート 28
44 チャンネルユーザミュート 28
1021 Bid 15
1022 Bid confirmation 15
1040 OpenTimestamps 03
1059 Gift Wrap 59
1063 ファイルメタデータ 94
1311 ライブチャットメッセージ 53
1617 Patches 34
1621 Issues 34
1622 Replies 34
1971 問題トラッカー nostrocket
1984 通報 56
1985 ラベル 32
4550 コミュニティ投稿の承認 72
5000-5999 ジョブ要求 90
6000-6999 ジョブ結果 90
7000 ジョブフィードバック 90
9000-9030 Group Control Events 29
9041 Zap Goal 75
9734 Zap要求 57
9735 Zap 57
9802 ハイライト 84
10000 ミュートリスト 51
10001 ピン留めリスト 51
10002 リレーリストメタデータ 65
10003 ブックマークリスト 51
10004 コミュニティリスト 51
10005 パブリックチャットリスト 51
10006 ブロック済みリレーリスト 51
10007 検索リレーリスト 51
10009 User groups 51, 29
10015 興味・関心リスト 51
10030 ユーザー絵文字リスト 51
10096 ファイルストレージサーバーリスト 96
13194 ウォレット情報 47
21000 Lightning Pub RPC Lightning.Pub
22242 クライアント認証 42
23194 ウォレット要求 47
23195 ウォレット応答 47
24133 Nostr Connect 46
27235 HTTP認証 98
30000 フォローセット 51
30001 汎用リスト 51
30002 リレーセット 51
30003 ブックマークセット 51
30004 キュレーションセット 51
30008 プロフィールバッジ 58
30009 バッジ定義 58
30015 興味・関心セット 51
30017 Create or update a stall 15
30018 Create or update a product 15
30019 Marketplace UI/UX 15
30020 Product sold as an auction 15
30023 長文投稿 23
30024 長文投稿の下書き 23
30030 絵文字セット 51
30063 Release artifact sets 51
30078 アプリケーション固有データ 78
30311 ライブイベント 53
30315 ユーザーステータス 38
30402 Classified Listing 99
30403 Draft Classified Listing 99
30617 Repository announcements 34
31922 日付指定のカレンダーイベント 52
31923 時刻指定のカレンダーイベント 52
31924 カレンダー 52
31925 要返信のカレンダーイベント 52
31989 推奨ハンドラ 89
31990 ハンドラ情報 89
34550 Community Definition 72
39000-9 Group metadata events 29

メッセージ型

クライアントからリレーへ

type 説明 NIP
EVENT イベントの配信 01
REQ イベントの要求と新規更新の購読 01
CLOSE 既存の購読の中止 01
AUTH 認証イベント 42
COUNT イベント計数要求 45

リレーからクライアントへ

type description NIP
EOSE クライアントへのすべての保存済みイベントの送信完了通知 01
EVENT クライアントから要求されたイベントの送信 01
NOTICE クライアントへの人間可読なメッセージ 01
OK クライアントへのイベント配信成功通知 01
CLOSED クライアントへの購読終了とその理由の通知 01
AUTH 認証チャレンジの送信 42
COUNT 要求されたイベントの計数結果 45

新しいイベント種別(kind)を含むNIPsを提案する場合は、これらのリストも更新すること。

標準化済みタグ

タグ名 その他パラメータ NIP
e イベントID (hex) relay URL, marker 01, 10
p 公開鍵 (hex) relay URL, petname 01, 02
a coordinates to an event relay URL 01
d 識別子 -- 01
g ジオハッシュ -- 52
i アイデンティティ proof 39
k 種別(kind)番号 (string) -- 18, 25, 72
l ラベル, ラベル名前空間 annotations 32
L ラベル名前空間 -- 32
m MIME type -- 94
q イベントID (hex) relay URL 18
r 参照 (URL, etc) petname
r リレーURL marker 65
t ハッシュタグ --
alt 概要 -- 31
amount 文字列化されたミリサトシ -- 57
bolt11 bolt11 インボイス -- 57
challenge チャレンジ文字列 -- 42
client 名前, アドレス relay URL 89
content-warning 理由 -- 36
delegation 公開鍵, 条件, 委任トークン -- 26
description インボイス/バッジの説明 -- 57, 58
emoji ショートコード, 画像 URL -- 30
q イベントID (hex) relay URL 18
r 参照 (URL, etc) petname
r リレーURL marker 65
t ハッシュタグ --
alt 概要 -- 31
amount 文字列化されたミリサトシ -- 57
bolt11 bolt11 invoice -- 57
challenge チャレンジ文字列 -- 42
client 名前, アドレス relay URL 89
clone git clone URL -- 34
content-warning 理由 -- 36
delegation 公開鍵, 条件, 委任トークン -- 26
description インボイス/バッジの説明 -- 34, 57, 58
emoji ショートコード, 画像 URL -- 30
encrypted -- -- 90
expiration unix timestamp (string) -- 40
goal イベントID (hex) relay URL 75
image 画像URL   dimensions in pixels 23, 58
imeta インラインメタデータ -- 92
lnurl bech32 encoded lnurl -- 57
location 場所文字列 -- 52, 99
name 名前 -- 58
nonce 乱数 -- 13
preimage bolt11 インボイスのハッシュ -- 57
price 値段 currency, frequency 99
proxy 外部ID protocol 48
published_at unix timestamp (string) -- 23
relay リレーURL -- 42
relays リレーリスト -- 57
server ファイルストレージサーバーURL -- 96
subject 件名 -- 14
summary 記事の要約 -- 23
thumb バッジサムネイル dimensions in pixels 58
title 記事のタイトル -- 23
zap 公開鍵 (hex), リレー URL weight 57
location 場所文字列 -- 52, 99
name 名前 -- 34, 58
nonce 乱数 -- 13
preimage bolt11 インボイスのハッシュ -- 57
price 値段 currency, frequency 99
proxy 外部ID protocol 48
published_at unix timestamp (string) -- 23
relay リレーURL -- 42
relays リレーリスト -- 57
server ファイルストレージサーバーURL -- 96
subject 件名 -- 14
summary 記事の要約 -- 23
thumb バッジサムネイル dimensions in pixels 58
title 記事のタイトル -- 23
web webpage URL -- 34
zap 公開鍵 (hex), リレー URL weight 57

NIPsの受け入れ基準

  1. (適用可能であれば)少なくとも2つのクライアントと1つのリレーが実装しているべきである。
  2. 理にかなっている必要がある。
  3. 任意に実装可能であり、後方互換性を有するべきである: 実装しないことを選択したクライアントやリレーが、実装することを選択したクライアントやリレーと通信した際に動作を停止しないよう厳に注意しなければならない。
  4. 同じことする方法が複数あってはならない。
  5. その他のルールは必要に応じて作成する。

このリポジトリは中央集権的な要素ではありませんか?

相互運用性を向上させるために誰もが従える標準を作成し、後方互換性を損なうことなく物事を行うための1つの方法を定義する必要がある。この目的のためには誰もが同じことに同意し、それら標準の中央集権型の目録を保持すること以外に道は無い。しかし、そのような目録があるからといってNostrの分散性が損なわれることはない。中央の目録がプロトコルの要求を満たせない場合はいつでも異議を唱えることができ、他の場所に移行して他の人がメンテナンスできる。

フォークされ複数に分かれることも可能で、その際あるクライアントは一方に、別のクライアントはもう一方に、あるいは競合する両方の標準に準拠するクライアントもあるだろう。それはNostrの単純さ、開放性、相互運用性を少し損なうこととなるが、それでも短期的には全て機能するだろう。

このリポジトリへのコミット権を持っている著名なNostrソフトウェア開発者のリストがあるが、それはほとんど実用上の理由から存在している。私達が扱っているものの性質上、リポジトリの所有者はメンバーシップを取り消したり好きなように歴史を書き換えることができる。そして、それらの行為が不当であったり、悪事や邪悪なものと認識される場合、コミュニティは抗議の声を上げなければならない。

このリポジトリの仕組み

標準は2つの方法で作られる。1つは誰かがなにかを始め、他の人がそれを書き写すという方法である。2つ目は、物事を行うための1つの方法を持つという原則と後方互換性を壊すことなく複数のクライアントとプロトコル全般に利益をもたらす新しい標準のアイデアを持つ誰かがそれを書いてこのリポジトリに提出し、他の利害関係者がそれを読んでフィードバックし、ほとんどの人が合理的に同意したらその機能に関心のあるクライアントとリレーの開発者が実装に取り掛かることのできるNIPに成文化するという方法である。

物事を標準化するためにこれら2つの方法がこのリポジトリでサポートされている。後者が望ましいが、このリポジトリの外で出現した標準をNIPに成文化し、後の人が参照して簡単に理解し実装できるようにする取り組みも行われる。しかし、他の人間のシステムと同様に、標準が有害であると考えられる場合に裁量が行われることは明らかである。

破壊的変更

Breaking Changes

ライセンス

全てのNIPsはパブリックドメインである。

Contributors