跳到主要内容

元数据

铭文中可能包含以标签 5 存储的 CBOR 元数据,作为数据推送的形式。由于数据推送的限制为 520 字节,超过 520 字节的元数据必须分割成多个标签 5 字段,然后在解码之前进行拼接。

元数据是可读的,并且所有的元数据都将与铭文一起显示给用户。鼓励铭文作者考虑元数据的显示方式,并使元数据简洁而有吸引力。

元数据在 HTML 中的显示方式如下:

  • nulltruefalse、数字、浮点数和字符串将被渲染为纯文本。
  • 字节字符串将以大写十六进制形式呈现。
  • 数组将以 <ul> 标签呈现,每个元素都包裹在 <li> 标签中。
  • 映射将以 <dl> 标签呈现,每个键都包裹在 <dt> 标签中,每个值都包裹在 <dd> 标签中。
  • 标签将以标签值包裹在 <sup> 标签中的形式呈现。

CBOR 是一个复杂的规范,具有许多不同的数据类型和多种表示相同数据的方式。特殊的数据类型,如标签、浮点数和大整数,以及不确定值的编码,可能无法正确或完全显示。欢迎对 ord 的贡献来解决这个问题。

示例

由于 CBOR 不可读,这些示例中将其表示为 JSON。请记住,这仅适用于这些示例,JSON 元数据将 无法 正确显示。

元数据 {"foo":"bar","baz":[null,true,false,0]} 将作为以下形式包含在铭文中:

OP_FALSE
OP_IF
...
OP_PUSH 0x05 OP_PUSH '{"foo":"bar","baz":[null,true,false,0]}'
...
OP_ENDIF

并且呈现为:

<dl>
...
<dt>metadata</dt>
<dd>
<dl>
<dt>foo</dt>
<dd>bar</dd>
<dt>baz</dt>
<dd>
<ul>
<li>null</li>
<li>true</li>
<li>false</li>
<li>0</li>
</ul>
</dd>
</dl>
</dd>
...
</dl>

超过 520 字节的元数据必须分割成多个字段:

OP_FALSE
OP_IF
...
OP_PUSH 0x05 OP_PUSH '{"very":"long","metadata":'
OP_PUSH 0x05 OP_PUSH '"is","finally":"done"}'
...
OP_ENDIF

然后将其拼接为 {"very":"long","metadata":"is","finally":"done"}