Metadata

Ang iscriptions ay maaring magkaroon ng CBOR metadata, na naka-store bilang data pushes sa fields na may tag 5. Dahil limitado ang data pushes sa 520 bytes, Ang metadata na mas mahaba sa 520 byte ay dapat hatiin sa maraming tag na 5 fields, at pagkatapos ay pagsasamahin bago mag-decoding.

Ang metadata ay madaling basahin, at lahat ng metadata ay ipapakita sa user kasama ang inskripsiyon nito. Hinihikayat ang mga inscriber na isaalang-alang kung paano ang metadata ay ipapakita, at gagawing maigsi at kaakit-akit ang metadata.

Ang metadata ay nai-render sa HTML para ipakita tulad ng sumusunod:

  • null, true, false, numbers, floats, at strings ay rendered bilang isang plain text.
  • Ang Byte strings ay rendered bilang isang uppercase na hexadecimal.
  • Ang Arrays ay rendered gamit ang <ul> tags, kung saan ang mga element ay naka-wrapped sa <li> tags.
  • Maps ay rendered gamit ang <dl> tags, kung saan ang bawat key ay wrapped sa <dt> tags, at ang value nito ay naka-wrapped sa <dd> tags.
  • Tags ay rendered bilang tag , na naka-enclosed sa <sup> tag, kasunod ng value.

Ang CBOR ay isang kumplikadong spec na may maraming iba't ibang uri ng data, at maraming paraan ng na kumakatawan sa parehong data. Mga kakaibang uri ng data, gaya ng mga tag, float, at Ang mga bignum, at pag-encode tulad ng mga hindi tiyak na halaga, ay maaaring mabigong ipakita tama o sa lahat. Ang mga kontribusyon sa ord upang malunasan ito ay malugod na tinatanggap.

Halimbawa

Dahil ang CBOR ay hindi madaling basahin, sa mga halimbawang ito ay kinakatawan ito bilang JSON. Tandaan na ito ay halimbawa lamang, at ang JSON metadata ay hindi mapapakita nang tama.

Ang metadata na {"foo":"bar","baz":[null,true,false,0]} ay kasama sa isang inscription bilang:

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

At ma-rendered bilang:

<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>

Ang metadata na mas mahaba sa 520 byte ay dapat hatiin sa maraming fields:

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

Which would then be concatenated into {"very":"long","metadata":"is","finally":"done"}.

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