元数据

铭文可能包含CBOR 元数据, 将以数据推送的形式储存在带有标签 5的字段中. 由于数据推送的限制为520 字节 因此超过520字节的元数据必须拆分到多个标签为 5 的字段中, 然后在解码前进行连接。

元数据是人类可读的数据,并且所有元数据都将与其铭文一起展示给用户建议铭文铸造者考虑元数据展示的方式,使元数据简洁且吸引人。

元数据将按照以下方式渲染成HTML

  • null, true, false, numbers, floats, and strings are rendered as plain text.
  • 字节字符串将呈现为大写十六进制。
  • 数组将以 <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"}.

See examples for on-chain examples of inscriptions that feature this functionality.