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
  • BECH32 编码实体
  • 裸键和 ID
  • 具有额外元数据的可共享标识符
  • 例子
  • 笔记
  1. 附录1 NIP详解

NIP19

BECH32 编码实体

draft optional author:jb55 author:fiatjaf author:Semisol

该 NIP 对 BECH32 格式的字符串进行了标准化,这些字符串可用于在客户端中显示密钥、ID 和其他信息。这些格式并不意味着在核心协议中的任何地方使用,它们仅用于向用户显示、复制粘贴、共享、呈现 QR 码和输入数据。

建议以十六进制或二进制格式存储 ID 和密钥,因为这些格式更接近于核心协议必须实际使用的格式。

裸键和 ID

以防止私钥、公钥和事件 ID 之间的混淆和混合,它们都是 32 字节的字符串。具有不同前缀的 BECH32-(NOT-M)编码可用于这些实体中的每一个。

以下是可能的 BECH32 前缀:

  • npub:公钥

  • nsec:私钥

  • note:钞票 ID

示例:十六进制公钥 3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d 转换为 npub180cvv07tjdrrgpa0j7j7tmnyl2yr6yr7l8j4s3evf6u64th6gkwsyjh6w6。

密钥和 ID 的 BECH32 编码并不意味着在标准 NIP-01 事件格式或过滤器中使用,它们仅用于更人性化的显示和输入。客户端目前仍应接受十六进制和 NPUB 格式的密钥,并在内部进行转换。

具有额外元数据的可共享标识符

当共享简档或事件时,应用可以决定包括中继信息和其他元数据,使得其他应用可以更容易地定位和显示这些实体。

对于这些事件,内容是(类型-长度-值)的 TLV 二进制编码列表,其中 T 和 L 各为 1 字节( uint8 即,0-255 范围内的数字),并且 V 是由 L 指示的大小的字节序列。

以下是可能的 BECH32 前缀 TLV:

  • nprofile:NOSTR 配置文件

  • nevent:NOSTR 事件

  • nrelay:一个 NOSTR 继电器

  • naddr NOSTR 参数化可替换事件坐标(NIP-33)

这些可能的标准化 TLV 类型如下所示:

  • 0: special

  • 取决于 BECH32 前缀:

    • 因为 nprofile 它将是配置文件公钥的 32 个字节

    • 因为 nevent 它将是事件 ID 的 32 字节

    • 对于 nrelay,这是中继 URL

    • 对于 naddr,它是被引用事件的标识符( "d" 标记

  • 1: relay

  • 对于 nprofile、 nevent 和 naddr、可选地,更有可能找到实体(配置文件或事件)的中继,编码为 ASCII

  • 这可以被包括多次。

  • 2: author

  • 对于 naddr,事件的公钥的 32 个字节

  • 对于 nevent,可选地,事件的公钥的 32 个字节

  • 3: kind

  • 对于 naddr,类型为 big-endian 的 32 位无符号整数

例子

  • npub10elfcs4fr0l0r8af98jlmgdh9c8tcxjvz9qkw038js35mp4dma8qzvjptg 应解码为十六进制 7e7e9c42a91bfef19fa929e5fda1b72e0ebc1a4c1141673e2794234d86addf4e 公钥,反之亦然

  • nsec1vl029mgpspedva04g90vltkh6fvh240zqtv9k0t9af8935ke9laqsnlfe5 应解码为私钥十六进制 67dea2ed018072d675f5415ecfaed7d2597555e202d85b3d65ea4e58d2d92ffa,反之亦然

  • nprofile1qqsrhuxx8l9ex335q7he0f09aej04zpazpl0ne2cgukyawd24mayt8gpp4mhxue69uhhytnc9e3k7mgpz4mhxue69uhkg6nzv9ejuumpv34kytnrdaksjlyr9p 应解码为具有以下 TLV 项目的配置文件:

  • 公钥: 3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d

  • 继电器: wss://r.x.com

  • 继电器: wss://djbas.sadkb.com

笔记

  • 不得在 NIP-01 事件或 NIP-05 JSON 响应中使用 npub 密钥,仅支持十六进制格式。

PreviousNIP18NextNIP20

Last updated 2 years ago