KRC-20 and KRC-721 tokens have carried metadata for a year: KRC-20 has ticker and decimals, KRC-721 has the ERC-721 shape (name, description, image, attributes, with images pinned by ipfs). Covenant tokens are the one Kaspa token type with none of it. KCC20 keeps to accounting and transfer, which is right, and its Descriptor artifact carries template identity and state layout for tooling, but no human metadata: no name, ticker, decimals, or art. So an aggregator that already lists KRC and KCC tokens side by side can show a name and logo for the KRC ones and nothing for the covenant ones.
We have been running a convention in production at kascov to close that, read from the deploy (genesis) transaction payload:
{
"name": "My Token",
"ticker": "MTK",
"image": "https://.../art.png",
"image_hash": "sha256 hex of the image bytes"
}
Committed once in the genesis payload, plain or hex JSON, under 4KB. symbol aliases ticker. It borrows KRC-721’s field shape (name, image) and adds the fungible fields KRC-20 has (ticker, decimals). The one twist: instead of requiring ipfs like KRC-721, it allows a normal URL plus an image_hash (sha256 of the bytes), so a launchpad can keep hosting on its own CDN and the art is still pinned. kascov fetches the image once, checks the hash, then serves it immutably, so art cannot be swapped after launch. ipfs images work too. Names are claims, not unique.
Live, not theoretical: KaspaRocket adopted it the same day, so tokens launched there show a verified name and art in any tool that reads the convention.
Open questions, genuinely before anyone writes a spec:
- In 0020 or beside it: KRC-20 and ERC-20 carry ticker and decimals inside the token standard, so metadata could fold into 0020, or stay a sibling convention reusable by a future covenant NFT. Either way, since covenant tokens are UTXO based with no contract storage for a name, it has to anchor to the genesis payload or the Descriptor. Which shape do the authors prefer?
- Fields: name, ticker, decimals, image, image_hash. Align exactly with KRC-721 field names, or diverge where covenant reality differs?
- Image pinning: require ipfs like KRC-721, allow url plus hash, or both?
- Encoding: plain JSON, hex JSON, or something more compact?
If there is appetite I am happy to write it up. I mostly want covenant tokens readable by any tool the way KRC tokens already are, not reinvented per app.