NIP-89
#NIP
Recommended Application Handlers
原文: https://github.com/nostr-protocol/nips/blob/master/89.md
不明なkindのイベントを扱えるアプリケーションを発見するための仕組みを定義するNIP。
/icons/hr.icon
翻訳
このNIPは、未知のイベントの種類 (kind)を扱えるアプリケーションを見つけるためのkind:31989とkind:31990を説明する。
理由
Nostrの発見可能性と透過的なイベントとのインタラクションは、Nostrの最も興味深く目新しい仕組みの一つである。このNIPはクライアントやイベント種別を跨いだインタラクションがスムーズであることを保証するために、クライアントが特定のイベント種別を持つイベントを発見するためのシンプルな方法を提供する。
登場人物
このワークフローでは3つの登場人物が登場する。
アプリケーション: 特定のイベントの種類を取り扱うことができる(アプリケーションは個別のエンティティである必要はなく、ユーザAと同じ公開鍵であってもよいことに注意)
kind:31990を投稿する。どのようにそのアプリにリダイレクトすべきかを説明する。
ユーザA: 特定のイベント種別を扱うことのできるアプリを推奨する。
kind:31989を投稿する。
ユーザB: 特定のイベント種別を扱うことのできるアプリの推奨を探す。
kind:31989を問い合わせ、結果に基づいて kind:31990を問い合わせする
イベント
推奨イベント
code:_.json
{
"kind": 31989,
"pubkey": <recommender-user-pubkey>,
"tags": [
"d", <supported-event-kind> ,
"a", "31990:app1-pubkey:<d-identifier>", "wss://relay1", "ios" ,
"a", "31990:app2-pubkey:<d-identifier>", "wss://relay2", "web"
]
}
kind:31989のdタグには、このイベントが推奨するサポートされているイベント種別を含める。
ひとつのkind:31989に複数のaタグがあってもよい。
タグの2つ目の値はリレーヒントであるべきである(SHOULD)。タグの3つ目の値はこの推奨が適用できるプラットフォームであるべきである(SHOULD)。
ハンドラー情報
code:_.json
{
"kind": 31990,
"pubkey": <pubkey>,
"content": "<optional-kind:0-style-metadata>",
"tags": [
"d", <random-id> ,
"k", <supported-event-kind> ,
[ "web", "https://..../a/<bech32>", "nevent" ],
[ "web", "https://..../p/<bech32>", "nprofile" ],
[ "web", "https://..../e/<bech32>" ],
"ios", ".../<bech32>"
]
}
contentは、任意の(NIP-01で説明されている)set_metadataのような文字列化されたJSONオブジェクトである。このcontentはkind:31990を作成する公開鍵がアプリケーションのものではない場合に便利である。もしcontentが空の場合には、pubkeyのkind:0をアプリケーションの情報を表示するために使うべきである(例えば、name, picture, web, LUD16など)。
#WIP