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,并且 notenpub nprofilenevent 是事件标签的等价物(即, 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 具有值的标记。

Last updated