draft
optional
author:cameri
3つの特別なイベントがユーザープロフィール上のバッジを定義、授与、陳列するために 用いられます。
-
「バッジ定義」イベントはバッジ発行者によって発行されるバッジ (例えば
bravery
) を一意に特定する値を持つd
タグを持つ、kind30009
のパラメータ付き上書き可能イベントとして定義されます。 -
「バッジ授与」イベントは、それぞれバッジ発行者が授与したい公開鍵を指す1つ以上の
p
タグと、「バッジ定義」イベントを参照する1つのa
タグを持つkind8
イベントです。授与されたバッジは変更したり譲渡できません。 -
「プロフィールバッジ」イベントはパラメータ付きで上書き可能な、
profile_badges
値を持つd
タグを持つkind30008
イベントです。 プロフィールバッジはそれぞれ「バッジ定義」と陳列したいバッジのための「バッジ授与」を参照するa
タグとe
タグの組の順序付きリストを含みます。
以下のタグが存在しなければなりません (MUST) 。
- バッジの一意な名前を持つ
d
タグ。
以下のタグが存在してもかまいません (MAY) 。
- バッジの短い名前を持つ
name
タグ。 - バッジを表現する高解像度な画像のURLを値として持つ
image
タグ。2つ目の値は任意で、ピクセル単位でwidth
xheight
のようにして画像の寸法を指定します。バッジの推奨寸法は1024x1024ピクセルです。 - 画像のテキスト表現、バッジの意味、あるいは発行の理由を含む
description
タグ。 (MAY) image
タグが参照する画像のサムネイル版を指すURLを1つ目の値として持つ1つ以上のthumb
タグ。2つ目の値は任意で、width
xheight
ピクセルでサムネイル寸法を指定します。
以下のタグが存在しなければなりません (MUST) 。
- kind
30009
のバッジ定義イベントを参照するa
タグ。 - それぞれが授与対象の公開鍵を参照する1つ以上の
p
タグ。
1つの公開鍵に対して授与されるバッジの数は無制限です。プロフィールバッジイベントで 個々のユーザーが授与されたバッジの受け入れ・拒否、 プロフィールに陳列するバッジの順序を選択できます。
以下のタグが存在しなければなりません (MUST) 。
- 一意な識別子
profile_badges
を持つd
タグ。
以下のタグが存在してもかまいません (MAY) 。
- それぞれkind
30009
のバッジ定義とkind8
のバッジ授与を参照する、連続する0個以上のa
タグとe
タグの順序付きペア。クライアントはe
タグを含まないa
タグやその逆を無視しなければなりません (SHOULD) 。e
タグによって参照される バッジ授与イベントは同じa
タグを含むべきです。
ユーザーは (これに限定されませんが) 特定の目標やタスク、または大義に対する認識、感謝、参加、または評価としてバッジを授与されてもかまいません (MAY) 。
ユーザーは、信頼できるバッジ発行者からの名声・悪名・認識・サポートなどを意味するバッジを選んで飾ってもかまいません (MAY) 。
バッジ発行者はバッジ定義やバッジ授与をミントする際にこれらとエネルギーコストを紐づけるためにNIP-13のようにProof of Workを含めてもかまいません (MAY) 。
クライアントはユーザーに対する価値/特別性を保っていることを保証する目的でバッジ発行者 (公開鍵) をホワイトリストに登録してもかまいません (MAY) 。
バッジ画像のアスペクト比は1:1で、1024x1024の高解像度画像であることが推奨されます。
バッジのサムネイル画像の推奨寸法は512x512 (xl) ・256x256 (l) ・64x64 (m) ・32x32 (s) ・16x16 (xs)です。
クライアントはユーザーによってプロフィールバッジイベントで指定されたすべてのバッジを表示しなくてもかまいませんし、バッジ画像とサムネイルをクライアントのテーマに合うものへ置き換えてもかまいません (MAY) 。
クライアントはユーザーが選択したバッジの数と使えるスペースに応じて最も適切なバッジのサムネイルを表示するべきです (SHOULD) 。クライアントはユーザーのアクション (クリック、タップ、ホバー) に応じてバッジの高解像度画像を表示するべきです (SHOULD) 。
{
"pubkey": "alice",
"kind": 30009,
"tags": [
["d", "bravery"],
["name", "Medal of Bravery"],
["description", "Awarded to users demonstrating bravery"],
["image", "https://nostr.academy/awards/bravery.png", "1024x1024"],
["thumb", "https://nostr.academy/awards/bravery_256x256.png", "256x256"],
],
...
}
{
"id": "<badge award event id>",
"kind": 8,
"pubkey": "alice",
"tags": [
["a", "30009:alice:bravery"],
["p", "bob", "wss://relay"],
["p", "charlie", "wss://relay"],
],
...
}
Honorable Bob The Brave:
{
"kind": 30008,
"pubkey": "bob",
"tags": [
["d", "profile_badges"],
["a", "30009:alice:bravery"],
["e", "<bravery badge award event id>", "wss://nostr.academy"],
["a", "30009:alice:honor"],
["e", "<honor badge award event id>", "wss://nostr.academy"],
],
...
}