Metadata
Inscripties kunnen CBOR metadata bevatten, opgeslagen als datapunten in velden met tag 5
. Aangezien datapunten beperkt zijn tot 520 bytes, moet metadata langer dan 520 bytes worden opgesplitst in meerdere tag 5
velden, die vervolgens worden samengevoegd voordat ze worden gedecodeerd.
Metadata is leesbaar voor mensen en alle metadata wordt samen met de inscriptie aan de gebruiker getoond. Inschrijvers worden aangemoedigd om te overwegen hoe metadata zal worden weergegeven, en om metadata beknopt en aantrekkelijk te maken.
Metadata wordt als volgt naar HTML omgezet:
null
,true
,false
, Getallen, floats en strings worden weergegeven als platte tekst.- Byte-strings worden weergegeven als hexadecimale tekst in hoofdletters.
- Arrays worden weergegeven als
<ul>
-tags, waarbij elk element is ingepakt in<li>
-tags. - Kaarten worden weergegeven als
<dl>
-tags, waarbij elke sleutel is ingepakt in<dt>
-tags en elke waarde in<dd>
-tags. - Tags worden weergegeven als de tag, ingesloten in een
<sup>
-tag, gevolgd door de waarde.
CBOR is een complexe specificatie met veel verschillende datatypen en meerdere manieren om dezelfde gegevens weer te geven. Exotische datatypen, zoals tags, floats en bignums, en coderingen zoals onbepaalde waarden, kunnen mogelijk niet correct of helemaal niet worden weergegeven. Bijdragen aan ord
om dit te verbeteren, zijn welkom.
Voorbeeld
Aangezien CBOR niet leesbaar is voor mensen, wordt het in deze voorbeelden weergegeven als JSON. Houd er rekening mee dat dit alleen voor deze voorbeelden is, en dat JSON-metadata niet correct zal worden weergegeven.
De metadata {"foo":"bar","baz":[null,true,false,0]} zou in een inscriptie worden opgenomen als:
OP_FALSE
OP_IF
...
OP_PUSH 0x05 OP_PUSH '{"foo":"bar","baz":[null,true,false,0]}'
...
OP_ENDIF
En weergegeven als:
<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>
Metadata langer dan 520 bytes moet worden opgesplitst in meerdere velden:
OP_FALSE
OP_IF
...
OP_PUSH 0x05 OP_PUSH '{"very":"long","metadata":'
OP_PUSH 0x05 OP_PUSH '"is","finally":"done"}'
...
OP_ENDIF
Die vervolgens zou worden samengevoegd tot {"very":"long","metadata":"is","finally":"done"}
.
See examples for on-chain examples of inscriptions that feature this functionality.