NIP-58 为 Nostr 定义了一个徽章系统。一个事件定义徽章,另一个授予徽章,第三个让接收者选择是否在其个人资料上展示。

工作原理

徽章定义(Kind 30009)

发行者创建徽章定义作为可寻址事件:

{
  "kind": 30009,
  "tags": [
    ["d", "early-adopter"],
    ["name", "Early Adopter"],
    ["description", "Joined before 2024"],
    ["image", "https://example.com/badge.png"],
    ["thumb", "https://example.com/badge-thumb.png"]
  ]
}

徽章授予(Kind 8)

发行者向一个或多个用户授予徽章:

{
  "kind": 8,
  "tags": [
    ["a", "30009:issuer-pubkey:early-adopter"],
    ["p", "recipient-pubkey"]
  ]
}

徽章展示(Kind 30008)

用户选择在个人资料上展示哪些徽章:

{
  "kind": 30008,
  "tags": [
    ["d", "profile_badges"],
    ["a", "30009:issuer-pubkey:early-adopter"],
    ["e", "award-event-id"]
  ]
}

在个人资料徽章事件中,客户端应将 ae 标签作为有序对读取。没有对应授予事件的 a 标签,或没有对应徽章定义的 e 标签,都应被忽略。

用例

  • 社区成员资格:展示群组或社区的成员身份
  • 成就:认可贡献或里程碑
  • 证明:第三方为某个角色或身份做出担保
  • 访问控制:使用发行者支持的徽章来限制功能或空间的访问

信任模型

徽章的价值完全取决于发行者的声誉。任何人都可以创建徽章,因此客户端应:

  • 显著展示发行者信息
  • 允许用户按可信发行者过滤
  • 不要在没有上下文的情况下将徽章视为权威

徽章授予是不可变且不可转让的。这使得徽章适用于证明和认可,但不适合作为代币化意义上的可移植凭证。

实现说明

徽章定义是可寻址事件,因此发行者可以随时间更新徽章图片或描述,而无需更改徽章标识符。授予事件是将接收者与该定义在某一时间点绑定的持久记录。

客户端在展示方面也有自由度。规范明确允许客户端展示比用户列出的更少的徽章,并选择适合可用空间的缩略图大小。


主要来源:

提及于:

另请参阅: