Nostr CN
  • 什么是NOSTR
    • Nostr 简介
    • Nostr可以做什么
  • 如何快速加入NOSTR
    • 如果你是程序员
    • 如果你不是程序员
  • 附录1 NIP详解
    • NIP01
    • NIP02
    • NIP03
    • NIP04
    • NIP05
    • NIP06
    • NIP07
    • NIP08
    • NIP09
    • NIP10
    • NIP11
    • NIP12
    • NIP13
    • NIP14
    • NIP15
    • NIP16
    • NIP17
    • NIP18
    • NIP19
    • NIP20
    • NIP21
    • NIP22
    • NIP23
    • NIP25
    • NIP26
    • NIP28
    • NIP33
    • NIP36
    • NIP39
    • NIP40
    • NIP42
    • NIP46
    • NIP50
    • NIP51
    • NIP56
    • NIP57
    • NIP58
    • NIP65
    • NIP78
  • 附录2 中继器实现
  • 附录3 客户端实现
Powered by GitBook
On this page
  • 参数化可替换事件
  • 实施
  • 引用和标记
  • 客户行为
  1. 附录1 NIP详解

NIP33

参数化可替换事件

draft optional author:Semisol author:Kukks author:Cameri author:Giszmo

该 NIP 添加了一个新的事件范围,允许替换具有相同 d 标签和种类的事件,而不像 NIP-16 仅替换为种类。

实施

标签的值定义为标签名称后标签的第一个参数。

A参数化可替换事件被定义为具有种类 30000 <= n < 40000 的事件。在接收到具有比当前已知的具有相同种类和第一 d 标签值的最新可替换事件更新的时间戳的参数化可替换事件时,应当丢弃旧事件并用较新事件替换。缺少或 d 没有值的标记应被解释为等同于值为空字符串的 d 标记。来自同一作者的事件与以下 tags 任何一项相互替换:

  • “标签”:[[“D ”,“”]

  • "tags":[]:具有空值的隐式 d 标记

  • "tags":[["d"]]:隐式空值 ""

  • "tags":[["d",""],["d","not empty"]]:仅考虑第一个 d 标记

  • "tags":[["d"],["d","some value"]]:仅考虑第一个 d 标记

  • "tags":[["e"]]:与无标记相同

  • "tags":[["d","","1"]]:只考虑第一个值( "")

客户端不应使用 d 具有多个值的标记,并且即使标记没有允许使用 #d 筛选器进行查询的值,也应包含该 d 标记。

引用和标记

通常(根据 NIP-01、NIP-12) "p",标签用于引用公钥, "e" 标签用于引用事件 ID,并且 note、 npub nprofile 或 nevent 是事件标签的等价物(即, nprofile 通常被转换为标签 ["p", "<event hex id>", "<relay url>"])。

为了支持到参数化可替换事件的链接, naddr 在 NIP-19 上引入了代码。它包括事件作者和 d 标记(和中继)的公钥,以便可以找到引用的公钥和 d 标记的组合。

naddr 代码中 tags 的等效项是标记 "a",由 ["a", "<kind>:<pubkey>:<d-identifier>", "<relay url>"] 组成。

客户行为

客户端应使用该 supported_nips 字段来了解中继是否支持此 NIP.客户端可以向可能不支持此 NIP 的中继发送参数化可替换事件,并且客户端查询应为中继发送多个事件做好准备,并且应使用最新的事件,并建议发送 #d 标签过滤器。客户端应该考虑到这样一个事实,即丢失的 d 标记或没有值的标记不会在标记过滤器中返回,并且建议客户端始终包含 d 具有值的标记。

PreviousNIP28NextNIP36

Last updated 2 years ago