# NIP58

## 徽章

`draft` `optional` `author:cameri`

三个特殊事件用于定义、授予和显示用户配置文件中的徽章：

1. “徽章定义”事件被定义为参数化可替换事件 其中种类 `30009` 具有 `d` 标签，该标签具有唯一地标识由徽章发行者发布的徽章（例如 `bravery`）的值。可以更新徽章定义。
2. “徽章奖励”事件是一种 `8` 具有单个 `a` 标签引用的事件 “定义徽章”事件和一个或多个 `p` 标签，每个标签对应于徽章颁发者希望授予的每个公钥。 `a` 标记的值必须遵循中[NIP-33](/nostr-cn/fu-lu-1-nip-xiang-jie/33.md)定义的格式。授予的徽章是不可改变和不可转让的。
3. “配置文件徽章”事件定义为参数化可替换事件 带有类型 `30008` 和 `d` 带有值 `profile_badges` 的标记。配置文件徽章包含和 `e` 标记对 `a` 的有序列表，这些标记引用 `Badge Definition` 要显示的每个徽章的和 `Badge Award`。

### 徽章定义事件

必须存在以下标记：

* 使用徽章的唯一名称进行 `d` 标记。

可能存在以下标记：

* 带有徽章短名称的 `name` 标签。
* `image` 标记，其值是表示徽章的高分辨率图像的 URL.第二个值（可选）将图像的尺寸指定为 `width` X `height`（以像素为单位）。徽章建议尺寸为 1024x1024 像素。
* 一个 `description` 标记，其值可能包含 形象，徽章背后的含义，或其发行的原因。
* 一个或多个 `thumb` 标签，其第一个值是指向标签中 `image` 引用的图像的缩略图版本的 URL.第二个值（可选）将缩略图的尺寸指定为 `width` X `height`（以像素为单位）。

### 徽章奖励活动

必须存在以下标记：

* 引用 Kind `30009` Badge 定义事件的 `a` 标记。
* 一个或多个 `p` 标签引用所授予的每个公钥。

### 个人资料徽章事件

一个公钥可以获得的徽章数量是无限的。个人资料徽章事件允许个人用户接受或拒绝奖励的徽章，以及选择徽章在其个人资料上的显示顺序。

必须存在以下标记：

* 具有唯一标识符 `profile_badges` 的 `d` 标记

可能存在以下标记：

* 零个或多个有序连续对的 `a` 和 `e` 标签分别引用种类 `30009` 徽章定义和种类 `8` 徽章奖励。客户应该 忽略 `a` 没有相应的 `e` 标记，反之亦然。标签引用的 `e` 徽章奖励应包含相同 `a` 的标签。

### 动机

用户可以被授予徽章（但不限于），以表彰、感谢、参与或赞赏某一目标、任务或事业。

用户可以选择用来自他们认为有信誉的徽章发行者的名声、恶名、认可、支持等徽章来装饰他们的个人资料。

### 建议

徽章发行者可能会在铸造徽章定义或徽章奖励时提供一些工作[NIP-13](/nostr-cn/fu-lu-1-nip-xiang-jie/13.md)证明，以将其与综合能源成本相结合，从而使其对于希望收集它们的用户来说更加特别和有价值。

客户可以将徽章发行商（公钥）列入白名单，以确保他们为其用户保留有价值的/特殊的因素。

徽章图像建议宽高比为 1：1，高分辨率大小为 1024x1024 像素。

徽章缩略图建议尺寸为：512x512（XL）、256x256（L）、64x64（M）、32x32（S）和 16x16（XS）。

客户端可以选择呈现比用户在配置文件徽章事件中指定的徽章更少的徽章，或者将徽章图像和缩略图替换为适合客户端主题的图像和缩略图。

客户端应根据用户选择的徽章数量和可用空间，尝试呈现最合适的徽章缩略图。客户端应尝试在用户操作（单击、点击、悬停）时呈现高分辨率版本。

### 徽章定义事件示例

```json
{
  "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"],
  ],
  ...
}
```

### 徽章奖励事件示例

```json
{
  "id": "<badge award event id>",
  "kind": 8,
  "pubkey": "alice",
  "tags": [
    ["a", "30009:alice:bravery"],
    ["p", "bob", "wss://relay"],
    ["p", "charlie", "wss://relay"],
  ],
  ...
}
```

### 配置文件徽章事件示例

尊敬的勇者鲍勃：

```json
{
  "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"],
  ],
  ...
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://sherry-pang.gitbook.io/nostr-cn/fu-lu-1-nip-xiang-jie/58.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
