NIP-33
>Parameterized Replaceable Events
パラメータつき上書き可能イベント(Parameterized Replaceable Events)を定義する。
これは、
NIP-16で定義されている上書き可能イベント(Replaceable Events)の拡張版。
ここでは、タグ名の次にくる文字列を「タグの値」と定義する。
パラメータつき上書き可能イベントは、kindが 30000 <= n < 40000
の範囲のイベント。
受け取り済みの最新のものよりタイムスタンプが新しい、
同じkind かつ
発行者が同じ(同じ鍵で署名されている) かつ
最初の d
タグの値が同じ
という条件を満たす パラメータつき上書き可能イベント を受け取ったら、リレーは古いイベントを破棄すべき(SHOULD)である。これにより、実質的に特定の 発行者:kind:dタグ
の組合せで問い合わせた際に返ってくるイベントが上書きされる形となる。
タイムスタンプが同じ2つのイベントがある場合、 id
が(辞書順で)小さい方を保持し、他方は破棄すべき(SHOULD)である。
d
タグそのものが存在しない場合、または d
タグの値が存在しない場合は、「値が空文字列の d
タグを持つ」とみなす。
以下はすべて「値が空文字列の d
タグを持つ」とみなされる tags
プロパティの例。
"tags":[["d",""]]
"tags":[]
"tags":[["d"]]
"tags":[["d",""],["d","not empty"]]
: 最初の d
タグのみを考慮するため
"tags":[["d"],["d","some value"]]
: 最初の d
タグのみを考慮するため
"tags":[["e"]]
: d
タグが存在しないため
クライアントは複数の値を持つ d
タグを用いるべきではない(SHOULD NOT)。
また、
#d
フィルタによる検索(cf.
NIP-12)を可能にするため、値がなくても
d
タグを含めるべき(SHOULD)。
参照とタグづけ
パラメータつき上書き可能イベントへのリンクをサポートするために、
NIP-19において
naddr
というコードが導入されている。
naddr
はイベント発行者の公開鍵と
d
タグ(とリレーURL)のデータを持つ。
note
で特定の投稿を参照するような仕組みがパラメータつき上書き可能イベントにも用意されているよ、という話

naddr
コードに対応するタグは次のような a
タグとなる:
["a", "<kind>:<pubkey>:<d-identifier>", "<relay url>"]
クライアントの想定挙動
リレーがこのNIPに対応しているかどうかを知るために、
NIP-11の
supported_nips
を用いるべき(SHOULD)。
このNIPに対応していないリレーにパラメータつき上書き可能イベントを送ってもよい(MAY)が、同じkindの上書き可能イベントが複数送られてくることを想定し、最新のイベントのみを使うようにすべき(SHOULD)。
d
タグによるフィルタ( #d
)を用いるべき(SHOULD)。
d
タグがない・ d
タグの値がないイベントが #d
フィルタで送られてこないことを考慮すべきで(shouldとあるが大文字でないのでどう解釈すべきか不明)、常に値を持つ d
タグを含めることが推奨される。