Skip to content

Latest commit

 

History

History
126 lines (90 loc) · 5.86 KB

58.md

File metadata and controls

126 lines (90 loc) · 5.86 KB

NIP-58

バッジ

draft optional author:cameri

3つの特別なイベントがユーザープロフィール上のバッジを定義、授与、陳列するために 用いられます。

  1. 「バッジ定義」イベントはバッジ発行者によって発行されるバッジ (例えばbravery) を一意に特定する値を持つdタグを持つ、kind 30009のパラメータ付き上書き可能イベントとして定義されます。

  2. 「バッジ授与」イベントは、それぞれバッジ発行者が授与したい公開鍵を指す1つ以上のpタグと、「バッジ定義」イベントを参照する1つのaタグを持つkind 8イベントです。授与されたバッジは変更したり譲渡できません。

  3. 「プロフィールバッジ」イベントはパラメータ付きで上書き可能な、 profile_badges値を持つdタグを持つkind 30008イベントです。 プロフィールバッジはそれぞれ「バッジ定義」と陳列したいバッジのための「バッジ授与」を参照するaタグとeタグの組の順序付きリストを含みます。

バッジ定義イベント

以下のタグが存在しなければなりません (MUST) 。

  • バッジの一意な名前を持つdタグ。

以下のタグが存在してもかまいません (MAY) 。

  • バッジの短い名前を持つnameタグ。
  • バッジを表現する高解像度な画像のURLを値として持つimageタグ。2つ目の値は任意で、ピクセル単位でwidthxheightのようにして画像の寸法を指定します。バッジの推奨寸法は1024x1024ピクセルです。
  • 画像のテキスト表現、バッジの意味、あるいは発行の理由を含む descriptionタグ。 (MAY)
  • imageタグが参照する画像のサムネイル版を指すURLを1つ目の値として持つ1つ以上のthumbタグ。2つ目の値は任意で、widthxheightピクセルでサムネイル寸法を指定します。

バッジ授与イベント

以下のタグが存在しなければなりません (MUST) 。

  • kind 30009のバッジ定義イベントを参照するaタグ。
  • それぞれが授与対象の公開鍵を参照する1つ以上のpタグ。

プロフィールバッジイベント

1つの公開鍵に対して授与されるバッジの数は無制限です。プロフィールバッジイベントで 個々のユーザーが授与されたバッジの受け入れ・拒否、 プロフィールに陳列するバッジの順序を選択できます。

以下のタグが存在しなければなりません (MUST) 。

  • 一意な識別子profile_badgesを持つdタグ。

以下のタグが存在してもかまいません (MAY) 。

  • それぞれkind 30009のバッジ定義とkind 8のバッジ授与を参照する、連続する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"],
  ],
  ...
}