{"kind":"doc","doc":{"title":"Mint thyself","section":{"slug":"posts","name":"Posts"},"rkey":"1685948400001-mint-thyself","cid":"bafkreiarq5c6jqnfsdjhsp6dohn6htbsfnyxex7564hl26cmbqbkfwqsn4","renderKey":"bafkreiarq5c6jqnfsdjhsp6dohn6htbsfnyxex7564hl26cmbqbkfwqsn4@2023-06-28T13:00:00Z@2026-07-16T14:59:43Z@Posts|","href":"/posts/1685948400001-mint-thyself","publishedAt":"2023-06-28T13:00:00Z","updatedAt":"2026-07-16T14:59:43Z","tags":["zora","html","gpt","ipfs","blockchain","web-development","decentralization"],"description":"A Zora HTML edition that embeds its own mint interface and can be minted from itself.","readingMinutes":1,"markdown":"![](blob://bafkreibrws6qahimns3wzxm4wwmicdhayccq4wfqm73den75rrumnkp6yy)\n\nZora released HTML editions, which meant the artifact being minted could be a webpage rather than an image or video.\n\n![](blob://bafkreiev6idod7sdpuxs4j46hwgpncenan7wogst5kti2thjlt55sil4gq)\n\nNFTs were already polarizing, but the storage model was useful for this experiment. Zora called it `Mint internet`.\n\nZora stored the uploaded file on IPFS. External libraries failed, so any CSS or JavaScript had to travel inside the artifact.\n\nEach edition also came with an optional iframe for embedding its mint interface elsewhere. An HTML edition could contain that iframe and point back at itself.\n\nThe contract address does not exist until the edition is minted, so the first HTML file could not include it. I minted a simple wrapper on Goerli, updated the metadata with a second copy containing the real contract address, and the iframe resolved.\n\n`Zora, mint thyself` is an open edition that can be minted from itself. Pure Internet all the way down.","media":{"bafkreibrws6qahimns3wzxm4wwmicdhayccq4wfqm73den75rrumnkp6yy":{"mime":"image/png","width":3034,"height":1416,"dominantColor":"#fafafa","blurhash":"L6S~x5j[~qfQ%MayIUj[%MfQM{fQ","thumbCid":null},"bafkreiev6idod7sdpuxs4j46hwgpncenan7wogst5kti2thjlt55sil4gq":{"mime":"image/png","width":1202,"height":1064,"dominantColor":"#efefed","blurhash":"L9R:HF4mo}?w%gR*InRi?^XSIT9E","thumbCid":null}},"series":{},"related":[{"title":"orbz dot com","href":"/posts/1736537615834-orbz-dot-com","section":"posts","description":"orbz.fun reads Orbiter's onchain site registry and turns it into a StumbleUpon-style discovery tool.","publishedAt":"2025-01-10T11:33:00Z"},{"title":"Pure Internet: Bluesky","href":"/posts/1732585567703-pure-internet-bluesky","section":"posts","description":"Static-site hosting on Bluesky's AT Protocol using content-addressed blob storage.","publishedAt":"2024-11-25T17:46:00Z"},{"title":"Pure Internet: NFC","href":"/posts/1731984900000-pure-internet-nfc","section":"posts","description":"HTML, CSS & minimal JS combined with NFC tech to create serverless web experiences.","publishedAt":"2024-11-18T10:55:00Z"},{"title":"Pure Internet","href":"/posts/1731955749292-pure-internet","section":"posts","description":"Pure Internet is a running collection of small experiments in publishing with fewer layers.","publishedAt":"2024-11-18T10:49:00Z"},{"title":"My office as entropy","href":"/posts/1756826230035-my-office-as-entropy","section":"posts","description":"Turning my office's environmental data into verifiable randomness.","publishedAt":"2025-09-02T08:17:00Z"},{"title":"Onchain Hit Counter","href":"/posts/1712329304675-onchain-hit-counter","section":"posts","description":"A GeoCities-style hit counter that stores its count on an Ethereum testnet because a database felt excessive.","publishedAt":"2024-04-05T08:01:00Z"}],"prev":{"title":"Feels Like Summer","href":"/posts/1687071600000-feels-like-summer"},"next":{"title":"Deploy html on Replit","href":"/posts/1691436904927-deploy-html-on-replit"}}}