NIP-10
> On "e" and "p" tags in Text Events (kind 1).
2つのタグの役割
e
p
@付き投稿を表現する
知らせたい相手の公開鍵をタグに含める
一般的に使われているが、廃止されたと見做されるべきである
フォーマット
["e", <event-id>, <relay-url>]
(NIP-01の通り)
event-id
= イベントのID
relay-url
= 参照される
イベントに関連付けられた推奨されるリレー情報。多くのクライアントが任意のフィールドとして扱う。
意味づけ
eタグなし
イベントにはリプライも参照先もない
1つのeタグ: ["e", <id>]
replyを意味する
2つのeタグ: ["e", <root-id>], ["e", <reply-id>]
1つ目は root、2つ目は reply
<root-id>
はリプライチェーンの先頭(root)のイベントのIDを示す。 <reply-id>
は返信先のイベントのIDを示す。
それ以上のeタグ: ["e", <root-id>] ["e", <mention-id>], ..., ["e", <reply-id>]
1つ目は root、最後は reply、それ以外が mention
<mention-id>
はリプライチェーンの中にあるかもしれないし、ないかもしれない。引用されているイベントを示す。
["e", <event-id>, <relay-url>, <marker>, <pubkey>]
relay-url
(推奨) = 参照される
イベントに関連付けられた推奨されるリレー情報(未設定の場合は空文字列)
marker
(任意) = 種類を表現する
root
=
スレッドの一番大元の投稿。rootイベントへの直接の返信であれば、"root"マーカーだけを使うべき。
mention
= 引用もしくはリポストされた投稿のID
なお、
NIP-18で
引用リポストの定義がある。2024/2/24にNIP-18の定義が
e
タグを使う方式から
q
タグを使う方式に変わり、食い違う状況になっている。引用リポストを行う際にはNIP-18を参照のこと。
pubkey
(推奨) = 参照されるイベントの作者の公開鍵。 relay-url
でイベントを見つけられなかった場合にOutboxモデルを利用して、ユーザの書き込み先リレーから取得するために用いる。
うまく使えば、いわゆる巻き込みRTを防げそう?

一部の人だけをpに入れることができる
pを外せば、通知を飛ばしたくないときに使そうな予感
実際の例
メンション
返信先の投稿がないため、 p
タグだけになる
_.json"tags": ["p", "96203d66276e3214ea93b6c78a577c3c9a7279f9ee7e51b22f3b8c17643a819c"]
返信
_.json"tags": [
// 返信先の投稿
// 最初の返信の場合、replyでなくrootを使う
["e", "555f1a..(中略)..bb64e", "", "root"],
// 返信する相手(通知したい相手)
["p","96203d66276e3214ea93b6c78a577c3c9a7279f9ee7e51b22f3b8c17643a819c"]
]
スレッド
_.json "tags": [
// root = スレッドの根っことなる投稿
["e","555f1a..(中略)..bb64e", "", "root"],
// reply = 返信先 = スレッド内の別の投稿
["e","42bc59..(中略)..03df4", "", "reply"],
// 返信する相手(通知したい相手)
["p","96203d66276e3214ea93b6c78a577c3c9a7279f9ee7e51b22f3b8c17643a819c"]
]