TZComet's New Token Viewer
Also new domain tzcomet.io 🌠
As the Tezos ecosystem converges around metadata standards for NFTs (a.k.a. Clean NFTs), TZComet now provides a “token-viewer” (already 2 iterations, first blog post …). It also got upgraded to its own fancy domain name: tzcomet.io.
The token-viewer, instead of trying to validate and report errors like the “explorer” does, attempts at nicely displaying as much as possible of a token (NFT or not-non-fungible as well ☺) filling-in for incomplete or erroneous metadata as much as possible.
The constraint of talking only to Tezos-nodes and IPFS gateways is still there so of course nothing is pre-computed, but the nice people at SmartPy take good care of their nodes; it's surprisingly fast.
The UI tries to simplify interactions to a few buttons: “random token”, “+ 1
”,
and “– 1
”, but there is a complication with the “Show Potentially NSFW”
option. Check the box or be asked every time for an extra click to show images,
videos, etc. It is all multimedia coming from anyone on the Internet; anything
you can imagine or don't want to … If you want a high-level view of a big set
of visual NFTs you can check-out
here-or-there.glitch.me by
Mario Klingemann (quasimondo.com).
SVGs can also execute arbitrary Javascript code on the page; including phoning-home to track you, or trying to exploit vulnerabilities in your browser.
Here are too many examples:
- The Alchememist has been minting a few on the same contract:
KT1W4wh1…/0
,KT1W4wh1…/1
,KT1W4wh1…/2
…KT1W4wh1…/15
; they are all images on IPFS, the formats are not provided, in that case TZComet guesses them by downloading the few first bytes of the binary blob and doing some magic-number matching. - The website Hic Et Nunc has allowed people to mint thousands of NFTs with a lot freedom in multimedia-formats. It is also all on IPFS but, at least in version 2 of the contract, MIME/content-types are provided in the metadata.
KT1RJ6Pb…/3000
: a video.KT1RJ6Pb…/3001
: an animated GIF.KT1RJ6Pb…/7577
: the “Jumpy Dot” is an interactive-SVG game, cf. @mrdoob's tweet, It works really depending on your device/browser, my best score is 2905 with Firefox and “real” USB mouse …KT1RJ6Pb…/8280
: SVG that does an API call to better-call-dev, cf. @quasimondo's tweet.- There are of course formats that TZComet doesn't handle (yet), like glTF in
KT1RJ6Pb…/6369
orKT1RJ6Pb…/8424
, the content-typeapplication/x-directory
used atKT1RJ6Pb…/12537
. - Most links in this blog-post pass the option to show all the content by default, but there is definitely “unsafe-or-unwanted-for-some-people” content:
KT1RJ6Pb…/3974
,KT1RJ6Pb…/6255
,KT1RJ6Pb…/8385
…
- Very recently Kalamint launched. The TZIP-016 metadata of their contract is itself invalid but TZComet manages to display the tokens:
KT1EpGgj…/1
is a zoomfie of the founders (actually looks like google-meet).- @MaikeulMaikeul's collection starts at
KT1EpGgj…/2
, then there are a few TezTees cards atKT1EpGgj…/16
.
- For demo/testing I've originated an FA2.py with a few tokens:
KT1RHSiA…/0
is a very-normal fungible token without multimedia.KT1RHSiA…/1
andKT1RHSiA…/2
have something wrong about them.KT1RHSiA…/3
stores the multimedia on-chain (instead of, e.g., IPFS) — please don't do that in production — TZComet fetches the whole content from a tezos-node, guesses its format, and displays it.
This is still a 100% OCaml project using the stack described here and discussed here.
There are issues to work on (and many more to report).
After 8 years of blograstination, this is post #12 of my attempt at using the #100DaysToOffload
completely unrealistic “challenge” to remind me to write stuff once in a while … Won't lie, keeping this up is hard …